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

function testValidLanguageRange(languageRangeString, expectedSerializedLanguageRange) {
    shouldNotThrow('document.querySelector(\':lang(' + languageRangeString.replace(/\\/g, '\\\\') + ')\')');

    var styleContainer = document.getElementById('style-container');
    styleContainer.innerHTML = ':lang(' + languageRangeString + ') { }';
    shouldBe("document.getElementById('style-container').sheet.cssRules.length", "1");
    if (!expectedSerializedLanguageRange)
        expectedSerializedLanguageRange = languageRangeString;
    expectedSerializedLanguageRange = expectedSerializedLanguageRange.replace(/\\/g, '');
    if (expectedSerializedLanguageRange.indexOf('"') != 0)
        expectedSerializedLanguageRange = '"' + expectedSerializedLanguageRange + '"';
    shouldBeEqualToString("document.getElementById('style-container').sheet.cssRules[0].selectorText", ':lang(' + expectedSerializedLanguageRange + ')');
    styleContainer.innerHTML = '';
}

var validLanguageRanges = [

    "e",
    "en",
    "en-",
    "en--",
    "en---",
    "en-fr",
    "en-fr-",
    "en-fr--",
    "en--fr",
    "en---fr",
    "en---fr---",

    "de-DE",
    "de-DE-1996", 
    "de-Latn-DE", 
    "de-Latf-DE", 
    "de-Latn-DE-1996", 
    "de-CH", 
    "it-CH", 
    "fr-CH", 
    "rm-CH",

    '"*-CH"',
    '"*-DE-1996"',
    '"*-br-zh"',
    "id-\\*-sumatra",
    '"*-en-\\*-fr"',
    '"*-en-\\*-\\*"',

    "\\*",
    '"*-\\*"',
    '"*-\\*-\\*"',
    '"*-\\*-\\*"',

    '"ab-\\*"',
    '"*-ab-\\*"',
    '"*-ab-\\*-"',
    '"*-ab-\\*--"',
    '"*-ab-\\*---"',

    '"*-foo-\\:"',
    '"*-foo-\\:"',
    '"*-foo-\\:\\`\\)"',
    '"*-foo-\\:\\*"',

    '"en-\\*"',
    '"fr-*"'
];

debug("valid language ranges");
for (var i = 0; i < validLanguageRanges.length; ++i) {
    var languageRangeString = validLanguageRanges[i];
    testValidLanguageRange(languageRangeString);
    testValidLanguageRange(languageRangeString + "    ", languageRangeString);
}

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