]> gitweb.factorcode.org Git - factor.git/blob - basis/ui/gadgets/packs/packs-tests.factor
3ca722158330f7e27dcf6bc941337a0fd8b42c13
[factor.git] / basis / ui / gadgets / packs / packs-tests.factor
1 USING: ui.gadgets.packs ui.gadgets.packs.private
2 ui.gadgets.labels ui.gadgets ui.gadgets.debug ui.render
3 ui.baseline-alignment kernel namespaces tools.test math.parser
4 sequences math.rectangles accessors math ;
5 IN: ui.gadgets.packs.tests
6
7 { t } [
8     { 0 0 } { 100 100 } <rect> clip set
9
10     <pile>
11         100 [ number>string <label> add-gadget ] each-integer
12     dup layout
13
14     visible-children [ label? ] all?
15 ] unit-test
16
17 { { { 10 30 } } } [
18     { { 10 20 } }
19     { { 100 30 } }
20     <gadget> vertical >>orientation
21     orient
22 ] unit-test
23
24 ! Test baseline alignment
25 <shelf> +baseline+ >>align
26     5 5 { 10 10 } <baseline-gadget> add-gadget
27     10 10 { 10 10 } <baseline-gadget> add-gadget
28 "g" set
29
30 { } [ "g" get prefer ] unit-test
31
32 { { 20 15 } } [ "g" get dim>> ] unit-test
33
34 { V{ { 0 5 } { 10 0 } } } [
35     "g" get
36     dup layout
37     children>> [ loc>> ] map
38 ] unit-test
39
40 ! Test mixed baseline and ordinary alignment
41 <shelf> +baseline+ >>align
42     <gadget> { 20 20 } >>dim add-gadget
43     10 10 { 10 10 } <baseline-gadget> add-gadget
44 "g" set
45
46 { { 30 20 } } [ "g" get pref-dim ] unit-test
47
48 { } [ "g" get layout ] unit-test
49
50 { V{ { 0 0 } { 20 5 } } } [
51     "g" get children>> [ loc>> ] map
52 ] unit-test
53
54 <shelf> +baseline+ >>align
55     <gadget> { 15 15 } >>dim add-gadget
56     5 5 { 10 10 } <baseline-gadget> add-gadget
57 "g" set
58
59 { { 25 15 } } [ "g" get pref-dim ] unit-test
60
61 { } [ "g" get prefer ] unit-test
62
63 { } [ "g" get layout ] unit-test
64
65 { V{ { 0 0 } { 15 5 } } } [
66     "g" get children>> [ loc>> ] map
67 ] unit-test
68
69 <shelf> +baseline+ >>align
70     <gadget> { 20 20 } >>dim add-gadget
71     30 30 { 10 50 } <baseline-gadget> add-gadget
72 "g" set
73
74 { { 30 50 } } [ "g" get pref-dim ] unit-test
75
76 { } [ "g" get prefer ] unit-test
77
78 { } [ "g" get layout ] unit-test
79
80 { V{ { 0 5 } { 20 0 } } } [
81     "g" get children>> [ loc>> ] map
82 ] unit-test
83
84 <shelf> +baseline+ >>align
85     <gadget> { 30 30 } >>dim add-gadget
86     30 4 { 30 30 } <baseline-gadget> add-gadget
87 "g" set
88
89 { { 60 43 } } [ "g" get pref-dim ] unit-test
90
91 { } [ "g" get prefer ] unit-test
92
93 { } [ "g" get layout ] unit-test
94
95 ! Baseline alignment without any text gadgets should behave like align=1/2
96 <shelf> +baseline+ >>align
97     <gadget> { 30 30 } >>dim add-gadget
98     <gadget> { 30 20 } >>dim add-gadget
99 "g" set
100
101 { { 60 30 } } [ "g" get pref-dim ] unit-test
102
103 { } [ "g" get prefer ] unit-test
104
105 { } [ "g" get layout ] unit-test
106
107 { V{ { 0 0 } { 30 5 } } }
108 [ "g" get children>> [ loc>> ] map ] unit-test
109
110 <shelf> +baseline+ >>align
111 <gadget> { 30 30 } >>dim add-gadget
112 10 10 { 10 10 } <baseline-gadget> add-gadget
113 "g" set
114
115 { } [ "g" get prefer ] unit-test
116
117 { } [ "g" get layout ] unit-test
118
119 { V{ { 0 0 } { 30 10 } } }
120 [ "g" get children>> [ loc>> ] map ] unit-test
121
122 <shelf> +baseline+ >>align
123 <shelf> <gadget> { 30 30 } >>dim add-gadget add-gadget
124 10 10 { 10 10 } <baseline-gadget> add-gadget
125 "g" set
126
127 { } [ "g" get prefer ] unit-test
128
129 { } [ "g" get layout ] unit-test
130
131 { V{ { 0 0 } { 30 10 } } }
132 [ "g" get children>> [ loc>> ] map ] unit-test
133
134 <shelf> +baseline+ >>align
135 <gadget> { 24 24 } >>dim add-gadget
136 12 9 { 15 15 } <baseline-gadget> add-gadget
137 "g" set
138
139 { { 39 24 } } [ "g" get pref-dim ] unit-test