gecko-dev/testing/web-platform/tests/css/css-syntax/anb-serialization.html
Tab Atkins Jr 5bdc1c8f24 Bug 1523562 [wpt PR 15059] - An+B Serialization, a=testonly
Automatic update from web-platform-tests
An+B Serialization

Tests <https://github.com/w3c/csswg-drafts/issues/1504>
--
Rename css/anb-serialization.html to css/css-syntax/anb-serialization.html
--
Merge pull request #15059 from web-platform-tests/tabatkins-patch-1

An+B Serialization
--

wpt-commits: 895a2771e79a635536be7bddbfe5f4db516c148f, fb10aa61eabc058334d03c29213783cca72131e9, 40934b05952574b2b5eeb98d4352f2994ef541dd
wpt-pr: 15059
2019-02-07 21:51:12 +00:00

62 lines
1.4 KiB
HTML

<!doctype html>
<title>An+B Serialization</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
foo { color: blue; }
</style>
<meta name="author" title="Tab Atkins-Bittner">
<link rel=help href="https://drafts.csswg.org/css-syntax/#serializing-anb">
<script>
function roundtripANB(str) {
const rule = document.styleSheets[0].cssRules[0];
rule.selectorText = "foo";
rule.selectorText = `:nth-child(${str})`;
// Check for parse error.
if(rule.selectorText == "foo") return "parse error";
return rule.selectorText.slice(11, -1);
}
function testANB(input, expected) {
test(()=>{
assert_equals(roundtripANB(input), expected);
}, `"${input}" becomes "${expected}"`);
}
/* A is 0, or omitted */
testANB("1", "1");
testANB("+1", "1");
testANB("-1", "-1");
testANB("0n + 0", "0");
testANB("0n + 1", "1");
testANB("0n - 1", "-1");
/* A is 1 */
testANB("1n", "n");
testANB("1n - 0", "n");
testANB("1n + 1", "n+1");
testANB("1n - 1", "n-1");
/* A is -1 */
testANB("-1n", "-n");
testANB("-1n - 0", "-n");
testANB("-1n + 1", "-n+1");
testANB("-1n - 1", "-n-1");
/* A is implied via + or - */
testANB("+n+1", "n+1");
testANB("-n-1", "-n-1");
/* B is 0 */
testANB("n + 0", "n");
testANB("n - 0", "n");
/* A & B both nonzero */
testANB("2n + 2", "2n+2");
testANB("-2n - 2", "-2n-2");
</script>