1 module nodes.checkbox;
2
3 import fluid;
4
5 @safe:
6
7 @("Pressing the checkbox toggles its state")
8 unittest {
9
10 int changed;
11
12 auto root = checkbox(delegate {
13 changed++;
14 });
15
16 root.runInputAction!(FluidInputAction.press);
17
18 assert(changed == 1);
19 assert(root.isChecked);
20
21 root.runInputAction!(FluidInputAction.press);
22
23 assert(changed == 2);
24 assert(!root.isChecked);
25
26 }
27
28 @("Checkbox draws a checkmark when pressed")
29 unittest {
30
31 auto theme = Theme(
32 rule!Checkbox(
33 Rule.margin = 0,
34 Rule.border = 1,
35 Rule.padding = 0,
36 Rule.borderStyle = colorBorder(color("#222")),
37 ),
38 );
39 auto input = checkbox();
40 auto test = testSpace(theme, input);
41 input.size = Vector2(10, 10);
42
43 test.drawAndAssert(
44 input.drawsRectangle().ofColor("#222"),
45 input.drawsRectangle().ofColor("#222"),
46 input.drawsRectangle().ofColor("#222"),
47 input.drawsRectangle().ofColor("#222"),
48 input.drawsImage(Image.init),
49 );
50 assert(input.markImage == Image.init);
51
52 input.toggle();
53 test.draw(),
54 test.drawAndAssert(
55 input.drawsRectangle().ofColor("#222"),
56 input.drawsImage(input.markImage),
57 );
58 assert(input.markImage != Image.init);
59
60 }