<!doctype html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<style>
/* The element count starts at 1, no count <= 1 can match anything */
li:nth-child(0n+0) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(-0n+0) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(0n-0) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(-0n-0) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(0n) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(-0n) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(0) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(-0) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(-1) {
    background-color:rgb(1, 2, 3);
}

/* IntMax (2147483647) and IntMin (-2147483647). The tree is not big enough to match any of those. */
li:nth-child(2147483647n+2147483647) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(2147483647n) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(2147483647) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(-2147483648n-2147483648) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(-2147483648n) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(-2147483648) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(2147483647n-2147483648) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(-2147483648n+2147483647) {
    background-color:rgb(1, 2, 3);
}

/* Values too large/small for int32 */
li:nth-child(2147483648n+2147483648) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(2147483648n) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(2147483648) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(3147483647n+3147483647) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(3147483647n) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(3147483647) {
    background-color:rgb(1, 2, 3);
}

li:nth-child(-2147483649n) {
    background-color:rgb(1, 2, 3);
}
li:nth-child(-2147483649) {
    background-color:rgb(1, 2, 3);
}

</style>
</head>
<body>
<div style="display:none">
    <ul id=targetTree>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</div>
</body>
<script>
description('Test the boundary values of the :nth-child() selector.');

shouldBe('document.querySelectorAll("li:nth-child(0n+0)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(-0n+0)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(0n-0)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(-0n-0)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(-0n)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(0)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(-0)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(-1)").length', '0');

shouldBe('document.querySelectorAll("li:nth-child(2147483647n+2147483647)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(2147483647n)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(2147483647)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(-2147483648n)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(-2147483648)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(2147483647n-2147483648)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(-2147483648n+2147483647)").length', '0');

shouldBe('document.querySelectorAll("li:nth-child(2147483648n+2147483648)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(2147483648n)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(2147483648)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(3147483647n+3147483647)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(3147483647n)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(3147483647)").length', '0');

shouldBe('document.querySelectorAll("li:nth-child(-2147483649n)").length', '0');
shouldBe('document.querySelectorAll("li:nth-child(-2147483649)").length', '0');

var allItems = document.querySelectorAll('li');
var coloredCount = 0;
for (var i = 0; i < allItems.length; ++i) {
    if (getComputedStyle(allItems[i]).backgroundColor === 'rgb(1, 2, 3)')
        coloredCount++;
}

shouldBe('allItems.length', '20');
shouldBe('coloredCount', '0');

</script>
<script src="../../resources/js-test-post.js"></script>
</html>
