blob: 7db58a42ee7fa1d547cc5d6c5d1c7349009996a0 [file] [log] [blame]
<!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, '\\\\') + ')")', '"Error: SyntaxError: DOM Exception 12"');
var styleContainer = document.getElementById('style-container');
styleContainer.innerHTML = ':lang(' + languageRangeString + ') { }';
shouldBe("document.getElementById('style-container').sheet.cssRules.length", "1");
if (!expectedSerializedLanguageRange)
expectedSerializedLanguageRange = languageRangeString;
shouldBeEqualToString("document.getElementById('style-container').sheet.cssRules[0].selectorText", ':lang(' + expectedSerializedLanguageRange.replace(/\\/g, '') + ')');
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>