58a016634c
This doesn't include adding partofs; that will have to be done later. Review URL: https://codereview.chromium.org//11358145 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14693 260f80e4-7a28-3924-810f-c04153c831b5
250 lines
6.2 KiB
Dart
250 lines
6.2 KiB
Dart
// 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);
|
|
|
|
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());
|
|
}
|