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

Side by Side Diff: test/compiler_test.dart

Issue 1832993003: Fix all strong mode errors and warnings. (Closed) Base URL: https://github.com/dart-lang/csslib.git@master
Patch Set: Move type. Created 4 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
« no previous file with comments | « test/big_1_test.dart ('k') | test/declaration_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library compiler_test; 5 library compiler_test;
6 6
7 import 'dart:convert'; 7 import 'dart:convert';
8 import 'package:test/test.dart'; 8 import 'package:test/test.dart';
9 import 'package:csslib/parser.dart'; 9 import 'package:csslib/parser.dart';
10 import 'package:csslib/src/messages.dart';
10 import 'package:csslib/visitor.dart'; 11 import 'package:csslib/visitor.dart';
11 import 'testing.dart'; 12 import 'testing.dart';
12 13
13 void testClass() { 14 void testClass() {
14 var errors = []; 15 var errors = <Message>[];
15 var input = ".foobar {}"; 16 var input = ".foobar {}";
16 var stylesheet = parseCss(input, errors: errors); 17 var stylesheet = parseCss(input, errors: errors);
17 18
18 expect(stylesheet != null, true); 19 expect(stylesheet != null, true);
19 expect(errors.isEmpty, true, reason: errors.toString()); 20 expect(errors.isEmpty, true, reason: errors.toString());
20 21
21 walkTree(stylesheet); 22 walkTree(stylesheet);
22 23
23 expect(stylesheet.topLevels.length, 1); 24 expect(stylesheet.topLevels.length, 1);
24 25
25 expect(stylesheet.topLevels[0] is RuleSet, true); 26 expect(stylesheet.topLevels[0] is RuleSet, true);
26 27
27 var ruleset = stylesheet.topLevels[0]; 28 var ruleset = stylesheet.topLevels[0] as RuleSet;
28 expect(ruleset.selectorGroup.selectors.length, 1); 29 expect(ruleset.selectorGroup.selectors.length, 1);
29 expect(ruleset.declarationGroup.declarations.length, 0); 30 expect(ruleset.declarationGroup.declarations.length, 0);
30 31
31 var selectorSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences; 32 var selectorSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
32 expect(selectorSeqs.length, 1); 33 expect(selectorSeqs.length, 1);
33 final simpSelector = selectorSeqs[0].simpleSelector; 34 final simpSelector = selectorSeqs[0].simpleSelector;
34 expect(simpSelector is ClassSelector, true); 35 expect(simpSelector is ClassSelector, true);
35 expect(selectorSeqs[0].isCombinatorNone, true); 36 expect(selectorSeqs[0].isCombinatorNone, true);
36 expect(simpSelector.name, "foobar"); 37 expect(simpSelector.name, "foobar");
37 } 38 }
38 39
39 void testClass2() { 40 void testClass2() {
40 var errors = []; 41 var errors = <Message>[];
41 var input = ".foobar .bar .no-story {}"; 42 var input = ".foobar .bar .no-story {}";
42 var stylesheet = parseCss(input, errors: errors); 43 var stylesheet = parseCss(input, errors: errors);
43 44
44 expect(stylesheet != null, true); 45 expect(stylesheet != null, true);
45 expect(errors.isEmpty, true, reason: errors.toString()); 46 expect(errors.isEmpty, true, reason: errors.toString());
46 47
47 walkTree(stylesheet); 48 walkTree(stylesheet);
48 49
49 expect(stylesheet.topLevels.length, 1); 50 expect(stylesheet.topLevels.length, 1);
50 51
51 expect(stylesheet.topLevels[0] is RuleSet, true); 52 expect(stylesheet.topLevels[0] is RuleSet, true);
52 var ruleset = stylesheet.topLevels[0]; 53 var ruleset = stylesheet.topLevels[0] as RuleSet;
53 expect(ruleset.selectorGroup.selectors.length, 1); 54 expect(ruleset.selectorGroup.selectors.length, 1);
54 expect(ruleset.declarationGroup.declarations.length, 0); 55 expect(ruleset.declarationGroup.declarations.length, 0);
55 56
56 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences; 57 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
57 expect(simpleSeqs.length, 3); 58 expect(simpleSeqs.length, 3);
58 59
59 var simpSelector0 = simpleSeqs[0].simpleSelector; 60 var simpSelector0 = simpleSeqs[0].simpleSelector;
60 expect(simpSelector0 is ClassSelector, true); 61 expect(simpSelector0 is ClassSelector, true);
61 expect(simpleSeqs[0].isCombinatorNone, true); 62 expect(simpleSeqs[0].isCombinatorNone, true);
62 expect(simpSelector0.name, "foobar"); 63 expect(simpSelector0.name, "foobar");
63 64
64 var simpSelector1 = simpleSeqs[1].simpleSelector; 65 var simpSelector1 = simpleSeqs[1].simpleSelector;
65 expect(simpSelector1 is ClassSelector, true); 66 expect(simpSelector1 is ClassSelector, true);
66 expect(simpleSeqs[1].isCombinatorDescendant, true); 67 expect(simpleSeqs[1].isCombinatorDescendant, true);
67 expect(simpSelector1.name, "bar"); 68 expect(simpSelector1.name, "bar");
68 69
69 var simpSelector2 = simpleSeqs[2].simpleSelector; 70 var simpSelector2 = simpleSeqs[2].simpleSelector;
70 expect(simpSelector2 is ClassSelector, true); 71 expect(simpSelector2 is ClassSelector, true);
71 expect(simpleSeqs[2].isCombinatorDescendant, true); 72 expect(simpleSeqs[2].isCombinatorDescendant, true);
72 expect(simpSelector2.name, "no-story"); 73 expect(simpSelector2.name, "no-story");
73 } 74 }
74 75
75 void testId() { 76 void testId() {
76 var errors = []; 77 var errors = <Message>[];
77 var input = "#elemId {}"; 78 var input = "#elemId {}";
78 var stylesheet = parseCss(input, errors: errors); 79 var stylesheet = parseCss(input, errors: errors);
79 80
80 expect(stylesheet != null, true); 81 expect(stylesheet != null, true);
81 expect(errors.isEmpty, true, reason: errors.toString()); 82 expect(errors.isEmpty, true, reason: errors.toString());
82 83
83 walkTree(stylesheet); 84 walkTree(stylesheet);
84 85
85 expect(stylesheet.topLevels.length, 1); 86 expect(stylesheet.topLevels.length, 1);
86 87
87 expect(stylesheet.topLevels[0] is RuleSet, true); 88 expect(stylesheet.topLevels[0] is RuleSet, true);
88 var ruleset = stylesheet.topLevels[0]; 89 var ruleset = stylesheet.topLevels[0] as RuleSet;
89 expect(ruleset.selectorGroup.selectors.length, 1); 90 expect(ruleset.selectorGroup.selectors.length, 1);
90 expect(ruleset.declarationGroup.declarations.length, 0); 91 expect(ruleset.declarationGroup.declarations.length, 0);
91 92
92 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences; 93 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
93 94
94 expect(simpleSeqs.length, 1); 95 expect(simpleSeqs.length, 1);
95 var simpSelector = simpleSeqs[0].simpleSelector; 96 var simpSelector = simpleSeqs[0].simpleSelector;
96 expect(simpSelector is IdSelector, true); 97 expect(simpSelector is IdSelector, true);
97 expect(simpleSeqs[0].isCombinatorNone, true); 98 expect(simpleSeqs[0].isCombinatorNone, true);
98 expect(simpSelector.name, "elemId"); 99 expect(simpSelector.name, "elemId");
99 } 100 }
100 101
101 void testElement() { 102 void testElement() {
102 var errors = []; 103 var errors = <Message>[];
103 var input = "div {}"; 104 var input = "div {}";
104 var stylesheet = parseCss(input, errors: errors); 105 var stylesheet = parseCss(input, errors: errors);
105 106
106 expect(stylesheet != null, true); 107 expect(stylesheet != null, true);
107 expect(errors.isEmpty, true, reason: errors.toString()); 108 expect(errors.isEmpty, true, reason: errors.toString());
108 109
109 walkTree(stylesheet); 110 walkTree(stylesheet);
110 111
111 expect(stylesheet.topLevels.length, 1); 112 expect(stylesheet.topLevels.length, 1);
112 113
113 expect(stylesheet.topLevels[0] is RuleSet, true); 114 expect(stylesheet.topLevels[0] is RuleSet, true);
114 var ruleset = stylesheet.topLevels[0]; 115 var ruleset = stylesheet.topLevels[0] as RuleSet;
115 expect(ruleset.selectorGroup.selectors.length, 1); 116 expect(ruleset.selectorGroup.selectors.length, 1);
116 expect(ruleset.declarationGroup.declarations.length, 0); 117 expect(ruleset.declarationGroup.declarations.length, 0);
117 118
118 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences; 119 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
119 120
120 expect(simpleSeqs.length, 1); 121 expect(simpleSeqs.length, 1);
121 122
122 final simpSelector = simpleSeqs[0].simpleSelector; 123 final simpSelector = simpleSeqs[0].simpleSelector;
123 expect(simpSelector is ElementSelector, true); 124 expect(simpSelector is ElementSelector, true);
124 expect(simpleSeqs[0].isCombinatorNone, true); 125 expect(simpleSeqs[0].isCombinatorNone, true);
(...skipping 28 matching lines...) Expand all
153 expect(simpleSeqs[1].isCombinatorDescendant, true); 154 expect(simpleSeqs[1].isCombinatorDescendant, true);
154 expect(simpSelector1.name, "div"); 155 expect(simpSelector1.name, "div");
155 156
156 var simpSelector2 = simpleSeqs[2].simpleSelector; 157 var simpSelector2 = simpleSeqs[2].simpleSelector;
157 expect(simpSelector2 is ElementSelector, true); 158 expect(simpSelector2 is ElementSelector, true);
158 expect(simpleSeqs[2].isCombinatorDescendant, true); 159 expect(simpleSeqs[2].isCombinatorDescendant, true);
159 expect(simpSelector2.name, "span"); 160 expect(simpSelector2.name, "span");
160 } 161 }
161 162
162 void testNamespace() { 163 void testNamespace() {
163 var errors = []; 164 var errors = <Message>[];
164 var input = "ns1|div {}"; 165 var input = "ns1|div {}";
165 var stylesheet = parseCss(input, errors: errors); 166 var stylesheet = parseCss(input, errors: errors);
166 167
167 expect(stylesheet != null, true); 168 expect(stylesheet != null, true);
168 expect(errors.isEmpty, true, reason: errors.toString()); 169 expect(errors.isEmpty, true, reason: errors.toString());
169 170
170 walkTree(stylesheet); 171 walkTree(stylesheet);
171 172
172 expect(stylesheet.topLevels.length, 1); 173 expect(stylesheet.topLevels.length, 1);
173 174
174 expect(stylesheet.topLevels[0] is RuleSet, true); 175 expect(stylesheet.topLevels[0] is RuleSet, true);
175 var ruleset = stylesheet.topLevels[0]; 176 var ruleset = stylesheet.topLevels[0] as RuleSet;
176 expect(ruleset.selectorGroup.selectors.length, 1); 177 expect(ruleset.selectorGroup.selectors.length, 1);
177 expect(ruleset.declarationGroup.declarations.length, 0); 178 expect(ruleset.declarationGroup.declarations.length, 0);
178 179
179 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences; 180 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
180 181
181 expect(simpleSeqs.length, 1); 182 expect(simpleSeqs.length, 1);
182 var simpSelector = simpleSeqs[0].simpleSelector; 183 expect(simpleSeqs[0].simpleSelector is NamespaceSelector, true);
183 expect(simpSelector is NamespaceSelector, true); 184 var simpSelector = simpleSeqs[0].simpleSelector as NamespaceSelector;
184 expect(simpleSeqs[0].isCombinatorNone, true); 185 expect(simpleSeqs[0].isCombinatorNone, true);
185 expect(simpSelector.isNamespaceWildcard, false); 186 expect(simpSelector.isNamespaceWildcard, false);
186 expect(simpSelector.namespace, "ns1"); 187 expect(simpSelector.namespace, "ns1");
187 var elementSelector = simpSelector.nameAsSimpleSelector; 188 var elementSelector = simpSelector.nameAsSimpleSelector;
188 expect(elementSelector is ElementSelector, true); 189 expect(elementSelector is ElementSelector, true);
189 expect(elementSelector.isWildcard, false); 190 expect(elementSelector.isWildcard, false);
190 expect(elementSelector.name, "div"); 191 expect(elementSelector.name, "div");
191 } 192 }
192 193
193 void testNamespace2() { 194 void testNamespace2() {
194 var errors = []; 195 var errors = <Message>[];
195 var input = "ns1|div div ns2|span .foobar {}"; 196 var input = "ns1|div div ns2|span .foobar {}";
196 var stylesheet = parseCss(input, errors: errors); 197 var stylesheet = parseCss(input, errors: errors);
197 198
198 expect(stylesheet != null, true); 199 expect(stylesheet != null, true);
199 expect(errors.isEmpty, true, reason: errors.toString()); 200 expect(errors.isEmpty, true, reason: errors.toString());
200 201
201 walkTree(stylesheet); 202 walkTree(stylesheet);
202 203
203 expect(stylesheet.topLevels.length, 1); 204 expect(stylesheet.topLevels.length, 1);
204 205
205 expect(stylesheet.topLevels[0] is RuleSet, true); 206 expect(stylesheet.topLevels[0] is RuleSet, true);
206 var ruleset = stylesheet.topLevels[0]; 207 var ruleset = stylesheet.topLevels[0] as RuleSet;
207 expect(ruleset.selectorGroup.selectors.length, 1); 208 expect(ruleset.selectorGroup.selectors.length, 1);
208 expect(ruleset.declarationGroup.declarations.length, 0); 209 expect(ruleset.declarationGroup.declarations.length, 0);
209 210
210 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences; 211 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
211 212
212 expect(simpleSeqs.length, 4); 213 expect(simpleSeqs.length, 4);
213 214
214 var simpSelector0 = simpleSeqs[0].simpleSelector; 215 expect(simpleSeqs[0].simpleSelector is NamespaceSelector, true);
215 expect(simpSelector0 is NamespaceSelector, true); 216 var simpSelector0 = simpleSeqs[0].simpleSelector as NamespaceSelector;
216 expect(simpleSeqs[0].isCombinatorNone, true); 217 expect(simpleSeqs[0].isCombinatorNone, true);
217 expect(simpSelector0.namespace, "ns1"); 218 expect(simpSelector0.namespace, "ns1");
218 var elementSelector0 = simpSelector0.nameAsSimpleSelector; 219 var elementSelector0 = simpSelector0.nameAsSimpleSelector;
219 expect(elementSelector0 is ElementSelector, true); 220 expect(elementSelector0 is ElementSelector, true);
220 expect(elementSelector0.isWildcard, false); 221 expect(elementSelector0.isWildcard, false);
221 expect(elementSelector0.name, "div"); 222 expect(elementSelector0.name, "div");
222 223
223 var simpSelector1 = simpleSeqs[1].simpleSelector; 224 var simpSelector1 = simpleSeqs[1].simpleSelector;
224 expect(simpSelector1 is ElementSelector, true); 225 expect(simpSelector1 is ElementSelector, true);
225 expect(simpleSeqs[1].isCombinatorDescendant, true); 226 expect(simpleSeqs[1].isCombinatorDescendant, true);
226 expect(simpSelector1.name, "div"); 227 expect(simpSelector1.name, "div");
227 228
228 var simpSelector2 = simpleSeqs[2].simpleSelector; 229 expect(simpleSeqs[2].simpleSelector is NamespaceSelector, true);
229 expect(simpSelector2 is NamespaceSelector, true); 230 var simpSelector2 = simpleSeqs[2].simpleSelector as NamespaceSelector;
230 expect(simpleSeqs[2].isCombinatorDescendant, true); 231 expect(simpleSeqs[2].isCombinatorDescendant, true);
231 expect(simpSelector2.namespace, "ns2"); 232 expect(simpSelector2.namespace, "ns2");
232 var elementSelector2 = simpSelector2.nameAsSimpleSelector; 233 var elementSelector2 = simpSelector2.nameAsSimpleSelector;
233 expect(elementSelector2 is ElementSelector, true); 234 expect(elementSelector2 is ElementSelector, true);
234 expect(elementSelector2.isWildcard, false); 235 expect(elementSelector2.isWildcard, false);
235 expect(elementSelector2.name, "span"); 236 expect(elementSelector2.name, "span");
236 237
237 var simpSelector3 = simpleSeqs[3].simpleSelector; 238 var simpSelector3 = simpleSeqs[3].simpleSelector;
238 expect(simpSelector3 is ClassSelector, true); 239 expect(simpSelector3 is ClassSelector, true);
239 expect(simpleSeqs[3].isCombinatorDescendant, true); 240 expect(simpleSeqs[3].isCombinatorDescendant, true);
240 expect(simpSelector3.name, "foobar"); 241 expect(simpSelector3.name, "foobar");
241 } 242 }
242 243
243 void testSelectorGroups() { 244 void testSelectorGroups() {
244 var errors = []; 245 var errors = <Message>[];
245 var input = 246 var input =
246 "div, .foobar ,#elemId, .xyzzy .test, ns1|div div #elemId .foobar {}"; 247 "div, .foobar ,#elemId, .xyzzy .test, ns1|div div #elemId .foobar {}";
247 var stylesheet = parseCss(input, errors: errors); 248 var stylesheet = parseCss(input, errors: errors);
248 249
249 expect(stylesheet != null, true); 250 expect(stylesheet != null, true);
250 expect(errors.isEmpty, true, reason: errors.toString()); 251 expect(errors.isEmpty, true, reason: errors.toString());
251 252
252 walkTree(stylesheet); 253 walkTree(stylesheet);
253 254
254 expect(stylesheet.topLevels.length, 1); 255 expect(stylesheet.topLevels.length, 1);
255 256
256 expect(stylesheet.topLevels[0] is RuleSet, true); 257 expect(stylesheet.topLevels[0] is RuleSet, true);
257 var ruleset = stylesheet.topLevels[0]; 258 var ruleset = stylesheet.topLevels[0] as RuleSet;
258 expect(ruleset.selectorGroup.selectors.length, 5); 259 expect(ruleset.selectorGroup.selectors.length, 5);
259 expect(ruleset.declarationGroup.declarations.length, 0); 260 expect(ruleset.declarationGroup.declarations.length, 0);
260 261
261 var groupSelector0 = ruleset.selectorGroup.selectors[0]; 262 var groupSelector0 = ruleset.selectorGroup.selectors[0];
262 expect(groupSelector0.simpleSelectorSequences.length, 1); 263 expect(groupSelector0.simpleSelectorSequences.length, 1);
263 var selector0 = groupSelector0.simpleSelectorSequences[0]; 264 var selector0 = groupSelector0.simpleSelectorSequences[0];
264 var simpleSelector0 = selector0.simpleSelector; 265 var simpleSelector0 = selector0.simpleSelector;
265 expect(simpleSelector0 is ElementSelector, true); 266 expect(simpleSelector0 is ElementSelector, true);
266 expect(selector0.isCombinatorNone, true); 267 expect(selector0.isCombinatorNone, true);
267 expect(simpleSelector0.name, "div"); 268 expect(simpleSelector0.name, "div");
(...skipping 26 matching lines...) Expand all
294 var selector31 = groupSelector3.simpleSelectorSequences[1]; 295 var selector31 = groupSelector3.simpleSelectorSequences[1];
295 var simpleSelector31 = selector31.simpleSelector; 296 var simpleSelector31 = selector31.simpleSelector;
296 expect(simpleSelector31 is ClassSelector, true); 297 expect(simpleSelector31 is ClassSelector, true);
297 expect(selector31.isCombinatorDescendant, true); 298 expect(selector31.isCombinatorDescendant, true);
298 expect(simpleSelector31.name, "test"); 299 expect(simpleSelector31.name, "test");
299 300
300 var groupSelector4 = ruleset.selectorGroup.selectors[4]; 301 var groupSelector4 = ruleset.selectorGroup.selectors[4];
301 expect(groupSelector4.simpleSelectorSequences.length, 4); 302 expect(groupSelector4.simpleSelectorSequences.length, 4);
302 303
303 var selector40 = groupSelector4.simpleSelectorSequences[0]; 304 var selector40 = groupSelector4.simpleSelectorSequences[0];
304 var simpleSelector40 = selector40.simpleSelector; 305 expect(selector40.simpleSelector is NamespaceSelector, true);
305 expect(simpleSelector40 is NamespaceSelector, true); 306 var simpleSelector40 = selector40.simpleSelector as NamespaceSelector;
306 expect(selector40.isCombinatorNone, true); 307 expect(selector40.isCombinatorNone, true);
307 expect(simpleSelector40.namespace, "ns1"); 308 expect(simpleSelector40.namespace, "ns1");
308 var elementSelector = simpleSelector40.nameAsSimpleSelector; 309 var elementSelector = simpleSelector40.nameAsSimpleSelector;
309 expect(elementSelector is ElementSelector, true); 310 expect(elementSelector is ElementSelector, true);
310 expect(elementSelector.isWildcard, false); 311 expect(elementSelector.isWildcard, false);
311 expect(elementSelector.name, "div"); 312 expect(elementSelector.name, "div");
312 313
313 var selector41 = groupSelector4.simpleSelectorSequences[1]; 314 var selector41 = groupSelector4.simpleSelectorSequences[1];
314 var simpleSelector41 = selector41.simpleSelector; 315 var simpleSelector41 = selector41.simpleSelector;
315 expect(simpleSelector41 is ElementSelector, true); 316 expect(simpleSelector41 is ElementSelector, true);
316 expect(selector41.isCombinatorDescendant, true); 317 expect(selector41.isCombinatorDescendant, true);
317 expect(simpleSelector41.name, "div"); 318 expect(simpleSelector41.name, "div");
318 319
319 var selector42 = groupSelector4.simpleSelectorSequences[2]; 320 var selector42 = groupSelector4.simpleSelectorSequences[2];
320 var simpleSelector42 = selector42.simpleSelector; 321 var simpleSelector42 = selector42.simpleSelector;
321 expect(simpleSelector42 is IdSelector, true); 322 expect(simpleSelector42 is IdSelector, true);
322 expect(selector42.isCombinatorDescendant, true); 323 expect(selector42.isCombinatorDescendant, true);
323 expect(simpleSelector42.name, "elemId"); 324 expect(simpleSelector42.name, "elemId");
324 325
325 var selector43 = groupSelector4.simpleSelectorSequences[3]; 326 var selector43 = groupSelector4.simpleSelectorSequences[3];
326 var simpleSelector43 = selector43.simpleSelector; 327 var simpleSelector43 = selector43.simpleSelector;
327 expect(selector43.isCombinatorDescendant, true); 328 expect(selector43.isCombinatorDescendant, true);
328 expect(simpleSelector43.name, "foobar"); 329 expect(simpleSelector43.name, "foobar");
329 } 330 }
330 331
331 void testCombinator() { 332 void testCombinator() {
332 var errors = []; 333 var errors = <Message>[];
333 var input = ".foobar > .bar + .no-story ~ myNs|div #elemId {}"; 334 var input = ".foobar > .bar + .no-story ~ myNs|div #elemId {}";
334 var stylesheet = parseCss(input, errors: errors); 335 var stylesheet = parseCss(input, errors: errors);
335 336
336 expect(stylesheet != null, true); 337 expect(stylesheet != null, true);
337 expect(errors.isEmpty, true, reason: errors.toString()); 338 expect(errors.isEmpty, true, reason: errors.toString());
338 339
339 walkTree(stylesheet); 340 walkTree(stylesheet);
340 341
341 expect(stylesheet.topLevels.length, 1); 342 expect(stylesheet.topLevels.length, 1);
342 343
343 expect(stylesheet.topLevels[0] is RuleSet, true); 344 expect(stylesheet.topLevels[0] is RuleSet, true);
344 var ruleset = stylesheet.topLevels[0]; 345 var ruleset = stylesheet.topLevels[0] as RuleSet;
345 expect(ruleset.selectorGroup.selectors.length, 1); 346 expect(ruleset.selectorGroup.selectors.length, 1);
346 expect(ruleset.declarationGroup.declarations.length, 0); 347 expect(ruleset.declarationGroup.declarations.length, 0);
347 348
348 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences; 349 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
349 350
350 expect(simpleSeqs.length, 5); 351 expect(simpleSeqs.length, 5);
351 352
352 var selector0 = simpleSeqs[0]; 353 var selector0 = simpleSeqs[0];
353 var simpleSelector0 = selector0.simpleSelector; 354 var simpleSelector0 = selector0.simpleSelector;
354 expect(simpleSelector0 is ClassSelector, true); 355 expect(simpleSelector0 is ClassSelector, true);
355 expect(selector0.isCombinatorNone, true); 356 expect(selector0.isCombinatorNone, true);
356 expect(simpleSelector0.name, "foobar"); 357 expect(simpleSelector0.name, "foobar");
357 358
358 var selector1 = simpleSeqs[1]; 359 var selector1 = simpleSeqs[1];
359 var simpleSelector1 = selector1.simpleSelector; 360 var simpleSelector1 = selector1.simpleSelector;
360 expect(simpleSelector1 is ClassSelector, true); 361 expect(simpleSelector1 is ClassSelector, true);
361 expect(selector1.isCombinatorGreater, true); 362 expect(selector1.isCombinatorGreater, true);
362 expect(simpleSelector1.name, "bar"); 363 expect(simpleSelector1.name, "bar");
363 364
364 var selector2 = simpleSeqs[2]; 365 var selector2 = simpleSeqs[2];
365 var simpleSelector2 = selector2.simpleSelector; 366 var simpleSelector2 = selector2.simpleSelector;
366 expect(simpleSelector2 is ClassSelector, true); 367 expect(simpleSelector2 is ClassSelector, true);
367 expect(selector2.isCombinatorPlus, true); 368 expect(selector2.isCombinatorPlus, true);
368 expect(simpleSelector2.name, "no-story"); 369 expect(simpleSelector2.name, "no-story");
369 370
370 var selector3 = simpleSeqs[3]; 371 var selector3 = simpleSeqs[3];
371 var simpleSelector3 = selector3.simpleSelector; 372 expect(selector3.simpleSelector is NamespaceSelector, true);
372 expect(simpleSelector3 is NamespaceSelector, true); 373 var simpleSelector3 = selector3.simpleSelector as NamespaceSelector;
373 expect(selector3.isCombinatorTilde, true); 374 expect(selector3.isCombinatorTilde, true);
374 expect(simpleSelector3.namespace, "myNs"); 375 expect(simpleSelector3.namespace, "myNs");
375 var elementSelector = simpleSelector3.nameAsSimpleSelector; 376 var elementSelector = simpleSelector3.nameAsSimpleSelector;
376 expect(elementSelector is ElementSelector, true); 377 expect(elementSelector is ElementSelector, true);
377 expect(elementSelector.isWildcard, false); 378 expect(elementSelector.isWildcard, false);
378 expect(elementSelector.name, "div"); 379 expect(elementSelector.name, "div");
379 380
380 var selector4 = simpleSeqs[4]; 381 var selector4 = simpleSeqs[4];
381 var simpleSelector4 = selector4.simpleSelector; 382 var simpleSelector4 = selector4.simpleSelector;
382 expect(simpleSelector4 is IdSelector, true); 383 expect(simpleSelector4 is IdSelector, true);
383 expect(selector4.isCombinatorDescendant, true); 384 expect(selector4.isCombinatorDescendant, true);
384 expect(simpleSelector4.name, "elemId"); 385 expect(simpleSelector4.name, "elemId");
385 } 386 }
386 387
387 void testWildcard() { 388 void testWildcard() {
388 var errors = []; 389 var errors = <Message>[];
389 var input = "* {}"; 390 var input = "* {}";
390 var stylesheet = parseCss(input, errors: errors); 391 var stylesheet = parseCss(input, errors: errors);
391 392
392 expect(stylesheet != null, true); 393 expect(stylesheet != null, true);
393 expect(errors.isEmpty, true, reason: errors.toString()); 394 expect(errors.isEmpty, true, reason: errors.toString());
394 395
395 walkTree(stylesheet); 396 walkTree(stylesheet);
396 397
397 expect(stylesheet.topLevels.length, 1); 398 expect(stylesheet.topLevels.length, 1);
398 399
399 expect(stylesheet.topLevels[0] is RuleSet, true); 400 expect(stylesheet.topLevels[0] is RuleSet, true);
400 var ruleset = stylesheet.topLevels[0]; 401 var ruleset = stylesheet.topLevels[0] as RuleSet;
401 expect(ruleset.selectorGroup.selectors.length, 1); 402 expect(ruleset.selectorGroup.selectors.length, 1);
402 expect(ruleset.declarationGroup.declarations.length, 0); 403 expect(ruleset.declarationGroup.declarations.length, 0);
403 404
404 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences; 405 var simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
405 406
406 expect(simpleSeqs.length, 1); 407 expect(simpleSeqs.length, 1);
407 var simpSelector = simpleSeqs[0].simpleSelector; 408 var simpSelector = simpleSeqs[0].simpleSelector;
408 expect(simpSelector is ElementSelector, true); 409 expect(simpSelector is ElementSelector, true);
409 expect(simpleSeqs[0].isCombinatorNone, true); 410 expect(simpleSeqs[0].isCombinatorNone, true);
410 expect(simpSelector.isWildcard, true); 411 expect(simpSelector.isWildcard, true);
(...skipping 11 matching lines...) Expand all
422 423
423 expect(stylesheet.topLevels[0] is RuleSet, true); 424 expect(stylesheet.topLevels[0] is RuleSet, true);
424 ruleset = stylesheet.topLevels[0]; 425 ruleset = stylesheet.topLevels[0];
425 expect(ruleset.selectorGroup.selectors.length, 1); 426 expect(ruleset.selectorGroup.selectors.length, 1);
426 expect(ruleset.declarationGroup.declarations.length, 0); 427 expect(ruleset.declarationGroup.declarations.length, 0);
427 428
428 simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences; 429 simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
429 430
430 expect(simpleSeqs.length, 2); 431 expect(simpleSeqs.length, 2);
431 432
432 var selector0 = simpleSeqs[0]; 433 {
433 var simpleSelector0 = selector0.simpleSelector; 434 var selector0 = simpleSeqs[0];
434 expect(simpleSelector0 is ElementSelector, true); 435 var simpleSelector0 = selector0.simpleSelector;
435 expect(selector0.isCombinatorNone, true); 436 expect(simpleSelector0 is ElementSelector, true);
436 expect(simpleSelector0.isWildcard, true); 437 expect(selector0.isCombinatorNone, true);
437 expect(simpleSelector0.name, "*"); 438 expect(simpleSelector0.isWildcard, true);
439 expect(simpleSelector0.name, "*");
440 }
438 441
439 var selector1 = simpleSeqs[1]; 442 var selector1 = simpleSeqs[1];
440 var simpleSelector1 = selector1.simpleSelector; 443 var simpleSelector1 = selector1.simpleSelector;
441 expect(simpleSelector1 is ClassSelector, true); 444 expect(simpleSelector1 is ClassSelector, true);
442 expect(selector1.isCombinatorNone, true); 445 expect(selector1.isCombinatorNone, true);
443 expect(simpleSelector1.name, "foobar"); 446 expect(simpleSelector1.name, "foobar");
444 447
445 input = "myNs|*.foobar {}"; 448 input = "myNs|*.foobar {}";
446 stylesheet = parseCss(input, errors: errors..clear()); 449 stylesheet = parseCss(input, errors: errors..clear());
447 450
448 expect(stylesheet != null, true); 451 expect(stylesheet != null, true);
449 expect(errors.isEmpty, true, reason: errors.toString()); 452 expect(errors.isEmpty, true, reason: errors.toString());
450 453
451 walkTree(stylesheet); 454 walkTree(stylesheet);
452 455
453 expect(stylesheet.topLevels.length, 1); 456 expect(stylesheet.topLevels.length, 1);
454 457
455 expect(stylesheet.topLevels[0] is RuleSet, true); 458 expect(stylesheet.topLevels[0] is RuleSet, true);
456 ruleset = stylesheet.topLevels[0]; 459 ruleset = stylesheet.topLevels[0];
457 expect(ruleset.selectorGroup.selectors.length, 1); 460 expect(ruleset.selectorGroup.selectors.length, 1);
458 expect(ruleset.declarationGroup.declarations.length, 0); 461 expect(ruleset.declarationGroup.declarations.length, 0);
459 462
460 simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences; 463 simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
461 464
462 expect(simpleSeqs.length, 2); 465 expect(simpleSeqs.length, 2);
463 466
464 selector0 = simpleSeqs[0]; 467 {
465 simpleSelector0 = selector0.simpleSelector; 468 var selector0 = simpleSeqs[0];
466 expect(simpleSelector0 is NamespaceSelector, true); 469 expect(selector0.simpleSelector is NamespaceSelector, true);
467 expect(selector0.isCombinatorNone, true); 470 var simpleSelector0 = selector0.simpleSelector as NamespaceSelector;
468 expect(simpleSelector0.isNamespaceWildcard, false); 471 expect(selector0.isCombinatorNone, true);
469 var elementSelector = simpleSelector0.nameAsSimpleSelector; 472 expect(simpleSelector0.isNamespaceWildcard, false);
470 expect("myNs", simpleSelector0.namespace); 473 var elementSelector = simpleSelector0.nameAsSimpleSelector;
471 expect(elementSelector.isWildcard, true); 474 expect("myNs", simpleSelector0.namespace);
472 expect("*", elementSelector.name); 475 expect(elementSelector.isWildcard, true);
476 expect("*", elementSelector.name);
477 }
473 478
474 selector1 = simpleSeqs[1]; 479 selector1 = simpleSeqs[1];
475 simpleSelector1 = selector1.simpleSelector; 480 simpleSelector1 = selector1.simpleSelector;
476 expect(simpleSelector1 is ClassSelector, true); 481 expect(simpleSelector1 is ClassSelector, true);
477 expect(selector1.isCombinatorNone, true); 482 expect(selector1.isCombinatorNone, true);
478 expect("foobar", simpleSelector1.name); 483 expect("foobar", simpleSelector1.name);
479 484
480 input = "*|*.foobar {}"; 485 input = "*|*.foobar {}";
481 stylesheet = parseCss(input, errors: errors..clear()); 486 stylesheet = parseCss(input, errors: errors..clear());
482 487
483 expect(stylesheet != null, true); 488 expect(stylesheet != null, true);
484 expect(errors.isEmpty, true, reason: errors.toString()); 489 expect(errors.isEmpty, true, reason: errors.toString());
485 490
486 walkTree(stylesheet); 491 walkTree(stylesheet);
487 492
488 expect(stylesheet.topLevels[0] is RuleSet, true); 493 expect(stylesheet.topLevels[0] is RuleSet, true);
489 ruleset = stylesheet.topLevels[0]; 494 ruleset = stylesheet.topLevels[0];
490 expect(ruleset.selectorGroup.selectors.length, 1); 495 expect(ruleset.selectorGroup.selectors.length, 1);
491 expect(ruleset.declarationGroup.declarations.length, 0); 496 expect(ruleset.declarationGroup.declarations.length, 0);
492 497
493 simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences; 498 simpleSeqs = ruleset.selectorGroup.selectors[0].simpleSelectorSequences;
494 499
495 expect(simpleSeqs.length, 2); 500 expect(simpleSeqs.length, 2);
496 501
497 selector0 = simpleSeqs[0]; 502 {
498 simpleSelector0 = selector0.simpleSelector; 503 var selector0 = simpleSeqs[0];
499 expect(simpleSelector0 is NamespaceSelector, true); 504 expect(selector0.simpleSelector is NamespaceSelector, true);
500 expect(selector0.isCombinatorNone, true); 505 var simpleSelector0 = selector0.simpleSelector as NamespaceSelector;
501 expect(simpleSelector0.isNamespaceWildcard, true); 506 expect(selector0.isCombinatorNone, true);
502 expect("*", simpleSelector0.namespace); 507 expect(simpleSelector0.isNamespaceWildcard, true);
503 elementSelector = simpleSelector0.nameAsSimpleSelector; 508 expect("*", simpleSelector0.namespace);
504 expect(elementSelector.isWildcard, true); 509 var elementSelector = simpleSelector0.nameAsSimpleSelector;
505 expect("*", elementSelector.name); 510 expect(elementSelector.isWildcard, true);
511 expect("*", elementSelector.name);
512 }
506 513
507 selector1 = simpleSeqs[1]; 514 selector1 = simpleSeqs[1];
508 simpleSelector1 = selector1.simpleSelector; 515 simpleSelector1 = selector1.simpleSelector;
509 expect(simpleSelector1 is ClassSelector, true); 516 expect(simpleSelector1 is ClassSelector, true);
510 expect(selector1.isCombinatorNone, true); 517 expect(selector1.isCombinatorNone, true);
511 expect("foobar", simpleSelector1.name); 518 expect("foobar", simpleSelector1.name);
512 } 519 }
513 520
514 /** Test List<int> as input to parser. */ 521 /** Test List<int> as input to parser. */
515 void testArrayOfChars() { 522 void testArrayOfChars() {
516 var errors = []; 523 var errors = <Message>[];
517 var input = '<![CDATA[.foo { ' 524 var input = '<![CDATA[.foo { '
518 'color: red; left: 20px; top: 20px; width: 100px; height:200px' 525 'color: red; left: 20px; top: 20px; width: 100px; height:200px'
519 '}' 526 '}'
520 '#div {' 527 '#div {'
521 'color : #00F578; border-color: #878787;' 528 'color : #00F578; border-color: #878787;'
522 '}]]>'; 529 '}]]>';
523 530
524 var stylesheet = parse(UTF8.encode(input), errors: errors); 531 var stylesheet = parse(UTF8.encode(input), errors: errors);
525 532
526 expect(stylesheet != null, true); 533 expect(stylesheet != null, true);
527 expect(errors.isEmpty, true, reason: errors.toString()); 534 expect(errors.isEmpty, true, reason: errors.toString());
528 535
529 expect(prettyPrint(stylesheet), r''' 536 expect(prettyPrint(stylesheet), r'''
530 .foo { 537 .foo {
531 color: #f00; 538 color: #f00;
532 left: 20px; 539 left: 20px;
533 top: 20px; 540 top: 20px;
534 width: 100px; 541 width: 100px;
535 height: 200px; 542 height: 200px;
536 } 543 }
537 #div { 544 #div {
538 color: #00F578; 545 color: #00F578;
539 border-color: #878787; 546 border-color: #878787;
540 }'''); 547 }''');
541 } 548 }
542 549
543 void testPseudo() { 550 void testPseudo() {
544 var errors = []; 551 var errors = <Message>[];
545 552
546 final input = r''' 553 final input = r'''
547 html:lang(fr-ca) { quotes: '" ' ' "' } 554 html:lang(fr-ca) { quotes: '" ' ' "' }
548 zoom: { } 555 zoom: { }
549 556
550 a:link { color: red } 557 a:link { color: red }
551 :link { color: blue } 558 :link { color: blue }
552 559
553 a:focus { background: yellow } 560 a:focus { background: yellow }
554 a:focus:hover { background: white } 561 a:focus:hover { background: white }
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 643
637 void testAttribute() { 644 void testAttribute() {
638 // TODO(terry): Implement 645 // TODO(terry): Implement
639 } 646 }
640 647
641 void testNegation() { 648 void testNegation() {
642 // TODO(terry): Implement 649 // TODO(terry): Implement
643 } 650 }
644 651
645 void testHost() { 652 void testHost() {
646 var errors = []; 653 var errors = <Message>[];
647 var input = '@host { ' 654 var input = '@host { '
648 ':scope {' 655 ':scope {'
649 'white-space: nowrap;' 656 'white-space: nowrap;'
650 'overflow-style: marquee-line;' 657 'overflow-style: marquee-line;'
651 'overflow-x: marquee;' 658 'overflow-x: marquee;'
652 '}' 659 '}'
653 '* { color: red; }' 660 '* { color: red; }'
654 '*:hover { font-weight: bold; }' 661 '*:hover { font-weight: bold; }'
655 ':nth-child(odd) { color: blue; }' 662 ':nth-child(odd) { color: blue; }'
656 '}'; 663 '}';
(...skipping 14 matching lines...) Expand all
671 *:hover { 678 *:hover {
672 font-weight: bold; 679 font-weight: bold;
673 } 680 }
674 :nth-child(odd) { 681 :nth-child(odd) {
675 color: #00f; 682 color: #00f;
676 } 683 }
677 }'''); 684 }''');
678 } 685 }
679 686
680 void testStringEscape() { 687 void testStringEscape() {
681 var errors = []; 688 var errors = <Message>[];
682 var input = r'''a { foo: '{"text" : "a\\\""}' }'''; 689 var input = r'''a { foo: '{"text" : "a\\\""}' }''';
683 var stylesheet = parseCss(input, errors: errors, opts: simpleOptions); 690 var stylesheet = parseCss(input, errors: errors, opts: simpleOptions);
684 expect(stylesheet != null, true); 691 expect(stylesheet != null, true);
685 expect(errors.isEmpty, true, reason: errors.toString()); 692 expect(errors.isEmpty, true, reason: errors.toString());
686 693
687 expect(prettyPrint(stylesheet), r''' 694 expect(prettyPrint(stylesheet), r'''
688 a { 695 a {
689 foo: '{"text" : "a\\\""}'; 696 foo: '{"text" : "a\\\""}';
690 }'''); 697 }''');
691 } 698 }
692 699
693 // TODO(terry): Move to emitter_test.dart when real emitter exist. 700 // TODO(terry): Move to emitter_test.dart when real emitter exist.
694 void testEmitter() { 701 void testEmitter() {
695 var errors = []; 702 var errors = <Message>[];
696 var input = '.foo { ' 703 var input = '.foo { '
697 'color: red; left: 20px; top: 20px; width: 100px; height:200px' 704 'color: red; left: 20px; top: 20px; width: 100px; height:200px'
698 '}' 705 '}'
699 '#div {' 706 '#div {'
700 'color : #00F578; border-color: #878787;' 707 'color : #00F578; border-color: #878787;'
701 '}'; 708 '}';
702 var stylesheet = parseCss(input, errors: errors); 709 var stylesheet = parseCss(input, errors: errors);
703 710
704 expect(stylesheet != null, true); 711 expect(stylesheet != null, true);
705 expect(errors.isEmpty, true, reason: errors.toString()); 712 expect(errors.isEmpty, true, reason: errors.toString());
(...skipping 25 matching lines...) Expand all
731 test('Combinator', testCombinator); 738 test('Combinator', testCombinator);
732 test('Wildcards', testWildcard); 739 test('Wildcards', testWildcard);
733 test('Pseudo', testPseudo); 740 test('Pseudo', testPseudo);
734 test('Attributes', testAttribute); 741 test('Attributes', testAttribute);
735 test('Negation', testNegation); 742 test('Negation', testNegation);
736 test('@host', testHost); 743 test('@host', testHost);
737 test('stringEscape', testStringEscape); 744 test('stringEscape', testStringEscape);
738 test('Parse List<int> as input', testArrayOfChars); 745 test('Parse List<int> as input', testArrayOfChars);
739 test('Simple Emitter', testEmitter); 746 test('Simple Emitter', testEmitter);
740 } 747 }
OLDNEW
« no previous file with comments | « test/big_1_test.dart ('k') | test/declaration_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698