Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html>
<html>
<head>
<title>Test for parsing, storage and serialization of CSS @counter-style descriptor values</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=966166">Mozilla Bug 966166</a>
<div id="display"></div>
<pre id="test">
<script type="application/javascript">
var gStyleElement = document.createElement("style");
gStyleElement.setAttribute("type", "text/css");
document.getElementsByTagName("head")[0].appendChild(gStyleElement);
var gSheet = gStyleElement.sheet;
gSheet.insertRule(
"@counter-style test { system: extends decimal }", 0);
var gRule = gSheet.cssRules[0];
function set_rule(ruleText) {
gSheet.deleteRule(0);
gSheet.insertRule("@counter-style test { " + ruleText + " }", 0);
gRule = gSheet.cssRules[0];
}
function run_tests(tests) {
for (var desc in tests) {
var items = tests[desc];
for (var i in items) {
var item = items[i];
var ref = item[0];
if (ref === null) {
ref = gRule[desc];
}
for (var j in item) {
if (item[j] !== null) {
gRule[desc] = item[j];
is(gRule[desc], ref,
"setting '" + item[j] + "' on '" + desc + "'");
}
}
}
}
}
function test_system_dep_desc() {
// for system requires at least one symbol
var oneSymbolTests = [
[null, "", "0"],
["x y", "x y"],
["\"x\"", "'x'"],
["\\-", "\\2D"],
["\\*", "\\2A"],
];
// for system requires at least two symbols
var twoSymbolsTests = [
[null, "", "0", "x", "\"x\""],
["x y", "x y"],
["\"x\" \"y\"", "'x' 'y'"],
];
var info = [
{
system: "cyclic",
base: "symbols: x",
base_tests: {
system: "cyclic",
symbols: "x"
},
tests: {
system: [
[null, "", "symbolic"],
["cyclic", "Cyclic"],
],
symbols: oneSymbolTests
}
},
{
system: "fixed",
base: "symbols: x",
base_tests: {
system: "fixed",
symbols: "x"
},
tests: {
system: [
[null, "", "symbolic"],
["fixed 0"],
["fixed", "FixeD"],
["fixed 1", "FixeD 1"],
["fixed -1"],
[null, "fixed a", "fixed \"0\"", "fixed 0 1"],
],
symbols: oneSymbolTests
}
},
{
system: "symbolic",
base: "symbols: x",
base_tests: {
system: "symbolic",
symbols: "x"
},
tests: {
system: [
[null, "", "cyclic"],
["symbolic", "SymBolic"],
],
symbols: oneSymbolTests
}
},
{
system: "alphabetic",
base: "symbols: x y",
base_tests: {
system: "alphabetic",
symbols: "x y"
},
tests: {
system: [
[null, "", "cyclic"],
["alphabetic", "AlphaBetic"],
],
symbols: twoSymbolsTests
}
},
{
system: "numeric",
base: "symbols: x y",
base_tests: {
system: "numeric",
symbols: "x y"
},
tests: {
system: [
[null, "", "cyclic"],
["numeric", "NumEric"],
],
symbols: twoSymbolsTests
}
},
{
system: "additive",
base: "additive-symbols: 0 x",
base_tests: {
system: "additive",
additiveSymbols: "0 x"
},
tests: {
system: [
[null, "", "cyclic"],
],
additiveSymbols: [
[null, "", "x", "0", "\"x\"", "1 x, 0", "0 x, 1 y"],
["0 x", "x 0"],
["1 y, 0 x", "y 1, 0 x", "1 y, x 0", "y 1, x 0"],
["1 \"0\"", "\"0\" 1", "1 '0'"],
]
}
},
{
system: "extends decimal",
base: "",
base_tests: {
system: "extends decimal",
symbols: "",
additiveSymbols: ""
},
tests: {
system: [
[null, "extends", "fixed", "cyclic", "extends symbols('*')"],
["extends cjk-decimal", "ExTends cjk-decimal", "extends CJK-decimal"],
],
symbols: [
[null, "x", "x y"],
],
additiveSymbols: [
[null, "0 x", "1 y, 0 x"],
]
}
}
];
for (var i = 0; i < info.length; i++) {
var item = info[i];
set_rule("system: " + item.system + "; " + item.base);
for (var desc in item.base_tests) {
is(gRule[desc], item.base_tests[desc],
"checking base value of '" + desc + "' " +
"for system '" + item.system + "'");
}
run_tests(item.tests);
}
}
function test_system_indep_desc() {
var tests = {
name: [
[null, "", "-", " ", "a b"],
[null, "decimal", "none", "Decimal", "NONE"],
["cjk-decimal", "CJK-Decimal", "cjk-Decimal"],
["X"],
["x", "\\78"],
["\\-", "\\2D"],
],
negative: [
[null, "-", "", "0", "a b c"],
["\"-\"", "'-'", "\"\\2D\""],
["\\-", "\\2D"],
["a b"],
["\"(\" \")\"", "'(' ')'"],
],
prefix: [
[null, "0", "-", " ", "a b"],
["a"],
["\"a\""],
],
suffix: [
[null, "0", "-", " ", "a b"],
["a"],
["\"a\""],
],
range: [
["auto", "auTO"],
["infinite infinite", "INFinite inFinite"],
["0 infinite", "0 INFINITE"],
["infinite 100"],
["1 1"],
["0 100", "0 100"],
["0 100, 2 300, -1 1, infinite -100"],
[null, "0", "0 a", "a 0"],
[null, "1 -1", "1 -1, 0 100", "-1 1, 100 0"],
],
pad: [
["0 \"\"", "\"\" 0"],
["1 a", "a 1", "1 a", "\\61 1"],
[null, "0", "\"\"", "0 0", "a a", "0 a a"],
],
fallback: [
[null, "", "-", "0", "a b", "symbols('*')"],
["a"],
["A"],
["decimal", "Decimal"],
],
speakAs: [
[null, "", "-", "0", "a b", "symbols('*')"],
["auto", "AuTo"],
["bullets", "BULLETs"],
["numbers", "NumBers"],
["words", "WordS"],
// Currently spell-out is not supported, so it should be treated
// as an invalid value.
[null, "spell-out", "Spell-Out"],
["a"],
["A"],
["decimal", "Decimal"],
],
};
set_rule("system: extends decimal");
run_tests(tests);
}
test_system_dep_desc();
test_system_indep_desc();
</script>
</pre>
</body>
</html>