chromium/third_party/blink/web_tests/fast/css/css3-nth-tokens-script.html

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test.js"></script>
<style>
span.c1:nth-of-type(2n -1){ color: red; }
span.c1:nth-of-type(2n){ color: green; }
span.c2:nth-of-type(odd){ color: red; }
span.c2:nth-of-type(even){ color: green; }
span.c3:nth-of-type(n3){ color: red; }
span.c3:nth-of-type(foo){ color: green; }
span.c4:nth-of-type(2n3){ color: red; }
span.c4:nth-of-type(foon + bar ){ color: green; }

</style>

</head>
<body>
<p id="description"></p>
debug("These spans should alternate red and green");
<div id="test1"></div>
debug("These spans should alternate red and green");
<div id="test2"></div>
debug("These spans should be black");
<div id="test3"></div>
debug("These spans should be black");
<div id="test4"></div>
<br>
<script>
var i=1;
for(; i < 5; i++) {
    var str = "";
    var j=1;
    for (; j < 9; j++) {
        str += '<span class="c' + i + '" id="span' + i + j + '"> span </span>';
    }
    document.getElementById("test"+i).innerHTML = str;
}

</script>

<div id="console"></div>
<script>
description('This test passes if the nth-of-type can accept a parameter that is an+b, odd or even. But it does not accept any other parameter.');

el = document.querySelector("span.c1:nth-of-type(2n -1)");
shouldBe("document.defaultView.getComputedStyle(el, null).getPropertyValue('color')", "'rgb(255, 0, 0)'");

el = document.querySelector("span.c1:nth-of-type(2n)");
shouldBe("document.defaultView.getComputedStyle(el, null).getPropertyValue('color')", "'rgb(0, 128, 0)'");

el = document.querySelector("span.c2:nth-of-type(odd)");
shouldBe("document.defaultView.getComputedStyle(el, null).getPropertyValue('color')", "'rgb(255, 0, 0)'");

el = document.querySelector("span.c2:nth-of-type(even)");
shouldBe("document.defaultView.getComputedStyle(el, null).getPropertyValue('color')", "'rgb(0, 128, 0)'");

shouldThrow('document.querySelector("span.c3:nth-of-type(n3)")', '"SyntaxError: Failed to execute \'querySelector\' on \'Document\': \'span.c3:nth-of-type(n3)\' is not a valid selector."');

shouldThrow('document.querySelector("span.c3:nth-of-type(foo)")', '"SyntaxError: Failed to execute \'querySelector\' on \'Document\': \'span.c3:nth-of-type(foo)\' is not a valid selector."');

shouldThrow('document.querySelector("span.c3:nth-of-type(2n3)")', '"SyntaxError: Failed to execute \'querySelector\' on \'Document\': \'span.c3:nth-of-type(2n3)\' is not a valid selector."');

shouldThrow('document.querySelector("span.c3:nth-of-type(foon + bar)")', '"SyntaxError: Failed to execute \'querySelector\' on \'Document\': \'span.c3:nth-of-type(foon + bar)\' is not a valid selector."');
</script>
</body>
</html>