<!doctype html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<style id="style-container">
</style>
</head>
<body>
</body>
<script>
description('Test the parsing of :not(selectorList) for querySelector and style.');

function testInvalidSelector(selectorString) {
    shouldThrowErrorName('document.querySelector(":not(' + selectorString + ')")', 'SyntaxError');

    var styleContainer = document.getElementById('style-container');
    styleContainer.innerHTML = ':not(' + selectorString + ') { }';
    shouldBe("document.getElementById('style-container').sheet.cssRules.length", "0");
    styleContainer.innerHTML = '';
}

var validSelectors = [
    // Basic types.
    "*",
    "foobar",
    "#id",
    ".class",
    ":first-child",
    ":last-child",
    ":visited",

    // Compound selectors.
    "foobar#id.class",
    ".class:not(.notclass)",
    "#id:empty",

    // Complex selectors.
    "a > b",
    "a b",
    "a + b",
    "a ~ b",
    "a + b > c ~ d e + g",

    // Functional pseudo classes.
    ":-webkit-any(.selector,#tama,#hanayo,#midoriko)",
    ":not(:link)",
    ":not(:is(cocoa, cappuccino))",
    ":not(:matches(cocoa, cappuccino))",
    ":nth-child(even of a, b, c)",
];

var invalidSelectors = [
    // Pseudo elements.
    "::first-letter",
    "::first-line",
    "::before",
    "::after",
    ":first-letter",
    ":first-line",
    ":before",
    ":after",

    // Not selectors.
    "",
    "    ",
    ",",

    ".123class",
    "#123id",
    "[]",
    "()",
    ")",
    "{}",
    "}",

    // Empty functional pseudo classes.
    ":not()",
    ":is()",
    ":matches()",
    ":nth-child()",
    ":nth-child(2n of)",

    // Unbalanced parenthesized functional pseudo classes.
    ":not(",
    ":is(",
    ":matches(",
    ":nth-child(2n+1 of",
];

debug("2 :not(valid, invalid) selectors");
for (var i = 0; i < validSelectors.length; ++i) {
    for (var j = 0; j < invalidSelectors.length; ++j) {
        var selectorString = validSelectors[i] + ',' + invalidSelectors[j];
        testInvalidSelector(selectorString);
    }
}

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