| 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 |