Index: pkg/csslib/test/nested_test.dart |
diff --git a/pkg/csslib/test/nested_test.dart b/pkg/csslib/test/nested_test.dart |
deleted file mode 100644 |
index ef7cb46c4baf4561fdb5be7ee926bfe64926011b..0000000000000000000000000000000000000000 |
--- a/pkg/csslib/test/nested_test.dart |
+++ /dev/null |
@@ -1,643 +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 nested_test; |
- |
-import 'package:unittest/unittest.dart'; |
-import 'testing.dart'; |
- |
-List optionsCss = ['--no-colors', 'memory']; |
- |
-compileAndValidate(String input, String generated) { |
- var errors = []; |
- var stylesheet = compileCss(input, errors: errors, opts: optionsCss); |
- expect(stylesheet != null, true); |
- expect(errors.isEmpty, true, reason: errors.toString()); |
- expect(prettyPrint(stylesheet), generated); |
-} |
- |
-selectorVariations() { |
- final input1 = r'''html { color: red; }'''; |
- final generated1 = r'''html { |
- color: #f00; |
-}'''; |
- compileAndValidate(input1, generated1); |
- |
- final input2 = r'''button { span { height: 200 } }'''; |
- final generated2 = r'''button { |
-} |
-button span { |
- height: 200; |
-}'''; |
- compileAndValidate(input2, generated2); |
- |
- final input3 = r'''div { color: red; } button { span { height: 200 } }'''; |
- final generated3 = r'''div { |
- color: #f00; |
-} |
-button { |
-} |
-button span { |
- height: 200; |
-}'''; |
- compileAndValidate(input3, generated3); |
- |
- final input4 = r'''#header { color: red; h1 { font-size: 26px; } }'''; |
- final generated4 = r'''#header { |
- color: #f00; |
-} |
-#header h1 { |
- font-size: 26px; |
-}'''; |
- compileAndValidate(input4, generated4); |
- |
- final input5 = r''' |
-#header { |
- color: red; |
- h1 { font-size: 26px; } |
- background-color: blue; |
-}'''; |
- final generated5 = r'''#header { |
- color: #f00; |
- background-color: #00f; |
-} |
-#header h1 { |
- font-size: 26px; |
-}'''; |
- compileAndValidate(input5, generated5); |
- |
- final input6 = r'''html { body {color: red; }}'''; |
- final generated6 = r'''html { |
-} |
-html body { |
- color: #f00; |
-}'''; |
- compileAndValidate(input6, generated6); |
- |
- final input7 = r'''html body {color: red; }'''; |
- final generated7 = r'''html body { |
- color: #f00; |
-}'''; |
- compileAndValidate(input7, generated7); |
- |
- final input8 = r''' |
-html, body { color: red; } |
-button { height: 200 } |
-body { width: 300px; }'''; |
- final generated8 = r'''html, body { |
- color: #f00; |
-} |
-button { |
- height: 200; |
-} |
-body { |
- width: 300px; |
-}'''; |
- compileAndValidate(input8, generated8); |
- |
- final input9 = ''' |
-html, body { |
- color: red; |
- button { height: 200 } |
- div { width: 300px; } |
-}'''; |
- final generated9 = r'''html, body { |
- color: #f00; |
-} |
-html button, body button { |
- height: 200; |
-} |
-html div, body div { |
- width: 300px; |
-}'''; |
- compileAndValidate(input9, generated9); |
- |
- final input10 = ''' |
-html { |
- color: red; |
- button, div { height: 200 } |
- body { width: 300px; } |
-}'''; |
- final generated10 = r'''html { |
- color: #f00; |
-} |
-html button, html div { |
- height: 200; |
-} |
-html body { |
- width: 300px; |
-}'''; |
- compileAndValidate(input10, generated10); |
- |
- final input11 = ''' |
-html, body { |
- color: red; |
- button, div { height: 200 } |
- table { width: 300px; } |
-}'''; |
- final generated11 = r'''html, body { |
- color: #f00; |
-} |
-html button, body button, html div, body div { |
- height: 200; |
-} |
-html table, body table { |
- width: 300px; |
-}'''; |
- compileAndValidate(input11, generated11); |
- |
- final input12 = ''' |
-html, body { |
- color: red; |
- button, div { |
- span, a, ul { height: 200 } |
- } |
- table { width: 300px; } |
-}'''; |
- final generated12 = r'''html, body { |
- color: #f00; |
-} |
-''' |
-'html button span, body button span, html div span, body div span, ' |
-'html button a, body button a, html div a, body div a, html button ul, ' |
-r'''body button ul, html div ul, body div ul { |
- height: 200; |
-} |
-html table, body table { |
- width: 300px; |
-}'''; |
- compileAndValidate(input12, generated12); |
- |
- final input13 = r''' |
-#header { |
- div { |
- width: 100px; |
- a { height: 200px; } |
- } |
- color: blue; |
-} |
-span { color: #1f1f1f; } |
-'''; |
- final generated13 = r'''#header { |
- color: #00f; |
-} |
-#header div { |
- width: 100px; |
-} |
-#header div a { |
- height: 200px; |
-} |
-span { |
- color: #1f1f1f; |
-}'''; |
- compileAndValidate(input13, generated13); |
-} |
- |
-void simpleNest() { |
- final errors = []; |
- final input = ''' |
-div span { color: green; } |
-#header { |
- color: red; |
- h1 { |
- font-size: 26px; |
- font-weight: bold; |
- } |
- p { |
- font-size: 12px; |
- a { |
- text-decoration: none; |
- } |
- } |
- background-color: blue; |
-} |
-div > span[attr="foo"] { color: yellow; } |
-'''; |
- |
- final generated = |
-r'''div span { |
- color: #008000; |
-} |
-#header { |
- color: #f00; |
- background-color: #00f; |
-} |
-#header h1 { |
- font-size: 26px; |
- font-weight: bold; |
-} |
-#header p { |
- font-size: 12px; |
-} |
-#header p a { |
- text-decoration: none; |
-} |
-div > span[attr="foo"] { |
- color: #ff0; |
-}'''; |
- compileAndValidate(input, generated); |
-} |
- |
-void complexNest() { |
- final errors = []; |
- final input = ''' |
-@font-face { font-family: arial; } |
-div { color: #f0f0f0; } |
-#header + div { |
- color: url(abc.png); |
- *[attr="bar"] { |
- font-size: 26px; |
- font-weight: bold; |
- } |
- p~ul { |
- font-size: 12px; |
- :not(p) { |
- text-decoration: none; |
- div > span[attr="foo"] { color: yellow; } |
- } |
- } |
- background-color: blue; |
- span { |
- color: red; |
- .one { color: blue; } |
- .two { color: green; } |
- .three { color: yellow; } |
- .four { |
- .four-1 { background-color: #00000f; } |
- .four-2 { background-color: #0000ff; } |
- .four-3 { background-color: #000fff; } |
- .four-4 { |
- height: 44px; |
- .four-4-1 { height: 10px; } |
- .four-4-2 { height: 20px; } |
- .four-4-3 { height: 30px; } |
- width: 44px; |
- } |
- } |
- } |
-} |
-span { color: #1f1f2f; } |
-'''; |
- |
- final generated = r'''@font-face { |
- font-family: arial; |
-} |
-div { |
- color: #f0f0f0; |
-} |
-#header + div { |
- color: url("abc.png"); |
- background-color: #00f; |
-} |
-#header + div *[attr="bar"] { |
- font-size: 26px; |
- font-weight: bold; |
-} |
-#header + div p ~ ul { |
- font-size: 12px; |
-} |
-#header + div p ~ ul :not(p) { |
- text-decoration: none; |
-} |
-#header + div p ~ ul :not(p) div > span[attr="foo"] { |
- color: #ff0; |
-} |
-#header + div span { |
- color: #f00; |
-} |
-#header + div span .one { |
- color: #00f; |
-} |
-#header + div span .two { |
- color: #008000; |
-} |
-#header + div span .three { |
- color: #ff0; |
-} |
-#header + div span .four .four-1 { |
- background-color: #00000f; |
-} |
-#header + div span .four .four-2 { |
- background-color: #00f; |
-} |
-#header + div span .four .four-3 { |
- background-color: #000fff; |
-} |
-#header + div span .four .four-4 { |
- height: 44px; |
- width: 44px; |
-} |
-#header + div span .four .four-4 .four-4-1 { |
- height: 10px; |
-} |
-#header + div span .four .four-4 .four-4-2 { |
- height: 20px; |
-} |
-#header + div span .four .four-4 .four-4-3 { |
- height: 30px; |
-} |
-span { |
- color: #1f1f2f; |
-}'''; |
- |
- compileAndValidate(input, generated); |
-} |
- |
-void mediaNesting() { |
- var errors = []; |
- |
- final input = r''' |
-@media screen and (-webkit-min-device-pixel-ratio:0) { |
- #toggle-all { |
- image: url(test.jpb); |
- div, table { |
- background: none; |
- a { width: 100px; } |
- } |
- color: red; |
- } |
-} |
-'''; |
- final generated = r'''@media screen AND (-webkit-min-device-pixel-ratio:0) { |
-#toggle-all { |
- image: url("test.jpb"); |
- color: #f00; |
-} |
-#toggle-all div, #toggle-all table { |
- background: none; |
-} |
-#toggle-all div a, #toggle-all table a { |
- width: 100px; |
-} |
-}'''; |
- |
- compileAndValidate(input, generated); |
-} |
- |
-void simpleThis() { |
- final errors = []; |
- final input = '''#header { |
- h1 { |
- font-size: 26px; |
- font-weight: bold; |
- } |
- p { font-size: 12px; |
- a { text-decoration: none; |
- &:hover { border-width: 1px } |
- } |
- } |
-} |
-'''; |
- |
- final generated = r'''#header { |
-} |
-#header h1 { |
- font-size: 26px; |
- font-weight: bold; |
-} |
-#header p { |
- font-size: 12px; |
-} |
-#header p a { |
- text-decoration: none; |
-} |
-#header p a:hover { |
- border-width: 1px; |
-}'''; |
- |
- compileAndValidate(input, generated); |
-} |
- |
-void complexThis() { |
- var errors = []; |
- |
- final input1 = r''' |
-.light { |
- .leftCol { |
- .textLink { |
- color: fooL1; |
- &:hover { color: barL1;} |
- } |
- .picLink { |
- background-image: url(/fooL1.jpg); |
- &:hover { background-image: url(/barL1.jpg);} |
- } |
- .textWithIconLink { |
- color: fooL2; |
- background-image: url(/fooL2.jpg); |
- &:hover { color: barL2; background-image: url(/barL2.jpg);} |
- } |
- } |
-}'''; |
- |
- final generated1 = r'''.light { |
-} |
-.light .leftCol .textLink { |
- color: fooL1; |
-} |
-.light .leftCol .textLink:hover { |
- color: barL1; |
-} |
-.light .leftCol .picLink { |
- background-image: url("/fooL1.jpg"); |
-} |
-.light .leftCol .picLink:hover { |
- background-image: url("/barL1.jpg"); |
-} |
-.light .leftCol .textWithIconLink { |
- color: fooL2; |
- background-image: url("/fooL2.jpg"); |
-} |
-.light .leftCol .textWithIconLink:hover { |
- color: barL2; |
- background-image: url("/barL2.jpg"); |
-}'''; |
- |
- compileAndValidate(input1, generated1); |
- |
- final input2 = r''' |
-.textLink { |
- .light .leftCol & { |
- color: fooL1; |
- &:hover { color: barL1; } |
- } |
- .light .rightCol & { |
- color: fooL3; |
- &:hover { color: barL3; } |
- } |
-}'''; |
- |
- final generated2 = r''' |
-.textLink { |
-} |
-.light .leftCol .textLink { |
- color: fooL1; |
-} |
-.light .leftCol .textLink:hover { |
- color: barL1; |
-} |
-.light .rightCol .textLink { |
- color: fooL3; |
-} |
-.light .rightCol .textLink:hover { |
- color: barL3; |
-}'''; |
- |
- compileAndValidate(input2, generated2); |
-} |
- |
-variationsThis() { |
- var errors = []; |
- |
- final input1 = r''' |
-.textLink { |
- a { |
- light .leftCol & { |
- color: red; |
- } |
- } |
-}'''; |
- final generated1 = r'''.textLink { |
-} |
-light .leftCol .textLink a { |
- color: #f00; |
-}'''; |
- |
- compileAndValidate(input1, generated1); |
- |
- final input2 = r'''.textLink { |
- a { |
- & light .leftCol & { |
- color: red; |
- } |
- } |
-}'''; |
- final generated2 = r'''.textLink { |
-} |
-.textLink a light .leftCol .textLink a { |
- color: #f00; |
-}'''; |
- compileAndValidate(input2, generated2); |
- |
- final input3 = r''' |
-.textLink { |
- a { |
- & light .leftCol { color: red; } |
- } |
-}'''; |
- final generated3 = r'''.textLink { |
-} |
-.textLink a light .leftCol { |
- color: #f00; |
-}'''; |
- compileAndValidate(input3, generated3); |
- |
- final input4 = r''' |
-.textLink { |
- a { |
- & light .leftCol { color: red; } |
- &:hover { width: 100px; } |
- } |
-}'''; |
- final generated4 = r'''.textLink { |
-} |
-.textLink a light .leftCol { |
- color: #f00; |
-} |
-.textLink a:hover { |
- width: 100px; |
-}'''; |
- compileAndValidate(input4, generated4); |
- |
- final input5 = r'''.textLink { a { &:hover { color: red; } } }'''; |
- final generated5 = r'''.textLink { |
-} |
-.textLink a:hover { |
- color: #f00; |
-}'''; |
- |
- compileAndValidate(input5, generated5); |
- |
- final input6 = r'''.textLink { &:hover { color: red; } }'''; |
- final generated6 = r'''.textLink { |
-} |
-.textLink:hover { |
- color: #f00; |
-}'''; |
- compileAndValidate(input6, generated6); |
- |
- final input7 = r'''.textLink { a { & + & { color: red; } } }'''; |
- final generated7 = r'''.textLink { |
-} |
-.textLink a + .textLink a { |
- color: #f00; |
-}'''; |
- compileAndValidate(input7, generated7); |
- |
- final input8 = r'''.textLink { a { & { color: red; } } }'''; |
- final generated8 = r'''.textLink { |
-} |
-.textLink a { |
- color: #f00; |
-}'''; |
- compileAndValidate(input8, generated8); |
- |
- final input9 = r'''.textLink { a { & ~ & { color: red; } } }'''; |
- final generated9 = r'''.textLink { |
-} |
-.textLink a ~ .textLink a { |
- color: #f00; |
-}'''; |
- compileAndValidate(input9, generated9); |
- |
- final input10 = r'''.textLink { a { & & { color: red; } } }'''; |
- final generated10 = r'''.textLink { |
-} |
-.textLink a .textLink a { |
- color: #f00; |
-}'''; |
- compileAndValidate(input10, generated10); |
-} |
- |
-thisCombinator() { |
- var errors = []; |
- var input = r''' |
-.btn { |
- color: red; |
-} |
-.btn + .btn { |
- margin-left: 5px; |
-} |
-input.second { |
- & + label { |
- color: blue; |
- } |
-} |
-'''; |
- |
- var generated = r'''.btn { |
- color: #f00; |
-} |
-.btn + .btn { |
- margin-left: 5px; |
-} |
-input.second { |
-} |
-input.second + label { |
- color: #00f; |
-}'''; |
- |
- compileAndValidate(input, generated); |
-} |
- |
-main() { |
- test('Selector and Nested Variations', selectorVariations); |
- test('Simple nesting', simpleNest); |
- test('Complex nesting', complexNest); |
- test('@media nesting', mediaNesting); |
- test('Simple &', simpleThis); |
- test("Variations &", variationsThis); |
- test('Complex &', complexThis); |
- test('& with + selector', thisCombinator); |
-} |