<!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 :matches(selectorList) for querySelector and style.');

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

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

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

    // Pseudo elements.
    "::first-letter",
    "::first-line",
    "::before",
    "::after",

    // 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(:matches(cocoa, cappuccino))",
    ":nth-child(even of a, b, c)",
];

var invalidSelectors = [
    // Not selectors.
    "",
    "    ",
    ",",

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

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

debug("2 :matches(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>
