158 lines
3.8 KiB
HTML
158 lines
3.8 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
<style id="style-container">
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div id="target"></div>
|
|
<div id="target1"></div>
|
|
<div id="target2"></div>
|
|
<div id="target3"></div>
|
|
<div id="target4"></div>
|
|
</body>
|
|
<script>
|
|
description('Verify selector specifying extended filtering of :lang() pseudo class');
|
|
|
|
function testValidLanguageSelectorOnSingleElement(language, length) {
|
|
var range = language;
|
|
var rangeSubtags = language.split('-');
|
|
var target = document.querySelector('#target').setAttribute('lang', language);
|
|
var currentRange = rangeSubtags[0];
|
|
var suffixRange = '';
|
|
|
|
length = length || 1;
|
|
debug('- ' + language);
|
|
|
|
for (var i = 0; i < rangeSubtags.length; i++){
|
|
shouldBeTrue("document.querySelectorAll(':lang(" + currentRange + ")').length == 1");
|
|
currentRange += '-' + rangeSubtags[i + 1];
|
|
|
|
var asteriskRange = rangeSubtags[0];
|
|
for (var j = 1; j < rangeSubtags.length; j++) {
|
|
if (i == j || i == 0) {
|
|
asteriskRange += '-\\\\*';
|
|
} else {
|
|
asteriskRange += '-' + rangeSubtags[j];
|
|
}
|
|
}
|
|
shouldBeTrue("document.querySelectorAll(':lang(" + asteriskRange + ")').length == 1");
|
|
if (i > 0)
|
|
suffixRange += '-' + rangeSubtags[i];
|
|
}
|
|
shouldBeTrue("document.querySelectorAll(':lang(\"*" + suffixRange + "\")').length == " + length);
|
|
document.querySelector('#target').removeAttribute('lang');
|
|
|
|
debug('');
|
|
}
|
|
|
|
function testValidLanguageSelectorOnMultipleElementsWithFirstAsterisk(languages) {
|
|
for (var i = 0; i < languages.length; i++) {
|
|
var language = languages[i];
|
|
testValidLanguageSelectorOnSingleElement(language, i + 1);
|
|
document.querySelector('#target' + (i + 1)).setAttribute('lang', language);
|
|
}
|
|
|
|
debug('- ' + languages);
|
|
for (var i = 0; i < languages.length; i++) {
|
|
var language = languages[i];
|
|
var ranges = language.split('-');
|
|
var range = '"*';
|
|
for (var j = 1; j < ranges.length; j++) {
|
|
range += '-' + ranges[j];
|
|
}
|
|
range += '"';
|
|
}
|
|
shouldBeTrue("document.querySelectorAll(':lang(" + range + ")').length == " + languages.length);
|
|
debug('');
|
|
}
|
|
|
|
var validLanguagesOnSingleElement = [
|
|
"af-ZA",
|
|
"ar-AE",
|
|
"ar-BH",
|
|
"ar-YE",
|
|
"art-lojban",
|
|
"az-Arab-IR",
|
|
"be-BY",
|
|
"bg-BG",
|
|
"ca-ES",
|
|
"cs-CZ",
|
|
"cy-GB",
|
|
"de-AT",
|
|
"de-CH",
|
|
"de-CH-1996",
|
|
"de-CH-1997",
|
|
"de-DE",
|
|
"de-DE-1996",
|
|
"de-Latn-DE",
|
|
"de-Latf-DE",
|
|
"de-Latn-DE-1996",
|
|
"en-US",
|
|
"en-GB",
|
|
"en-Latn-Brai",
|
|
"es-ES",
|
|
"es-ES-valencia",
|
|
"es-AR",
|
|
"fr-BE",
|
|
"fr-CA",
|
|
"fr-CH",
|
|
"fr-FR",
|
|
"fr-LU",
|
|
"fr-MC",
|
|
"gl-ES",
|
|
"gu-IN",
|
|
"hr-BA",
|
|
"id-ID",
|
|
"i-klingon",
|
|
"ja-JP",
|
|
"ko-KR",
|
|
"lt-LT",
|
|
"mi-NZ",
|
|
"mn-MN",
|
|
"nl-BE",
|
|
"nl-NL",
|
|
"pl-PL",
|
|
"qu-BO",
|
|
"se-FI",
|
|
"se-NO",
|
|
"sgn-BE-FR",
|
|
"sgn-BE-NL",
|
|
"sgn-CH-DE",
|
|
"sr-Latn-RS",
|
|
"sv-SE",
|
|
"syr-SY",
|
|
"tt-RU",
|
|
"uz-UZ",
|
|
"vi-VN",
|
|
"xh-ZA",
|
|
"yue-Hant-HK",
|
|
"zh-yue-Hant-HK",
|
|
"zh-CN",
|
|
"zh-Hant-CN",
|
|
"zh-Hans-CN",
|
|
"zh-Hant"
|
|
];
|
|
|
|
var validLanguagesOnMultipleElements = [
|
|
["de-CH", "it-CH", "fr-CH", "rm-CH"],
|
|
["hi-IN", "gu-IN", "kok-IN"],
|
|
["xa-ZA", "zu-ZA"],
|
|
["se-FI", "sv-FI"],
|
|
["ur-PK"],
|
|
];
|
|
|
|
for (var i = 0; i < validLanguagesOnSingleElement.length; ++i) {
|
|
var lang = validLanguagesOnSingleElement[i];
|
|
testValidLanguageSelectorOnSingleElement(lang);
|
|
}
|
|
|
|
for (var i = 0; i < validLanguagesOnMultipleElements.length; ++i) {
|
|
var lang = validLanguagesOnMultipleElements[i];
|
|
testValidLanguageSelectorOnMultipleElementsWithFirstAsterisk(lang);
|
|
}
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</html>
|