summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-syntax/anb-serialization.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/css/css-syntax/anb-serialization.html')
-rw-r--r--testing/web-platform/tests/css/css-syntax/anb-serialization.html62
1 files changed, 62 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-syntax/anb-serialization.html b/testing/web-platform/tests/css/css-syntax/anb-serialization.html
new file mode 100644
index 0000000000..787700cebf
--- /dev/null
+++ b/testing/web-platform/tests/css/css-syntax/anb-serialization.html
@@ -0,0 +1,62 @@
+<!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>