Chromium Code Reviews| Index: utils/tests/css/declaration_tests.dart |
| diff --git a/utils/tests/css/declaration_tests.dart b/utils/tests/css/declaration_tests.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..040e6e567dd29410335689a4a135aed655d5597f |
| --- /dev/null |
| +++ b/utils/tests/css/declaration_tests.dart |
| @@ -0,0 +1,249 @@ |
| +// Copyright (c) 2011, 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("declaration_tests"); |
| +#import("../../css/css.dart"); |
| + |
| +void main() { |
| + initCssWorld(); |
| + |
| + testSimpleTerms(); |
| + testMoreDecls(); |
| + testIdentifiers(); |
| + testComposites(); |
| + testNewerCss(); |
| + testCssFile(); |
| +} |
| + |
| +void testSimpleTerms() { |
| + final String input = |
| + ".foo {\n" + |
| + " background-color: #191919;\n" + |
| + " width: 10PX;\n" + |
| + " height: 22mM !important;\n" + |
| + " border-width: 20cm;\n" + |
| + " margin-width: 33%;\n" + |
| + " border-height: 30EM;\n" + |
| + " width: .6in;\n" + |
| + " length: 1.2in;\n" + |
| + " -web-stuff: -10Px;\n" + |
| + "}\n"; |
| + final String generated = |
| + "\n" + |
| + ".foo {\n" + |
| + " background-color: #191919;\n" + |
| + " width: 10px;\n" + |
| + " height: 22mm !important;\n" + |
| + " border-width: 20cm;\n" + |
| + " margin-width: 33%;\n" + |
| + " border-height: 30em;\n" + |
| + " width: .6in;\n" + // Check double values. |
| + " length: 1.2in;\n" + |
| + " -web-stuff: -10px;\n" + |
| + "}\n"; |
| + |
| + Parser parser = |
| + new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE, input)); |
| + |
| + Stylesheet stylesheet = parser.parse(); |
| + Expect.isNotNull(stylesheet); |
|
Bob Nystrom
2012/04/25 18:12:49
Do we support assertions that are outside of any t
Siggi Cherem (dart-lang)
2012/04/25 18:20:41
We actually do (I'm actually adding that to unitte
|
| + |
| + Expect.equals(generated, stylesheet.toString()); |
| +} |
| + |
| +void testMoreDecls() { |
| + final String input = |
| + ".more {\n" + |
| + " color: red;\n" + |
| + " color: #aabbcc; /* test -- 3 */\n" + |
| + " color: blue;\n" + |
| + " background-image: url(http://test.jpeg);\n" + |
| + " background-image: url(\"http://double_quote.html\");\n" + |
| + " background-image: url('http://single_quote.html');\n" + |
| + " color: rgba(10,20,255); <!-- test CDO/CDC -->\n" + |
| + " color: #123aef; /* hex # part integer and part identifier */\n" + |
| + "}\n"; |
| + final String generated = |
| + "\n" + |
| + ".more {\n" + |
| + " color: #ff0000;\n" + |
| + " color: #aabbcc;\n" + |
| + " color: #0ff;\n" + |
| + " background-image: url(http://test.jpeg);\n" + |
| + " background-image: url(http://double_quote.html);\n" + |
| + " background-image: url(http://single_quote.html);\n" + |
| + " color: rgba(10, 20, 255);\n" + |
| + " color: #123aef;\n" + |
| + "}\n"; |
| + |
| + Parser parser = |
| + new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE, input)); |
| + |
| + Stylesheet stylesheet = parser.parse(); |
| + Expect.isNotNull(stylesheet); |
| + |
| + Expect.equals(generated, stylesheet.toString()); |
| +} |
| + |
| +void testIdentifiers() { |
| + final String input = |
| + // Make sure identifiers that could look like hex are handled. |
| + "#da {\n" + |
| + " height: 100px;\n" + |
| + "}\n" + |
| + // Make sure elements that contain a leading dash (negative) are valid. |
| + "#-foo {\n" + |
| + " width: 10px;\n" + |
| + " color: #ff00cc;\n" + |
| + "}\n"; |
| + final String generated = |
| + "\n" + |
| + "#da {\n" + |
| + " height: 100px;\n" + |
| + "}\n" + |
| + "\n" + |
| + "#-foo {\n" + |
| + " width: 10px;\n" + |
| + " color: #ff00cc;\n" + |
| + "}\n"; |
| + |
| + Parser parser = |
| + new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE, input)); |
| + |
| + Stylesheet stylesheet = parser.parse(); |
| + Expect.isNotNull(stylesheet); |
| + |
| + Expect.equals(generated, stylesheet.toString()); |
| +} |
| + |
| +void testComposites() { |
| + final String input = |
| + // Composites |
| + ".xyzzy {\n" + |
| + " border: 10px 80px 90px 100px;\n" + |
| + " width: 99%;\n" + |
| + "}\n" + |
| + "@-webkit-keyframes pulsate {\n" + |
| + " 0% {\n" + |
| + " -webkit-transform: translate3d(0, 0, 0) scale(1.0);\n" + |
| + " }\n" + |
| + "}\n"; |
| + final String generated = |
| + "\n" + |
| + ".xyzzy {\n" + |
| + " border: 10px 80px 90px 100px;\n" + |
| + " width: 99%;\n" + |
| + "}\n" + |
| + "@-webkit-keyframes pulsate {\n" + |
| + " 0% {\n" + |
| + " -webkit-transform: translate3d(0, 0, 0) scale(1.0);\n" + |
| + " }\n" + |
| + "}\n"; |
| + Parser parser = |
| + new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE, input)); |
| + |
| + Stylesheet stylesheet = parser.parse(); |
| + Expect.isNotNull(stylesheet); |
| + |
| + Expect.equals(generated, stylesheet.toString()); |
| +} |
| + |
| +void testNewerCss() { |
| + final String input = |
| + // Newer things in CSS |
| + "@media screen,print {\n" + |
| + " .foobar_screen {\n" + |
| + " width: 10px;\n" + |
| + " }\n" + |
| + "}\n" + |
| + "@page : test {\n" + |
| + " width: 10px;\n" + |
| + "}\n" + |
| + "@page {\n" + |
| + " height: 22px;\n" + |
| + "}\n"; |
| + final String generated = |
| + "@media screen,print {\n" + |
| + "\n" + |
| + ".foobar_screen {\n" + |
| + " width: 10px;\n" + |
| + "}\n" + |
| + "\n" + |
| + "}\n" + |
| + "@page : test {\n" + |
| + " width: 10px;\n" + |
| + "\n" + |
| + "}\n" + |
| + "@page {\n" + |
| + " height: 22px;\n" + |
| + "\n" + |
| + "}\n"; |
| + |
| + Parser parser = |
| + new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE, input)); |
| + |
| + Stylesheet stylesheet = parser.parse(); |
| + Expect.isNotNull(stylesheet); |
| + |
| + Expect.equals(generated, stylesheet.toString()); |
| +} |
| + |
| +void testCssFile() { |
| + final String scss = |
| + "@import 'simple.css'\n" + |
| + "@import \"test.css\" print\n" + |
| + "@import url(test.css) screen, print\n" + |
| + |
| + "div[href^='test'] {\n" + |
| + " height: 10px;\n" + |
| + "}\n" + |
| + |
| + "@-webkit-keyframes pulsate {\n" + |
| + " from {\n" + |
| + " -webkit-transform: translate3d(0, 0, 0) scale(1.0);\n" + |
| + " }\n" + |
| + " 10% {\n" + |
| + " -webkit-transform: translate3d(0, 0, 0) scale(1.0);\n" + |
| + " }\n" + |
| + " 30% {\n" + |
| + " -webkit-transform: translate3d(0, 2, 0) scale(1.0);\n" + |
| + " }\n" + |
| + "}\n" + |
| + |
| + ".foobar {\n" + |
| + " grid-columns: 10px (\"content\" 1fr 10px)[4];\n" + |
| + "}\n"; |
| + |
| + final String generated = |
| + "@import url(simple.css)\n" + |
| + "@import url(test.css) print\n" + |
| + "@import url(test.css) screen,print\n" + |
| + "\n" + |
| + "div[href ^= \"test\"] {\n" + |
| + " height: 10px;\n" + |
| + "}\n" + |
| + "@-webkit-keyframes pulsate {\n" + |
| + " from {\n" + |
| + " -webkit-transform: translate3d(0, 0, 0) scale(1.0);\n" + |
| + " }\n" + |
| + " 10% {\n" + |
| + " -webkit-transform: translate3d(0, 0, 0) scale(1.0);\n" + |
| + " }\n" + |
| + " 30% {\n" + |
| + " -webkit-transform: translate3d(0, 2, 0) scale(1.0);\n" + |
| + " }\n" + |
| + "}\n" + |
| + "\n" + |
| + ".foobar {\n" + |
| + " grid-columns: 10px (\"content\" 1fr 10px) [4];\n" + |
| + "}\n"; |
| + |
| + Parser parser = |
| + new Parser(new SourceFile(SourceFile.IN_MEMORY_FILE, scss)); |
| + |
| + Stylesheet stylesheet = parser.parse(); |
| + Expect.isNotNull(stylesheet); |
| + |
| + Expect.equals(generated, stylesheet.toString()); |
| +} |