Index: pkg/csslib/test/error_test.dart |
diff --git a/pkg/csslib/test/error_test.dart b/pkg/csslib/test/error_test.dart |
deleted file mode 100644 |
index f48906cd81cbb61ea97964b40ea5566dd6280ec5..0000000000000000000000000000000000000000 |
--- a/pkg/csslib/test/error_test.dart |
+++ /dev/null |
@@ -1,354 +0,0 @@ |
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library error_test; |
- |
-import 'package:unittest/unittest.dart'; |
-import 'testing.dart'; |
-import 'package:csslib/src/messages.dart'; |
- |
-/** |
- * Test for unsupported font-weights values of bolder, lighter and inherit. |
- */ |
-void testUnsupportedFontWeights() { |
- var errors = []; |
- |
- // TODO(terry): Need to support bolder. |
- // font-weight value bolder. |
- var input = ".foobar { font-weight: bolder; }"; |
- var stylesheet = parseCss(input, errors: errors); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), r''' |
-error on line 1, column 24: Unknown property value bolder |
-.foobar { font-weight: bolder; } |
- ^^^^^^'''); |
- expect(stylesheet != null, true); |
- |
- expect(prettyPrint(stylesheet), r''' |
-.foobar { |
- font-weight: bolder; |
-}'''); |
- |
- // TODO(terry): Need to support lighter. |
- // font-weight value lighter. |
- input = ".foobar { font-weight: lighter; }"; |
- stylesheet = parseCss(input, errors: errors..clear()); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), r''' |
-error on line 1, column 24: Unknown property value lighter |
-.foobar { font-weight: lighter; } |
- ^^^^^^^'''); |
- expect(stylesheet != null, true); |
- expect(prettyPrint(stylesheet), r''' |
-.foobar { |
- font-weight: lighter; |
-}'''); |
- |
- // TODO(terry): Need to support inherit. |
- // font-weight value inherit. |
- input = ".foobar { font-weight: inherit; }"; |
- stylesheet = parseCss(input, errors: errors..clear()); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), r''' |
-error on line 1, column 24: Unknown property value inherit |
-.foobar { font-weight: inherit; } |
- ^^^^^^^'''); |
- expect(stylesheet != null, true); |
- expect(prettyPrint(stylesheet), r''' |
-.foobar { |
- font-weight: inherit; |
-}'''); |
-} |
- |
-/** |
- * Test for unsupported line-height values of units other than px, pt and |
- * inherit. |
- */ |
-void testUnsupportedLineHeights() { |
- var errors = []; |
- |
- // line-height value in percentge unit. |
- var input = ".foobar { line-height: 120%; }"; |
- var stylesheet = parseCss(input, errors: errors); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), r''' |
-error on line 1, column 24: Unexpected value for line-height |
-.foobar { line-height: 120%; } |
- ^^^'''); |
- expect(stylesheet != null, true); |
- expect(prettyPrint(stylesheet), r''' |
-.foobar { |
- line-height: 120%; |
-}'''); |
- |
- // TODO(terry): Need to support all units. |
- // line-height value in cm unit. |
- input = ".foobar { line-height: 20cm; }"; |
- stylesheet = parseCss(input, errors: errors..clear()); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), r''' |
-error on line 1, column 24: Unexpected unit for line-height |
-.foobar { line-height: 20cm; } |
- ^^'''); |
- expect(stylesheet != null, true); |
- expect(prettyPrint(stylesheet), r''' |
-.foobar { |
- line-height: 20cm; |
-}'''); |
- |
- // TODO(terry): Need to support inherit. |
- // line-height value inherit. |
- input = ".foobar { line-height: inherit; }"; |
- stylesheet = parseCss(input, errors: errors..clear()); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), r''' |
-error on line 1, column 24: Unknown property value inherit |
-.foobar { line-height: inherit; } |
- ^^^^^^^'''); |
- expect(stylesheet != null, true); |
- expect(prettyPrint(stylesheet), r''' |
-.foobar { |
- line-height: inherit; |
-}'''); |
-} |
- |
-/** Test for bad selectors. */ |
-void testBadSelectors() { |
- var errors = []; |
- |
- // Invalid id selector. |
- var input = "# foo { color: #ff00ff; }"; |
- var stylesheet = parseCss(input, errors: errors); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), r''' |
-error on line 1, column 1: Not a valid ID selector expected #id |
-# foo { color: #ff00ff; } |
-^'''); |
- expect(stylesheet != null, true); |
- expect(prettyPrint(stylesheet), r''' |
-# foo { |
- color: #f0f; |
-}'''); |
- |
- // Invalid class selector. |
- input = ". foo { color: #ff00ff; }"; |
- stylesheet = parseCss(input, errors: errors..clear()); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), r''' |
-error on line 1, column 1: Not a valid class selector expected .className |
-. foo { color: #ff00ff; } |
-^'''); |
- expect(stylesheet != null, true); |
- expect(prettyPrint(stylesheet), r''' |
-. foo { |
- color: #f0f; |
-}'''); |
-} |
- |
-/** Test for bad hex values. */ |
-void testBadHexValues() { |
- var errors = []; |
- |
- // Invalid hex value. |
- var input = ".foobar { color: #AH787; }"; |
- var stylesheet = parseCss(input, errors: errors); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), r''' |
-error on line 1, column 18: Bad hex number |
-.foobar { color: #AH787; } |
- ^^^^^^'''); |
- expect(stylesheet != null, true); |
- expect(prettyPrint(stylesheet), r''' |
-.foobar { |
- color: #AH787; |
-}'''); |
- |
- // Bad color constant. |
- input = ".foobar { color: redder; }"; |
- stylesheet = parseCss(input, errors: errors..clear()); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), r''' |
-error on line 1, column 18: Unknown property value redder |
-.foobar { color: redder; } |
- ^^^^^^'''); |
- |
- expect(stylesheet != null, true); |
- expect(prettyPrint(stylesheet), r''' |
-.foobar { |
- color: redder; |
-}'''); |
- |
- // Bad hex color #<space>ffffff. |
- input = ".foobar { color: # ffffff; }"; |
- stylesheet = parseCss(input, errors: errors..clear()); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), r''' |
-error on line 1, column 18: Expected hex number |
-.foobar { color: # ffffff; } |
- ^'''); |
- |
- expect(stylesheet != null, true); |
- expect(prettyPrint(stylesheet), r''' |
-.foobar { |
- color: # ffffff; |
-}'''); |
- |
- // Bad hex color #<space>123fff. |
- input = ".foobar { color: # 123fff; }"; |
- stylesheet = parseCss(input, errors: errors..clear()); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), r''' |
-error on line 1, column 18: Expected hex number |
-.foobar { color: # 123fff; } |
- ^'''); |
- |
- expect(stylesheet != null, true); |
- |
- // Formating is off with an extra space. However, the entire value is bad |
- // and isn't processed anyway. |
- expect(prettyPrint(stylesheet), r''' |
-.foobar { |
- color: # 123 fff; |
-}'''); |
- |
-} |
- |
-void testBadUnicode() { |
- var errors = []; |
- final String input = ''' |
-@font-face { |
- src: url(fonts/BBCBengali.ttf) format("opentype"); |
- unicode-range: U+400-200; |
-}'''; |
- |
- var stylesheet = parseCss(input, errors: errors); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), |
- 'error on line 3, column 20: unicode first range can not be greater than ' |
- 'last\n' |
- ' unicode-range: U+400-200;\n' |
- ' ^^^^^^^'); |
- |
- final String input2 = ''' |
-@font-face { |
- src: url(fonts/BBCBengali.ttf) format("opentype"); |
- unicode-range: U+12FFFF; |
-}'''; |
- |
- stylesheet = parseCss(input2, errors: errors..clear()); |
- |
- expect(errors.isEmpty, false); |
- expect(errors[0].toString(), |
- 'error on line 3, column 20: unicode range must be less than 10FFFF\n' |
- ' unicode-range: U+12FFFF;\n' |
- ' ^^^^^^'); |
-} |
- |
-void testBadNesting() { |
- var errors = []; |
- |
- // Test for bad declaration in a nested rule. |
- final String input = ''' |
-div { |
- width: 20px; |
- span + ul { color: blue; } |
- span + ul > #aaaa { |
- color: #ffghghgh; |
- } |
- background-color: red; |
-} |
-'''; |
- |
- var stylesheet = parseCss(input, errors: errors); |
- expect(errors.length, 1); |
- var errorMessage = messages.messages[0]; |
- expect(errorMessage.message, contains('Bad hex number')); |
- expect(errorMessage.span, isNotNull); |
- expect(errorMessage.span.start.line, 4); |
- expect(errorMessage.span.start.column, 11); |
- expect(errorMessage.span.text, '#ffghghgh'); |
- |
- // Test for bad selector syntax. |
- final String input2 = ''' |
-div { |
- span + ul #aaaa > (3333) { |
- color: #ffghghgh; |
- } |
-} |
-'''; |
- var stylesheet2 = parseCss(input2, errors: errors..clear()); |
- expect(errors.length, 4); |
- errorMessage = messages.messages[0]; |
- expect(errorMessage.message, contains(':, but found +')); |
- expect(errorMessage.span, isNotNull); |
- expect(errorMessage.span.start.line, 1); |
- expect(errorMessage.span.start.column, 7); |
- expect(errorMessage.span.text, '+'); |
- |
- errorMessage = messages.messages[1]; |
- expect(errorMessage.message, contains('Unknown property value ul')); |
- expect(errorMessage.span, isNotNull); |
- expect(errorMessage.span.start.line, 1); |
- expect(errorMessage.span.start.column, 9); |
- expect(errorMessage.span.text, 'ul'); |
- |
- errorMessage = messages.messages[2]; |
- expect(errorMessage.message, contains('expected }, but found >')); |
- expect(errorMessage.span, isNotNull); |
- expect(errorMessage.span.start.line, 1); |
- expect(errorMessage.span.start.column, 18); |
- expect(errorMessage.span.text, '>'); |
- |
- errorMessage = messages.messages[3]; |
- expect(errorMessage.message, contains('premature end of file unknown CSS')); |
- expect(errorMessage.span, isNotNull); |
- expect(errorMessage.span.start.line, 1); |
- expect(errorMessage.span.start.column, 20); |
- expect(errorMessage.span.text, '('); |
- |
- // Test for missing close braces and bad declaration. |
- final String input3 = ''' |
-div { |
- span { |
- color: #green; |
-} |
-'''; |
- var stylesheet3 = parseCss(input3, errors: errors..clear()); |
- expect(errors.length, 2); |
- errorMessage = messages.messages[0]; |
- expect(errorMessage.message, contains('Bad hex number')); |
- expect(errorMessage.span, isNotNull); |
- expect(errorMessage.span.start.line, 2); |
- expect(errorMessage.span.start.column, 11); |
- expect(errorMessage.span.text, '#green'); |
- |
- errorMessage = messages.messages[1]; |
- expect(errorMessage.message, contains('expected }, but found end of file')); |
- expect(errorMessage.span, isNotNull); |
- expect(errorMessage.span.start.line, 3); |
- expect(errorMessage.span.start.column, 1); |
- expect(errorMessage.span.text, '\n'); |
-} |
- |
-main() { |
- test('font-weight value errors', testUnsupportedFontWeights); |
- test('line-height value errors', testUnsupportedLineHeights); |
- test('bad selectors', testBadSelectors); |
- test('bad Hex values', testBadHexValues); |
- test('bad unicode ranges', testBadUnicode); |
- test('nested rules', testBadNesting); |
-} |