Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(934)

Side by Side Diff: utils/tests/css/src/ExpressionTest.dart

Issue 10209016: test rename overhaul: step 2 css tests. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 #library("ExpressionTest");
6 #import("../../../css/css.dart");
7
8 class ExpressionTest {
9
10 static testMain() {
11 initCssWorld();
12
13 testClass();
14 testId();
15 testElement();
16 testNamespace();
17 testSelectorGroups();
18 testCombinator();
19 testWildcard();
20 testPseudo();
21 testAttribute();
22 testNegation();
23 }
24
25 static void testClass() {
26 Parser parser = new Parser(new SourceFile(
27 SourceFile.IN_MEMORY_FILE, ".foobar {}"));
28
29 Stylesheet stylesheet = parser.parse();
30 Expect.isNotNull(stylesheet);
31 Expect.equals(stylesheet.topLevels.length, 1);
32
33 Expect.isTrue(stylesheet.topLevels[0] is RuleSet);
34 RuleSet ruleset = stylesheet.topLevels[0];
35 Expect.equals(ruleset.selectorGroup.selectors.length, 1);
36 Expect.equals(ruleset.declarationGroup.declarations.length, 0);
37
38 List<SimpleSelectorSequence> simpleSeqs =
39 ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
40 Expect.equals(simpleSeqs.length, 1);
41 for (final selector in simpleSeqs) {
42 final simpSelector = selector.simpleSelector;
43 Expect.isTrue(simpSelector is ClassSelector);
44 Expect.isTrue(selector.isCombinatorNone());
45 Expect.equals(simpSelector.name, "foobar");
46 }
47
48 parser = new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE,
49 ".foobar .bar .no-story {}"));
50
51 stylesheet = parser.parse();
52 Expect.isNotNull(stylesheet);
53 Expect.equals(stylesheet.topLevels.length, 1);
54
55 Expect.isTrue(stylesheet.topLevels[0] is RuleSet);
56 ruleset = stylesheet.topLevels[0];
57 Expect.equals(ruleset.selectorGroup.selectors.length, 1);
58 Expect.equals(ruleset.declarationGroup.declarations.length, 0);
59
60 simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
61
62 var idx = 0;
63 for (final selector in simpleSeqs) {
64 final simpSelector = selector.simpleSelector;
65 if (idx == 0) {
66 Expect.isTrue(simpSelector is ClassSelector);
67 Expect.isTrue(selector.isCombinatorNone());
68 Expect.equals(simpSelector.name, "foobar");
69 } else if (idx == 1) {
70 Expect.isTrue(simpSelector is ClassSelector);
71 Expect.isTrue(selector.isCombinatorDescendant());
72 Expect.equals(simpSelector.name, "bar");
73 } else if (idx == 2) {
74 Expect.isTrue(simpSelector is ClassSelector);
75 Expect.isTrue(selector.isCombinatorDescendant());
76 Expect.equals(simpSelector.name, "no-story");
77 } else {
78 Expect.fail("unexpected expression");
79 }
80
81 idx++;
82 }
83
84 Expect.equals(simpleSeqs.length, idx);
85 }
86
87 static void testId() {
88 Parser parser = new Parser(new SourceFile(
89 SourceFile.IN_MEMORY_FILE, "#elemId {}"));
90
91 Stylesheet stylesheet = parser.parse();
92 Expect.isNotNull(stylesheet);
93 Expect.equals(stylesheet.topLevels.length, 1);
94
95 Expect.isTrue(stylesheet.topLevels[0] is RuleSet);
96 RuleSet ruleset = stylesheet.topLevels[0];
97 Expect.equals(ruleset.selectorGroup.selectors.length, 1);
98 Expect.equals(ruleset.declarationGroup.declarations.length, 0);
99
100 List<SimpleSelectorSequence> simpleSeqs =
101 ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
102
103 for (final selector in simpleSeqs) {
104 final simpSelector = selector.simpleSelector;
105 Expect.isTrue(simpSelector is IdSelector);
106 Expect.isTrue(selector.isCombinatorNone());
107 Expect.equals(simpSelector.name, "elemId");
108 }
109 }
110
111 static void testElement() {
112 Parser parser = new Parser(new SourceFile(
113 SourceFile.IN_MEMORY_FILE, "div {}"));
114 Stylesheet stylesheet = parser.parse();
115 Expect.isNotNull(stylesheet);
116 Expect.equals(stylesheet.topLevels.length, 1);
117
118 Expect.isTrue(stylesheet.topLevels[0] is RuleSet);
119 RuleSet ruleset = stylesheet.topLevels[0];
120 Expect.equals(ruleset.selectorGroup.selectors.length, 1);
121 Expect.equals(ruleset.declarationGroup.declarations.length, 0);
122
123 List<SimpleSelectorSequence> simpleSeqs =
124 ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
125
126 for (final selector in simpleSeqs) {
127 final simpSelector = selector.simpleSelector;
128 Expect.isTrue(simpSelector is ElementSelector);
129 Expect.isTrue(selector.isCombinatorNone());
130 Expect.equals(simpSelector.name, "div");
131 }
132
133 parser = new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE,
134 "div div span {}"));
135 stylesheet = parser.parse();
136 Expect.isNotNull(stylesheet);
137 Expect.equals(stylesheet.topLevels.length, 1);
138
139 Expect.isTrue(stylesheet.topLevels[0] is RuleSet);
140 ruleset = stylesheet.topLevels[0];
141 Expect.equals(ruleset.selectorGroup.selectors.length, 1);
142 Expect.equals(ruleset.declarationGroup.declarations.length, 0);
143
144 simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
145
146 var idx = 0;
147 for (final selector in simpleSeqs) {
148 final simpSelector = selector.simpleSelector;
149 if (idx == 0) {
150 Expect.isTrue(simpSelector is ElementSelector);
151 Expect.isTrue(selector.isCombinatorNone());
152 Expect.equals(simpSelector.name, "div");
153 } else if (idx == 1) {
154 Expect.isTrue(simpSelector is ElementSelector);
155 Expect.isTrue(selector.isCombinatorDescendant());
156 Expect.equals(simpSelector.name, "div");
157 } else if (idx == 2) {
158 Expect.isTrue(simpSelector is ElementSelector);
159 Expect.isTrue(selector.isCombinatorDescendant());
160 Expect.equals(simpSelector.name, "span");
161 } else {
162 Expect.fail("unexpected expression");
163 }
164
165 idx++;
166 }
167 Expect.equals(simpleSeqs.length, idx);
168 }
169
170 static void testNamespace() {
171 Parser parser = new Parser(new SourceFile(
172 SourceFile.IN_MEMORY_FILE, "ns1|div {}"));
173 Stylesheet stylesheet = parser.parse();
174 Expect.isNotNull(stylesheet);
175 Expect.equals(stylesheet.topLevels.length, 1);
176
177 Expect.isTrue(stylesheet.topLevels[0] is RuleSet);
178 RuleSet ruleset = stylesheet.topLevels[0];
179 Expect.equals(ruleset.selectorGroup.selectors.length, 1);
180 Expect.equals(ruleset.declarationGroup.declarations.length, 0);
181
182 List<SimpleSelectorSequence> simpleSeqs =
183 ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
184
185 for (final selector in simpleSeqs) {
186 final simpSelector = selector.simpleSelector;
187 Expect.isTrue(simpSelector is NamespaceSelector);
188 Expect.isTrue(selector.isCombinatorNone());
189 Expect.isFalse(simpSelector.isNamespaceWildcard());
190 Expect.equals(simpSelector.namespace, "ns1");
191 ElementSelector elementSelector = simpSelector.nameAsSimpleSelector;
192 Expect.isTrue(elementSelector is ElementSelector);
193 Expect.isFalse(elementSelector.isWildcard());
194 Expect.equals(elementSelector.name, "div");
195 }
196
197 parser = new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE,
198 "ns1|div div ns2|span .foobar {}"));
199 stylesheet = parser.parse();
200 Expect.isNotNull(stylesheet);
201
202 Expect.equals(stylesheet.topLevels.length, 1);
203
204 Expect.isTrue(stylesheet.topLevels[0] is RuleSet);
205 ruleset = stylesheet.topLevels[0];
206 Expect.equals(ruleset.selectorGroup.selectors.length, 1);
207 Expect.equals(ruleset.declarationGroup.declarations.length, 0);
208
209 simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
210
211 var idx = 0;
212 for (final selector in simpleSeqs) {
213 final simpSelector = selector.simpleSelector;
214 if (idx == 0) {
215 Expect.isTrue(simpSelector is NamespaceSelector);
216 Expect.isTrue(selector.isCombinatorNone());
217 Expect.equals(simpSelector.namespace, "ns1");
218 ElementSelector elementSelector = simpSelector.nameAsSimpleSelector;
219 Expect.isTrue(elementSelector is ElementSelector);
220 Expect.isFalse(elementSelector.isWildcard());
221 Expect.equals(elementSelector.name, "div");
222 } else if (idx == 1) {
223 Expect.isTrue(simpSelector is ElementSelector);
224 Expect.isTrue(selector.isCombinatorDescendant());
225 Expect.equals(simpSelector.name, "div");
226 } else if (idx == 2) {
227 Expect.isTrue(simpSelector is NamespaceSelector);
228 Expect.isTrue(selector.isCombinatorDescendant());
229 Expect.equals(simpSelector.namespace, "ns2");
230 ElementSelector elementSelector = simpSelector.nameAsSimpleSelector;
231 Expect.isTrue(elementSelector is ElementSelector);
232 Expect.isFalse(elementSelector.isWildcard());
233 Expect.equals(elementSelector.name, "span");
234 } else if (idx == 3) {
235 Expect.isTrue(simpSelector is ClassSelector);
236 Expect.isTrue(selector.isCombinatorDescendant());
237 Expect.equals(simpSelector.name, "foobar");
238 } else {
239 Expect.fail("unexpected expression");
240 }
241
242 idx++;
243 }
244
245 Expect.equals(simpleSeqs.length, idx);
246 }
247
248 static void testSelectorGroups() {
249 Parser parser = new Parser(new SourceFile(
250 SourceFile.IN_MEMORY_FILE,
251 "div, .foobar ,#elemId, .xyzzy .test, ns1|div div #elemId .foobar {}"));
252 Stylesheet stylesheet = parser.parse();
253 Expect.isNotNull(stylesheet);
254
255 Expect.equals(stylesheet.topLevels.length, 1);
256
257 Expect.isTrue(stylesheet.topLevels[0] is RuleSet);
258 RuleSet ruleset = stylesheet.topLevels[0];
259 Expect.equals(ruleset.selectorGroup.selectors.length, 5);
260 Expect.equals(ruleset.declarationGroup.declarations.length, 0);
261
262 var groupIdx = 0;
263 for (final selectorGroup in ruleset.selectorGroup.selectors) {
264 var idx = 0;
265 for (final selector in selectorGroup.simpleSelectorSequences) {
266 final simpSelector = selector.simpleSelector;
267 switch (groupIdx) {
268 case 0: // First selector group.
269 Expect.isTrue(simpSelector is ElementSelector);
270 Expect.isTrue(selector.isCombinatorNone());
271 Expect.equals(simpSelector.name, "div");
272 break;
273 case 1: // Second selector group.
274 Expect.isTrue(simpSelector is ClassSelector);
275 Expect.isTrue(selector.isCombinatorNone());
276 Expect.equals(simpSelector.name, "foobar");
277 break;
278 case 2: // Third selector group.
279 Expect.isTrue(simpSelector is IdSelector);
280 Expect.isTrue(selector.isCombinatorNone());
281 Expect.equals(simpSelector.name, "elemId");
282 break;
283 case 3: // Fourth selector group.
284 Expect.equals(selectorGroup.simpleSelectorSequences.length, 2);
285 if (idx == 0) {
286 Expect.isTrue(simpSelector is ClassSelector);
287 Expect.isTrue(selector.isCombinatorNone());
288 Expect.equals(simpSelector.name, "xyzzy");
289 } else if (idx == 1) {
290 Expect.isTrue(simpSelector is ClassSelector);
291 Expect.isTrue(selector.isCombinatorDescendant());
292 Expect.equals(simpSelector.name, "test");
293 } else {
294 Expect.fail("unexpected expression");
295 }
296 break;
297 case 4: // Fifth selector group.
298 Expect.equals(selectorGroup.simpleSelectorSequences.length, 4);
299 if (idx == 0) {
300 Expect.isTrue(simpSelector is NamespaceSelector);
301 Expect.isTrue(selector.isCombinatorNone());
302 Expect.equals(simpSelector.namespace, "ns1");
303 ElementSelector elementSelector = simpSelector.nameAsSimpleSelecto r;
304 Expect.isTrue(elementSelector is ElementSelector);
305 Expect.isFalse(elementSelector.isWildcard());
306 Expect.equals(elementSelector.name, "div");
307 } else if (idx == 1) {
308 Expect.isTrue(simpSelector is ElementSelector);
309 Expect.isTrue(selector.isCombinatorDescendant());
310 Expect.equals(simpSelector.name, "div");
311 } else if (idx == 2) {
312 Expect.isTrue(simpSelector is IdSelector);
313 Expect.isTrue(selector.isCombinatorDescendant());
314 Expect.equals(simpSelector.name, "elemId");
315 } else if (idx == 3) {
316 Expect.isTrue(simpSelector is ClassSelector);
317 Expect.isTrue(selector.isCombinatorDescendant());
318 Expect.equals(simpSelector.name, "foobar");
319 } else {
320 Expect.fail("unexpected expression");
321 }
322 break;
323 }
324 idx++;
325 }
326 groupIdx++;
327 }
328 }
329
330 static void testCombinator() {
331 Parser parser = new Parser(new SourceFile(
332 SourceFile.IN_MEMORY_FILE,
333 ".foobar > .bar + .no-story ~ myNs|div #elemId {}"));
334
335 Stylesheet stylesheet = parser.parse();
336 Expect.isNotNull(stylesheet);
337 Expect.equals(stylesheet.topLevels.length, 1);
338
339 Expect.isTrue(stylesheet.topLevels[0] is RuleSet);
340 RuleSet ruleset = stylesheet.topLevels[0];
341 Expect.equals(ruleset.selectorGroup.selectors.length, 1);
342 Expect.equals(ruleset.declarationGroup.declarations.length, 0);
343
344 List<SimpleSelectorSequence> simpleSeqs =
345 ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
346
347 Expect.equals(simpleSeqs.length, 5);
348 var idx = 0;
349 for (final selector in simpleSeqs) {
350 final simpSelector = selector.simpleSelector;
351 if (idx == 0) {
352 Expect.isTrue(simpSelector is ClassSelector);
353 Expect.isTrue(selector.isCombinatorNone());
354 Expect.equals(simpSelector.name, "foobar");
355 } else if (idx == 1) {
356 Expect.isTrue(simpSelector is ClassSelector);
357 Expect.isTrue(selector.isCombinatorGreater());
358 Expect.equals(simpSelector.name, "bar");
359 } else if (idx == 2) {
360 Expect.isTrue(simpSelector is ClassSelector);
361 Expect.isTrue(selector.isCombinatorPlus());
362 Expect.equals(simpSelector.name, "no-story");
363 } else if (idx == 3) {
364 Expect.isTrue(simpSelector is NamespaceSelector);
365 Expect.isTrue(selector.isCombinatorTilde());
366 Expect.equals(simpSelector.namespace, "myNs");
367 ElementSelector elementSelector = simpSelector.nameAsSimpleSelector;
368 Expect.isTrue(elementSelector is ElementSelector);
369 Expect.isFalse(elementSelector.isWildcard());
370 Expect.equals(elementSelector.name, "div");
371 } else if (idx == 4) {
372 Expect.isTrue(simpSelector is IdSelector);
373 Expect.isTrue(selector.isCombinatorDescendant());
374 Expect.equals(simpSelector.name, "elemId");
375 } else {
376 Expect.fail("unexpected expression");
377 }
378
379 idx++;
380 }
381 }
382
383 static void testWildcard() {
384 Parser parser = new Parser(new SourceFile(
385 SourceFile.IN_MEMORY_FILE, "* {}"));
386
387 Stylesheet stylesheet = parser.parse();
388 Expect.isNotNull(stylesheet);
389 Expect.equals(stylesheet.topLevels.length, 1);
390
391 Expect.isTrue(stylesheet.topLevels[0] is RuleSet);
392 RuleSet ruleset = stylesheet.topLevels[0];
393 Expect.equals(ruleset.selectorGroup.selectors.length, 1);
394 Expect.equals(ruleset.declarationGroup.declarations.length, 0);
395
396 List<SimpleSelectorSequence> simpleSeqs =
397 ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
398
399 for (final selector in simpleSeqs) {
400 final simpSelector = selector.simpleSelector;
401 Expect.isTrue(simpSelector is ElementSelector);
402 Expect.isTrue(selector.isCombinatorNone());
403 Expect.isTrue(simpSelector.isWildcard());
404 Expect.equals(simpSelector.name, "*");
405 }
406
407 parser = new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE,
408 "*.foobar {}"));
409
410 stylesheet = parser.parse();
411 Expect.isNotNull(stylesheet);
412 Expect.equals(stylesheet.topLevels.length, 1);
413
414 Expect.isTrue(stylesheet.topLevels[0] is RuleSet);
415 ruleset = stylesheet.topLevels[0];
416 Expect.equals(ruleset.selectorGroup.selectors.length, 1);
417 Expect.equals(ruleset.declarationGroup.declarations.length, 0);
418
419 simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
420
421 Expect.equals(simpleSeqs.length, 2);
422 var idx = 0;
423 for (final selector in simpleSeqs) {
424 final simpSelector = selector.simpleSelector;
425 if (idx == 0) {
426 Expect.isTrue(simpSelector is ElementSelector);
427 Expect.isTrue(selector.isCombinatorNone());
428 Expect.isTrue(simpSelector.isWildcard());
429 Expect.equals(simpSelector.name, "*");
430 } else if (idx == 1) {
431 Expect.isTrue(simpSelector is ClassSelector);
432 Expect.isTrue(selector.isCombinatorNone());
433 Expect.equals(simpSelector.name, "foobar");
434 } else {
435 Expect.fail("unexpected expression");
436 }
437
438 idx++;
439 }
440
441 parser = new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE,
442 "myNs|*.foobar {}"));
443
444 stylesheet = parser.parse();
445 Expect.isNotNull(stylesheet);
446 Expect.equals(stylesheet.topLevels.length, 1);
447
448 Expect.isTrue(stylesheet.topLevels[0] is RuleSet);
449 ruleset = stylesheet.topLevels[0];
450 Expect.equals(ruleset.selectorGroup.selectors.length, 1);
451 Expect.equals(ruleset.declarationGroup.declarations.length, 0);
452
453 simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
454
455 Expect.equals(simpleSeqs.length, 2);
456 idx = 0;
457 for (final selector in simpleSeqs) {
458 final simpSelector = selector.simpleSelector;
459 if (idx == 0) {
460 Expect.isTrue(simpSelector is NamespaceSelector);
461 Expect.isTrue(selector.isCombinatorNone());
462 Expect.isFalse(simpSelector.isNamespaceWildcard());
463 ElementSelector elementSelector = simpSelector.nameAsSimpleSelector;
464 Expect.equals("myNs", simpSelector.namespace);
465 Expect.isTrue(elementSelector.isWildcard());
466 Expect.equals("*", elementSelector.name);
467 } else if (idx == 1) {
468 Expect.isTrue(simpSelector is ClassSelector);
469 Expect.isTrue(selector.isCombinatorNone());
470 Expect.equals("foobar", simpSelector.name);
471 } else {
472 Expect.fail("unexpected expression");
473 }
474
475 idx++;
476 }
477
478 parser = new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE,
479 "*|*.foobar {}"));
480
481 stylesheet = parser.parse();
482 Expect.isNotNull(stylesheet);
483
484 Expect.isTrue(stylesheet.topLevels[0] is RuleSet);
485 ruleset = stylesheet.topLevels[0];
486 Expect.equals(ruleset.selectorGroup.selectors.length, 1);
487 Expect.equals(ruleset.declarationGroup.declarations.length, 0);
488
489 simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
490
491 Expect.equals(simpleSeqs.length, 2);
492 idx = 0;
493 for (final selector in simpleSeqs) {
494 final simpSelector = selector.simpleSelector;
495 if (idx == 0) {
496 Expect.isTrue(simpSelector is NamespaceSelector);
497 Expect.isTrue(selector.isCombinatorNone());
498 Expect.isTrue(simpSelector.isNamespaceWildcard());
499 Expect.equals("*", simpSelector.namespace);
500 ElementSelector elementSelector = simpSelector.nameAsSimpleSelector;
501 Expect.isTrue(elementSelector.isWildcard());
502 Expect.equals("*", elementSelector.name);
503 } else if (idx == 1) {
504 Expect.isTrue(simpSelector is ClassSelector);
505 Expect.isTrue(selector.isCombinatorNone());
506 Expect.equals("foobar", simpSelector.name);
507 } else {
508 Expect.fail("unexpected expression");
509 }
510
511 idx++;
512 }
513
514 }
515
516 static void testPseudo() {
517 // TODO(terry): Implement
518 }
519
520 static void testAttribute() {
521 // TODO(terry): Implement
522 }
523
524 static void testNegation() {
525 // TODO(terry): Implement
526 }
527
528 }
529
530
531 main() {
532 ExpressionTest.testMain();
533 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698