blob: eae623d8e2af91d138da93b4802af484eb78f70d [file] [log] [blame]
/*
* Copyright (c) 2014, 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.
*/
/**
* @description
*/
import "dart:html";
import "../../testcommon.dart";
main() {
// do not indent
var style = new Element.html(r'''
<style>
#a:nth-child(1n+0) { color: green; }
#b:nth-child(n+0) { color: green; }
#c:nth-child(n) { color: green; }
#d:nth-child(-n+0) { color: green; }
#e:nth-child(-n) { color: green; }
#f:nth-child(1N+0) { color: green; }
#g:nth-child(N+0) { color: green; }
#h:nth-child(N) { color: green; }
#i:nth-child(-N+0) { color: green; }
#j:nth-child(-N) { color: green; }
#k:nth-child(+ 1n) { color: green; }
#l:nth-child(-1N
-
123 ) { color: green; }
#m:nth-child( N- 123) { color: green; }
#n:nth-child( n +12 3) { color: green; }
#o:nth-child( 23n
+
123 ) { color: green; }
#p:nth-child( 12 n ) { color: green; }
#q:nth-child(+12n-0+1) { color: green; }
#r:nth-child(+12N -- 1) { color: green; }
#s:nth-child(+12 N ) { color: green; }
#t:nth-child(+n+3) { color: green; }
#u:nth-child( +n + 7 ) { color: green; }
#v:nth-child(+ n + 7) { color: green; }
</style>
''', treeSanitizer: new NullTreeSanitizer());
document.head.append(style);
document.body.setInnerHtml(r'''
<p>Test parsing of CSS nth-child tokens.</p>
<p>Rules from the stylesheet:</p>
<pre id="result"></pre>
<p>Expected result:</p>
<pre id="expected">#a:nth-child(n) { color: green; }
#b:nth-child(n) { color: green; }
#c:nth-child(n) { color: green; }
#d:nth-child(-n) { color: green; }
#e:nth-child(-n) { color: green; }
#f:nth-child(n) { color: green; }
#g:nth-child(n) { color: green; }
#h:nth-child(n) { color: green; }
#i:nth-child(-n) { color: green; }
#j:nth-child(-n) { color: green; }
#l:nth-child(-n - 123) { color: green; }
#m:nth-child(n - 123) { color: green; }
#o:nth-child(23n + 123) { color: green; }
#t:nth-child(n + 3) { color: green; }
#u:nth-child(n + 7) { color: green; }
</pre>
''', treeSanitizer: new NullTreeSanitizer());
/** Changes the result text font size. */
runTest()
{
var rules = style.sheet.cssRules;
var text = "";
for (var i = 0; i < rules.length; i++) {
text += rules.item(i).cssText;
text += "\n";
}
document.getElementById("result").append(new Text(text));
String expected = (document.getElementById("expected").firstChild as Text).data;
String actual = (document.getElementById("result").firstChild as Text).data;
// Different browsers may return n or 1n. It's Ok
actual = actual.replaceAll("1n", "n");
shouldBeLikeString(actual, expected);
}
runTest();
}