OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 error_test; | 5 library error_test; |
6 | 6 |
7 import 'package:unittest/unittest.dart'; | 7 import 'package:unittest/unittest.dart'; |
8 import 'testing.dart'; | 8 import 'testing.dart'; |
9 import 'package:csslib/src/messages.dart'; | 9 import 'package:csslib/src/messages.dart'; |
10 | 10 |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 } | 226 } |
227 | 227 |
228 void testBadUnicode() { | 228 void testBadUnicode() { |
229 var errors = []; | 229 var errors = []; |
230 final String input = ''' | 230 final String input = ''' |
231 @font-face { | 231 @font-face { |
232 src: url(fonts/BBCBengali.ttf) format("opentype"); | 232 src: url(fonts/BBCBengali.ttf) format("opentype"); |
233 unicode-range: U+400-200; | 233 unicode-range: U+400-200; |
234 }'''; | 234 }'''; |
235 | 235 |
236 var stylesheet = parseCss(input, errors: errors); | 236 parseCss(input, errors: errors); |
237 | 237 |
238 expect(errors.isEmpty, false); | 238 expect(errors.isEmpty, false); |
239 expect(errors[0].toString(), | 239 expect(errors[0].toString(), |
240 'error on line 3, column 20: unicode first range can not be greater than ' | 240 'error on line 3, column 20: unicode first range can not be greater than ' |
241 'last\n' | 241 'last\n' |
242 ' unicode-range: U+400-200;\n' | 242 ' unicode-range: U+400-200;\n' |
243 ' ^^^^^^^'); | 243 ' ^^^^^^^'); |
244 | 244 |
245 final String input2 = ''' | 245 final String input2 = ''' |
246 @font-face { | 246 @font-face { |
247 src: url(fonts/BBCBengali.ttf) format("opentype"); | 247 src: url(fonts/BBCBengali.ttf) format("opentype"); |
248 unicode-range: U+12FFFF; | 248 unicode-range: U+12FFFF; |
249 }'''; | 249 }'''; |
250 | 250 |
251 stylesheet = parseCss(input2, errors: errors..clear()); | 251 parseCss(input2, errors: errors..clear()); |
252 | 252 |
253 expect(errors.isEmpty, false); | 253 expect(errors.isEmpty, false); |
254 expect(errors[0].toString(), | 254 expect(errors[0].toString(), |
255 'error on line 3, column 20: unicode range must be less than 10FFFF\n' | 255 'error on line 3, column 20: unicode range must be less than 10FFFF\n' |
256 ' unicode-range: U+12FFFF;\n' | 256 ' unicode-range: U+12FFFF;\n' |
257 ' ^^^^^^'); | 257 ' ^^^^^^'); |
258 } | 258 } |
259 | 259 |
260 void testBadNesting() { | 260 void testBadNesting() { |
261 var errors = []; | 261 var errors = []; |
262 | 262 |
263 // Test for bad declaration in a nested rule. | 263 // Test for bad declaration in a nested rule. |
264 final String input = ''' | 264 final String input = ''' |
265 div { | 265 div { |
266 width: 20px; | 266 width: 20px; |
267 span + ul { color: blue; } | 267 span + ul { color: blue; } |
268 span + ul > #aaaa { | 268 span + ul > #aaaa { |
269 color: #ffghghgh; | 269 color: #ffghghgh; |
270 } | 270 } |
271 background-color: red; | 271 background-color: red; |
272 } | 272 } |
273 '''; | 273 '''; |
274 | 274 |
275 var stylesheet = parseCss(input, errors: errors); | 275 parseCss(input, errors: errors); |
276 expect(errors.length, 1); | 276 expect(errors.length, 1); |
277 var errorMessage = messages.messages[0]; | 277 var errorMessage = messages.messages[0]; |
278 expect(errorMessage.message, contains('Bad hex number')); | 278 expect(errorMessage.message, contains('Bad hex number')); |
279 expect(errorMessage.span, isNotNull); | 279 expect(errorMessage.span, isNotNull); |
280 expect(errorMessage.span.start.line, 4); | 280 expect(errorMessage.span.start.line, 4); |
281 expect(errorMessage.span.start.column, 11); | 281 expect(errorMessage.span.start.column, 11); |
282 expect(errorMessage.span.text, '#ffghghgh'); | 282 expect(errorMessage.span.text, '#ffghghgh'); |
283 | 283 |
284 // Test for bad selector syntax. | 284 // Test for bad selector syntax. |
285 final String input2 = ''' | 285 final String input2 = ''' |
286 div { | 286 div { |
287 span + ul #aaaa > (3333) { | 287 span + ul #aaaa > (3333) { |
288 color: #ffghghgh; | 288 color: #ffghghgh; |
289 } | 289 } |
290 } | 290 } |
291 '''; | 291 '''; |
292 var stylesheet2 = parseCss(input2, errors: errors..clear()); | 292 parseCss(input2, errors: errors..clear()); |
293 expect(errors.length, 4); | 293 expect(errors.length, 4); |
294 errorMessage = messages.messages[0]; | 294 errorMessage = messages.messages[0]; |
295 expect(errorMessage.message, contains(':, but found +')); | 295 expect(errorMessage.message, contains(':, but found +')); |
296 expect(errorMessage.span, isNotNull); | 296 expect(errorMessage.span, isNotNull); |
297 expect(errorMessage.span.start.line, 1); | 297 expect(errorMessage.span.start.line, 1); |
298 expect(errorMessage.span.start.column, 7); | 298 expect(errorMessage.span.start.column, 7); |
299 expect(errorMessage.span.text, '+'); | 299 expect(errorMessage.span.text, '+'); |
300 | 300 |
301 errorMessage = messages.messages[1]; | 301 errorMessage = messages.messages[1]; |
302 expect(errorMessage.message, contains('Unknown property value ul')); | 302 expect(errorMessage.message, contains('Unknown property value ul')); |
(...skipping 16 matching lines...) Expand all Loading... |
319 expect(errorMessage.span.start.column, 20); | 319 expect(errorMessage.span.start.column, 20); |
320 expect(errorMessage.span.text, '('); | 320 expect(errorMessage.span.text, '('); |
321 | 321 |
322 // Test for missing close braces and bad declaration. | 322 // Test for missing close braces and bad declaration. |
323 final String input3 = ''' | 323 final String input3 = ''' |
324 div { | 324 div { |
325 span { | 325 span { |
326 color: #green; | 326 color: #green; |
327 } | 327 } |
328 '''; | 328 '''; |
329 var stylesheet3 = parseCss(input3, errors: errors..clear()); | 329 parseCss(input3, errors: errors..clear()); |
330 expect(errors.length, 2); | 330 expect(errors.length, 2); |
331 errorMessage = messages.messages[0]; | 331 errorMessage = messages.messages[0]; |
332 expect(errorMessage.message, contains('Bad hex number')); | 332 expect(errorMessage.message, contains('Bad hex number')); |
333 expect(errorMessage.span, isNotNull); | 333 expect(errorMessage.span, isNotNull); |
334 expect(errorMessage.span.start.line, 2); | 334 expect(errorMessage.span.start.line, 2); |
335 expect(errorMessage.span.start.column, 11); | 335 expect(errorMessage.span.start.column, 11); |
336 expect(errorMessage.span.text, '#green'); | 336 expect(errorMessage.span.text, '#green'); |
337 | 337 |
338 errorMessage = messages.messages[1]; | 338 errorMessage = messages.messages[1]; |
339 expect(errorMessage.message, contains('expected }, but found end of file')); | 339 expect(errorMessage.message, contains('expected }, but found end of file')); |
340 expect(errorMessage.span, isNotNull); | 340 expect(errorMessage.span, isNotNull); |
341 expect(errorMessage.span.start.line, 3); | 341 expect(errorMessage.span.start.line, 3); |
342 expect(errorMessage.span.start.column, 1); | 342 expect(errorMessage.span.start.column, 1); |
343 expect(errorMessage.span.text, '\n'); | 343 expect(errorMessage.span.text, '\n'); |
344 } | 344 } |
345 | 345 |
346 main() { | 346 main() { |
347 test('font-weight value errors', testUnsupportedFontWeights); | 347 test('font-weight value errors', testUnsupportedFontWeights); |
348 test('line-height value errors', testUnsupportedLineHeights); | 348 test('line-height value errors', testUnsupportedLineHeights); |
349 test('bad selectors', testBadSelectors); | 349 test('bad selectors', testBadSelectors); |
350 test('bad Hex values', testBadHexValues); | 350 test('bad Hex values', testBadHexValues); |
351 test('bad unicode ranges', testBadUnicode); | 351 test('bad unicode ranges', testBadUnicode); |
352 test('nested rules', testBadNesting); | 352 test('nested rules', testBadNesting); |
353 } | 353 } |
OLD | NEW |