<!DOCTYPE html> <html> <head> <title>Test for parsing, storage and serialization of CSS @counter-style descriptor values</title> <script type="text/javascript" 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 1", symbols: "x" }, tests: { system: [ [null, "", "symbolic"], ["fixed 0"], ["fixed 1", "fixed", "FixeD"], ["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>