aboutsummaryrefslogtreecommitdiffstats
path: root/test/_props.scss
diff options
context:
space:
mode:
Diffstat (limited to 'test/_props.scss')
-rw-r--r--test/_props.scss489
1 files changed, 231 insertions, 258 deletions
diff --git a/test/_props.scss b/test/_props.scss
index 1d64080..f8c85ee 100644
--- a/test/_props.scss
+++ b/test/_props.scss
@@ -6,300 +6,273 @@
6@use '../src/props'; 6@use '../src/props';
7 7
8@include describe('Property trees') { 8@include describe('Property trees') {
9 @include it('Validate names') { 9 @include it('Save / Delete') {
10 $map-valid: ( 10 $map: (
11 --background: #fff, 11 --background: #fff,
12 --text: #000, 12 --text: #000,
13 --buttons: ( 13 --buttons: (
14 --primary: ( 14 --primary: (
15 --background: #f00, 15 --background: #f00,
16 --text: #fff 16 --text: #fff
17 ) 17 )
18 ) 18 )
19 ); 19 );
20 20
21 $map-invalid: ( 21 @include assert-equal(props.store($map), null, 'Save default tree');
22 --background: #fff, 22 @include assert-equal(props.clear(), null, 'Delete default tree');
23 --text: #000, 23 }
24 --buttons: (
25 --primary: (
26 background: #f00,
27 text: #fff
28 )
29 )
30 );
31 24
32 @include assert-equal(props.validate($map-valid), true, 'Check valid map'); 25 @include it('Read') {
33 @include assert-equal(props.validate($map-invalid), false, 'Check invalid map'); 26 $map1: (
34 } 27 --background: #fff,
28 --text: #000,
29 --buttons: (
30 --primary: (
31 --background: #f00,
32 --text: #fff
33 )
34 )
35 );
35 36
36 @include it('Save / Delete') { 37 $map2: (
37 $map: ( 38 --background: #222,
38 --background: #fff, 39 --text: #fff,
39 --text: #000, 40 --buttons: (
40 --buttons: ( 41 --primary: (
41 --primary: ( 42 --background: #f00,
42 --background: #f00, 43 --text: #fff
43 --text: #fff 44 )
44 ) 45 )
45 ) 46 );
46 );
47 47
48 @include assert-equal(props.store($map), null, 'Save default tree'); 48 $map3: (
49 @include assert-equal(props.clear(), null, 'Delete default tree'); 49 --background: #666,
50 } 50 --text: #222,
51 --buttons: (
52 --primary: (
53 --background: #0f0,
54 --text: #000
55 )
56 )
57 );
51 58
52 @include it('Read') { 59 @include assert-equal(props.store($map1), null, 'Save default tree');
53 $map1: ( 60 @include assert-equal(props.store($map2, 'test'), null, 'Save "test" tree');
54 --background: #fff,
55 --text: #000,
56 --buttons: (
57 --primary: (
58 --background: #f00,
59 --text: #fff
60 )
61 )
62 );
63 61
64 $map2: ( 62 @include props.namespace('ns') {
65 --background: #222, 63 @include assert-equal(props.store($map3, 'namespaced'), null, 'Save "namespaced" tree');
66 --text: #fff, 64 }
67 --buttons: (
68 --primary: (
69 --background: #f00,
70 --text: #fff
71 )
72 )
73 );
74 65
75 $map3: ( 66 @include assert-equal(props.get-static(--background), map.get($map1, --background), 'Get --background in default');
76 --background: #666, 67 @include assert-equal(props.get-static(--buttons --primary --background), map.get($map1, --buttons, --primary, --background), 'Get --buttons --primary --background in default');
77 --text: #222, 68 @include assert-equal(props.get-static(--box, $default: false), false, 'Get nonexistent in default');
78 --buttons: (
79 --primary: (
80 --background: #0f0,
81 --text: #000
82 )
83 )
84 );
85 69
86 @include assert-equal(props.store($map1), null, 'Save default tree'); 70 @include assert-equal(props.get-static(--background, 'test'), map.get($map2, --background), 'Get --background in "test"');
87 @include assert-equal(props.store($map2, 'test'), null, 'Save "test" tree'); 71 @include assert-equal(props.get-static(--buttons --primary --background, 'test'), map.get($map2, --buttons, --primary, --background), 'Get --buttons --primary --background in "test"');
72 @include assert-equal(props.get-static(--box, 'test', $default: false), false, 'Get nonexistent in "test"');
73
74 @include assert-equal(props.get-static(--background, 'namespaced', $default: false), false, 'Get --background in "namespaced"');
75 @include assert-equal(props.get-static(--ns --background, 'namespaced'), map.get($map3, --background), 'Get --ns --background in "namespaced"');
76 @include props.namespace('ns') {
77 @include assert-equal(props.get-static(--background, 'namespaced'), map.get($map3, --background), 'Get namespaced --background in "namespaced"');
78 @include assert-equal(props.get-static(--buttons --primary --background, 'namespaced'), map.get($map3, --buttons, --primary, --background), 'Get namespaced --buttons --primary --background in "namespaced"');
79 @include assert-equal(props.get-static(--box, 'namespaced', $default: false), false, 'Get namespaced nonexistent in "namespaced"');
80 }
88 81
89 @include props.namespace('ns') { 82 @include assert-equal(props.clear(), null, 'Delete default tree');
90 @include assert-equal(props.store($map3, 'namespaced'), null, 'Save "namespaced" tree'); 83 @include assert-equal(props.clear('test'), null, 'Delete "test" tree');
91 } 84 @include assert-equal(props.clear('namespaced'), null, 'Delete "namespaced" tree');
85 }
92 86
93 @include assert-equal(props.get-static(--background), map-get($map1, --background), 'Get --background in default'); 87 @include it('Overwrite') {
94 @include assert-equal(props.get-static(--buttons --primary --background), map-get($map1, --buttons, --primary, --background), 'Get --buttons --primary --background in default'); 88 $map1: (
95 @include assert-equal(props.get-static(--box, $default: false), false, 'Get nonexistent in default'); 89 --background: #fff,
90 --buttons: (
91 --primary: (
92 --background: #f00,
93 --text: #fff
94 )
95 )
96 );
96 97
97 @include assert-equal(props.get-static(--background, 'test'), map-get($map2, --background), 'Get --background in "test"'); 98 $map2: (
98 @include assert-equal(props.get-static(--buttons --primary --background, 'test'), map-get($map2, --buttons, --primary, --background), 'Get --buttons --primary --background in "test"'); 99 --background: #eee,
99 @include assert-equal(props.get-static(--box, 'test', $default: false), false, 'Get nonexistent in "test"'); 100 --text: #000,
100 101 --buttons: (
101 @include assert-equal(props.get-static(--background, 'namespaced', $default: false), false, 'Get --background in "namespaced"'); 102 --primary: (
102 @include assert-equal(props.get-static(--ns --background, 'namespaced'), map-get($map3, --background), 'Get --ns --background in "namespaced"'); 103 --background: #00f
103 @include props.namespace('ns') { 104 )
104 @include assert-equal(props.get-static(--background, 'namespaced'), map-get($map3, --background), 'Get namespaced --background in "namespaced"'); 105 )
105 @include assert-equal(props.get-static(--buttons --primary --background, 'namespaced'), map-get($map3, --buttons, --primary, --background), 'Get namespaced --buttons --primary --background in "namespaced"'); 106 );
106 @include assert-equal(props.get-static(--box, 'namespaced', $default: false), false, 'Get namespaced nonexistent in "namespaced"');
107 }
108 107
109 @include assert-equal(props.clear(), null, 'Delete default tree'); 108 @include assert-equal(props.store($map1), null, 'Save default tree');
110 @include assert-equal(props.clear('test'), null, 'Delete "test" tree'); 109 @include assert-equal(props.store($map2, $merge: true), null, 'Overwrite default tree');
111 @include assert-equal(props.clear('namespaced'), null, 'Delete "namespaced" tree');
112 }
113 110
114 @include it('Overwrite') { 111 @include assert-equal(props.get-static(), map.deep-merge($map1, $map2), 'After update, get whole map');
115 $map1: ( 112 @include assert-equal(props.get-static(--background), map.get($map2, --background), 'After update, get --background');
116 --background: #fff, 113 @include assert-equal(props.get-static(--text), map.get($map2, --text), 'After update, get --text');
117 --buttons: ( 114 @include assert-equal(props.get-static(--buttons --primary --text), map.get($map1, --buttons, --primary, --text), 'After update, get --buttons --primary --text');
118 --primary: (
119 --background: #f00,
120 --text: #fff
121 )
122 )
123 );
124 115
125 $map2: ( 116 @include assert-equal(props.clear(), null, 'Delete default tree');
126 --background: #eee, 117 }
127 --text: #000,
128 --buttons: (
129 --primary: (
130 --background: #00f
131 )
132 )
133 );
134 118
135 @include assert-equal(props.store($map1), null, 'Save default tree'); 119 @include it('Native assignment') {
136 @include assert-equal(props.store($map2, $merge: true), null, 'Overwrite default tree'); 120 $map: (
121 --background: #fff,
122 --text: #000,
123 --buttons: (
124 --primary: (
125 --background: #f00,
126 --text: #fff
127 ),
128 --default: (
129 --background: #ddd,
130 --text: #000
131 )
132 )
133 );
137 134
138 @include assert-equal(props.get-static(), map.deep-merge($map1, $map2), 'After update, get whole map'); 135 @include assert('Simple') {
139 @include assert-equal(props.get-static(--background), map-get($map2, --background), 'After update, get --background'); 136 @include props.store($map);
140 @include assert-equal(props.get-static(--text), map-get($map2, --text), 'After update, get --text');
141 @include assert-equal(props.get-static(--buttons --primary --text), map-get($map1, --buttons, --primary, --text), 'After update, get --buttons --primary --text');
142 137
143 @include assert-equal(props.clear(), null, 'Delete default tree'); 138 @include output {
144 } 139 @include props.assign;
140 }
145 141
146 @include it('Native assignment') { 142 @include expect {
147 $map: ( 143 --background: #{map.get($map, --background)};
148 --background: #fff, 144 --text: #{map.get($map, --text)};
149 --text: #000, 145 --buttons--primary--background: #{map.get($map, --buttons, --primary, --background)};
150 --buttons: ( 146 --buttons--primary--text: #{map.get($map, --buttons, --primary, --text)};
151 --primary: ( 147 --buttons--default--background: #{map.get($map, --buttons, --default, --background)};
152 --background: #f00, 148 --buttons--default--text: #{map.get($map, --buttons, --default, --text)};
153 --text: #fff 149 }
154 ),
155 --default: (
156 --background: #ddd,
157 --text: #000
158 )
159 )
160 );
161 150
162 @include assert('Simple') { 151 @include props.clear;
163 @include props.store($map); 152 }
164 153
165 @include output { 154 @include assert('Filtered') {
166 @include props.assign; 155 @include props.store($map);
167 }
168 156
169 @include expect { 157 @include output {
170 --background: #{map-get($map, --background)}; 158 @include props.assign($skip: --buttons);
171 --text: #{map-get($map, --text)}; 159 }
172 --buttons--primary--background: #{map-get($map, --buttons, --primary, --background)};
173 --buttons--primary--text: #{map-get($map, --buttons, --primary, --text)};
174 --buttons--default--background: #{map-get($map, --buttons, --default, --background)};
175 --buttons--default--text: #{map-get($map, --buttons, --default, --text)};
176 }
177 160
178 @include props.clear; 161 @include expect {
179 } 162 --background: #{map.get($map, --background)};
163 --text: #{map.get($map, --text)};
164 }
180 165
181 @include assert('Filtered') { 166 @include props.clear;
182 @include props.store($map); 167 }
183 168
184 @include output { 169 @include assert('Namespaced') {
185 @include props.assign($skip: --buttons); 170 @include props.namespace('ns') {
186 } 171 @include props.store($map);
172 }
187 173
188 @include expect { 174 @include output {
189 --background: #{map-get($map, --background)}; 175 @include props.assign;
190 --text: #{map-get($map, --text)}; 176 }
191 }
192 177
193 @include props.clear; 178 @include expect {
194 } 179 --ns--background: #{map.get($map, --background)};
180 --ns--text: #{map.get($map, --text)};
181 --ns--buttons--primary--background: #{map.get($map, --buttons, --primary, --background)};
182 --ns--buttons--primary--text: #{map.get($map, --buttons, --primary, --text)};
183 --ns--buttons--default--background: #{map.get($map, --buttons, --default, --background)};
184 --ns--buttons--default--text: #{map.get($map, --buttons, --default, --text)};
185 }
195 186
196 @include assert('Namespaced') { 187 @include props.clear;
197 @include props.namespace('ns') { 188 }
198 @include props.store($map); 189 }
199 }
200 190
201 @include output { 191 @include it('Native get') {
202 @include props.assign; 192 $map: (
203 } 193 --background: #fff,
194 --text: #000,
195 --buttons: (
196 --primary: (
197 --background: #f00,
198 --text: #fff
199 ),
200 --default: (
201 --background: #ddd,
202 --text: #000
203 )
204 )
205 );
204 206
205 @include expect { 207 @include assert-equal(props.store($map), null, 'Save default tree');
206 --ns--background: #{map-get($map, --background)};
207 --ns--text: #{map-get($map, --text)};
208 --ns--buttons--primary--background: #{map-get($map, --buttons, --primary, --background)};
209 --ns--buttons--primary--text: #{map-get($map, --buttons, --primary, --text)};
210 --ns--buttons--default--background: #{map-get($map, --buttons, --default, --background)};
211 --ns--buttons--default--text: #{map-get($map, --buttons, --default, --text)};
212 }
213 208
214 @include props.clear; 209 @include assert-equal(props.get(--background), var(--background), 'Get --background');
215 } 210 @include assert-equal(props.get(--buttons --primary --text), var(--buttons--primary--text), 'Get --buttons --primary --text');
216 } 211 @include assert-equal(props.get(--buttons --secondary --text, $default: false), var(--buttons--secondary--text, false), 'Get --buttons --secondary --text with default');
212 @include props.namespace('buttons') {
213 @include assert-equal(props.get(--primary --text), var(--buttons--primary--text), 'Get via namespace "buttons" --primary --text');
214 @include assert-equal(props.get(--secondary --text, $default: false), var(--buttons--secondary--text, false), 'Get via namespace "buttons" --secondary --text with default');
215 }
216 @include assert-equal(props.get(--buttons), (
217 --primary: (
218 --background: var(--buttons--primary--background),
219 --text: var(--buttons--primary--text)
220 ),
221 --default: (
222 --background: var(--buttons--default--background),
223 --text: var(--buttons--default--text)
224 )
225 ), 'Get --buttons recursively');
217 226
218 @include it('Native get') { 227 @include assert-equal(props.clear(), null, 'Delete default tree');
219 $map: ( 228 }
220 --background: #fff,
221 --text: #000,
222 --buttons: (
223 --primary: (
224 --background: #f00,
225 --text: #fff
226 ),
227 --default: (
228 --background: #ddd,
229 --text: #000
230 )
231 )
232 );
233 229
234 @include assert-equal(props.store($map), null, 'Save default tree'); 230 @include it('References') {
231 $map1: (
232 --background: #fff,
233 --text: #000,
234 --buttons: (
235 --primary: (
236 --background: #f00,
237 --text: #fff
238 )
239 )
240 );
235 241
236 @include assert-equal(props.get(--background), var(--background), 'Get --background'); 242 $map2: (
237 @include assert-equal(props.get(--buttons --primary --text), var(--buttons--primary--text), 'Get --buttons --primary --text'); 243 --background: #eee,
238 @include assert-equal(props.get(--buttons --secondary --text, $default: false), var(--buttons--secondary--text, false), 'Get --buttons --secondary --text with default'); 244 --buttons: (
239 @include props.namespace('buttons') { 245 --primary: (
240 @include assert-equal(props.get(--primary --text), var(--buttons--primary--text), 'Get via namespace "buttons" --primary --text'); 246 --background: props.ref($key: --background)
241 @include assert-equal(props.get(--secondary --text, $default: false), var(--buttons--secondary--text, false), 'Get via namespace "buttons" --secondary --text with default'); 247 ),
242 } 248 --default: props.ref($key: --buttons --primary)
243 @include assert-equal(props.get(--buttons), ( 249 )
244 --primary: ( 250 );
245 --background: var(--buttons--primary--background),
246 --text: var(--buttons--primary--text)
247 ),
248 --default: (
249 --background: var(--buttons--default--background),
250 --text: var(--buttons--default--text)
251 )
252 ), 'Get --buttons recursively');
253 251
254 @include assert-equal(props.clear(), null, 'Delete default tree'); 252 @include assert-equal(props.store($map1), null, 'Save default tree');
255 } 253 @include assert-equal(props.store($map2, 'second'), null, 'Save "second" tree');
256 254
257 @include it('References') { 255 @include assert-equal(props.get-static(--buttons --primary --background, 'second'), map.get($map1, --background), 'Get referenced value');
258 $map1: ( 256 @include assert-equal(props.get(--buttons --primary --background, 'second'), var(--buttons--primary--background), 'Get referenced value, native');
259 --background: #fff,
260 --text: #000,
261 --buttons: (
262 --primary: (
263 --background: #f00,
264 --text: #fff
265 )
266 )
267 );
268 257
269 $map2: ( 258 @include assert-equal(props.get-static(--buttons --default, 'second'), map.get($map1, --buttons, --primary), 'Get referenced subtree, whole');
270 --background: #eee, 259 @include assert-equal(props.get-static(--buttons --default --background, 'second'), map.get($map1, --buttons, --primary, --background), 'Get referenced subtree, inner value');
271 --buttons: ( 260 @include assert-equal(props.get(--buttons --default --background, 'second'), var(--buttons--default--background), 'Get referenced subtree, native');
272 --primary: ( 261
273 --background: props.ref($key: --background) 262 @include assert('Native assignment') {
274 ), 263 @include output {
275 --default: props.ref($key: --buttons --primary) 264 @include props.assign('second');
276 ) 265 }
277 );
278 266
279 @include assert-equal(props.store($map1), null, 'Save default tree'); 267 @include expect {
280 @include assert-equal(props.store($map2, 'second'), null, 'Save "second" tree'); 268 --background: #{map.get($map2, --background)};
269 --buttons--primary--background: #{map.get($map1, --background)};
270 --buttons--default--background: #{map.get($map1, --buttons, --primary, --background)};
271 --buttons--default--text: #{map.get($map1, --buttons, --primary, --text)};
272 }
273 }
281 274
282 @include assert-equal(props.get-static(--buttons --primary --background, 'second'), map-get($map1, --background), 'Get referenced value'); 275 @include assert-equal(props.clear(), null, 'Delete default tree');
283 @include assert-equal(props.get(--buttons --primary --background, 'second'), var(--buttons--primary--background), 'Get referenced value, native'); 276 @include assert-equal(props.clear('second'), null, 'Delete "second" tree');
284 277 }
285 @include assert-equal(props.get-static(--buttons --default, 'second'), map-get($map1, --buttons, --primary), 'Get referenced subtree, whole');
286 @include assert-equal(props.get-static(--buttons --default --background, 'second'), map-get($map1, --buttons, --primary, --background), 'Get referenced subtree, inner value');
287 @include assert-equal(props.get(--buttons --default --background, 'second'), var(--buttons--default--background), 'Get referenced subtree, native');
288
289 @include assert('Native assignment') {
290 @include output {
291 @include props.assign('second');
292 }
293
294 @include expect {
295 --background: #{map-get($map2, --background)};
296 --buttons--primary--background: #{map-get($map1, --background)};
297 --buttons--default--background: #{map-get($map1, --buttons, --primary, --background)};
298 --buttons--default--text: #{map-get($map1, --buttons, --primary, --text)};
299 }
300 }
301
302 @include assert-equal(props.clear(), null, 'Delete default tree');
303 @include assert-equal(props.clear('second'), null, 'Delete "second" tree');
304 }
305} 278}