<!doctype html><title>An+B Serialization</title><scriptsrc="/resources/testharness.js"></script><scriptsrc="/resources/testharnessreport.js"></script><style>foo{color:blue;}</style><metaname="author"title="Tab Atkins-Bittner"><linkrel=helphref="https://drafts.csswg.org/css-syntax/#serializing-anb"><script>functionroundtripANB(str){construle=document.styleSheets[0].cssRules[0];rule.selectorText="foo";rule.selectorText=`:nth-child(${str})`;// Check for parse error.if(rule.selectorText=="foo")return"parse error";returnrule.selectorText.slice(11,-1);}functiontestANB(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>