<!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 testValidSelector(selectorString, expectedSerializedSelector) {
    shouldNotThrow('document.querySelector(":matches(' + selectorString.replace(/\\/g, '\\\\') + ')")');

    var styleContainer = document.getElementById('style-container');
    styleContainer.innerHTML = ':matches(' + selectorString + ') { }';
    shouldBe("document.getElementById('style-container').sheet.cssRules.length", "1");
    if (!expectedSerializedSelector)
        expectedSerializedSelector = selectorString;
    shouldBeEqualToString("document.getElementById('style-container').sheet.cssRules[0].selectorText", ':matches(' + expectedSerializedSelector + ')');
    styleContainer.innerHTML = '';
}

debug("3 valid selectors");

var validSelectorsPart2 = [
    // Basic types.
    "foobar",
    ".class",
    ":last-child",

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

    // Compound selectors.
    "foobar#id.class",
    "#id:empty",

    // Complex selectors.
    "a b",
    "a ~ b",

    // Functional pseudo classes.
    ":-webkit-any(.selector, #tama, #hanayo, #midoriko)",
    ":nth-child(2n of a, b, c)",
];

/* Try all combinations, each value is unique to the others. */
for (var i = 0; i < validSelectorsPart2.length; ++i) {
    for (var j = i; j < validSelectorsPart2.length; ++j) {
        for (var k = j; k < validSelectorsPart2.length; ++k) {
            var selectorString = validSelectorsPart2[i] + ', ' + validSelectorsPart2[j] + ', ' + validSelectorsPart2[k];
            testValidSelector(selectorString);
            testValidSelector(selectorString + "    ", selectorString);
        }
    }
}

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