73 lines
2.3 KiB
HTML
73 lines
2.3 KiB
HTML
<html>
|
|
<head id="head">
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
|
|
description("This tests parsing and re-serialization of :lang CSS selector with string arguments");
|
|
|
|
function parseThenSerializeRule(rule)
|
|
{
|
|
var styleElement = document.getElementById("style");
|
|
var head = document.getElementById("head");
|
|
if (styleElement)
|
|
head.removeChild(styleElement);
|
|
|
|
styleElement = document.createElement("style");
|
|
styleElement.id = "style";
|
|
var head = document.getElementById("head");
|
|
head.appendChild(styleElement);
|
|
|
|
styleElement.appendChild(document.createTextNode(rule));
|
|
return styleElement.sheet.cssRules[0].cssText;
|
|
}
|
|
|
|
function expectedSerializedSelector(selector)
|
|
{
|
|
var args = /\(([^)]+)/.exec(selector);
|
|
if (!args[1])
|
|
return;
|
|
|
|
args = args[1].split(/\s*,\s*/);
|
|
var expected = ':lang(';
|
|
for (var i = 0; i < args.length; ++i) {
|
|
var arg = args[i];
|
|
var hasQuotes = arg.indexOf('"') == 0 && arg.lastIndexOf('"') == arg.length - 1;
|
|
if (!hasQuotes)
|
|
expected += '"';
|
|
expected += args[i];
|
|
if (!hasQuotes)
|
|
expected += '"';
|
|
if (i < args.length - 1)
|
|
expected += ', ';
|
|
}
|
|
expected += ')';
|
|
return expected;
|
|
}
|
|
|
|
function testSelectorRoundTrip(selector)
|
|
{
|
|
shouldBe("parseThenSerializeRule('" + selector + " { }')", "'" + expectedSerializedSelector(selector) + " { }'");
|
|
}
|
|
|
|
testSelectorRoundTrip(':lang("a")');
|
|
testSelectorRoundTrip(':lang("bb", cc)');
|
|
testSelectorRoundTrip(':lang("ddd", eee)');
|
|
testSelectorRoundTrip(':lang("ddd", eee, ffff)');
|
|
testSelectorRoundTrip(':lang("ddd", eee, "ffff")');
|
|
testSelectorRoundTrip(':lang("*-1997")');
|
|
testSelectorRoundTrip(':lang("*-1997", "*-1998")');
|
|
testSelectorRoundTrip(':lang("*-1997", "*-1998", "*-1999")');
|
|
testSelectorRoundTrip(':lang("")');
|
|
|
|
debug('');
|
|
|
|
shouldBe("parseThenSerializeRule(':lang(foo, \"bar\", baz) { }')", "':lang(\"foo\", \"bar\", \"baz\") { }'");
|
|
shouldBe("parseThenSerializeRule(':lang(foo, \"bar\" , baz) { }')", "':lang(\"foo\", \"bar\", \"baz\") { }'");
|
|
shouldBe("parseThenSerializeRule(':lang( foo , \"bar\" , baz ) { }')", "':lang(\"foo\", \"bar\", \"baz\") { }'");
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|