blob: 35c60289f39686087ecce5544618b9e3a9d2de1a [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, '\\\\') + ')\')');
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>