Skip to content

Commit 5509804

Browse files
committed
Make escape tests clearer
1 parent 1fe29c7 commit 5509804

File tree

1 file changed

+30
-25
lines changed

1 file changed

+30
-25
lines changed

test/parser.test.js

+30-25
Original file line numberDiff line numberDiff line change
@@ -32,33 +32,38 @@ describe("parser", function() {
3232
});
3333

3434
it("symbols can be quoted", function() {
35-
assert.deepStrictEqual(parser("\"A\" -> \"a\"."), { productions: [["A", "a"]] });
36-
assert.deepStrictEqual(parser("\"->\" -> ."), { productions: [["->"]] });
35+
assert.deepStrictEqual(parser(`"A" -> "a".`), { productions: [["A", "a"]] });
36+
assert.deepStrictEqual(parser(`"->" -> .`), { productions: [["->"]] });
3737
});
3838

3939
it("quoted symbols can contain escapes", function() {
40-
assert.deepStrictEqual(parser("\"\\\"\" -> ."), { productions: [["\\\""]] });
41-
assert.deepStrictEqual(parser("\"\\\\\" -> ."), { productions: [["\\\\"]] });
42-
assert.deepStrictEqual(parser("\"'\" -> ."), { productions: [["'"]] });
43-
assert.deepStrictEqual(parser("'\\'' -> ."), { productions: [["\\'"]] });
44-
assert.deepStrictEqual(parser("'\"' -> ."), { productions: [["\""]] });
45-
46-
assert.deepStrictEqual(parser("\"\\b\" -> ."), { productions: [["\\b"]] });
47-
assert.deepStrictEqual(parser("\"\\f\" -> ."), { productions: [["\\f"]] });
48-
assert.deepStrictEqual(parser("\"\\n\" -> ."), { productions: [["\\n"]] });
49-
assert.deepStrictEqual(parser("\"\\r\" -> ."), { productions: [["\\r"]] });
50-
assert.deepStrictEqual(parser("\"\\t\" -> ."), { productions: [["\\t"]] });
51-
assert.deepStrictEqual(parser("\"\\v\" -> ."), { productions: [["\\v"]] });
52-
assert.deepStrictEqual(parser("\"\\0\" -> ."), { productions: [["\\0"]] });
53-
54-
assert.deepStrictEqual(parser("\"\\xA9\" -> ."), { productions: [["\\xA9"]] });
55-
assert.deepStrictEqual(parser("\"\\xa9\" -> ."), { productions: [["\\xa9"]] });
56-
57-
assert.deepStrictEqual(parser("\"\\u00A9\" -> ."), { productions: [["\\u00A9"]] });
58-
assert.deepStrictEqual(parser("\"\\u00a9\" -> ."), { productions: [["\\u00a9"]] });
59-
assert.deepStrictEqual(parser("\"\\u2665\" -> ."), { productions: [["\\u2665"]] });
60-
61-
assert.deepStrictEqual(parser("\"\\u{1D306}\" -> ."), { productions: [["\\u{1D306}"]] });
40+
assert.deepStrictEqual(parser(`"\\"" -> .`), { productions: [[`\\"`]] });
41+
assert.deepStrictEqual(parser(`"\\'" -> .`), { productions: [[`\\'`]] });
42+
assert.deepStrictEqual(parser(`'\\'' -> .`), { productions: [[`\\'`]] });
43+
assert.deepStrictEqual(parser(`'\\"' -> .`), { productions: [[`\\"`]] });
44+
assert.deepStrictEqual(parser(`"\\\\" -> .`), { productions: [[`\\\\`]] });
45+
46+
assert.deepStrictEqual(parser(`"\\b" -> .`), { productions: [[`\\b`]] });
47+
assert.deepStrictEqual(parser(`"\\f" -> .`), { productions: [[`\\f`]] });
48+
assert.deepStrictEqual(parser(`"\\n" -> .`), { productions: [[`\\n`]] });
49+
assert.deepStrictEqual(parser(`"\\r" -> .`), { productions: [[`\\r`]] });
50+
assert.deepStrictEqual(parser(`"\\t" -> .`), { productions: [[`\\t`]] });
51+
assert.deepStrictEqual(parser(`"\\v" -> .`), { productions: [[`\\v`]] });
52+
assert.deepStrictEqual(parser(`"\\0" -> .`), { productions: [[`\\0`]] });
53+
54+
assert.deepStrictEqual(parser(`"\\\n" -> .`), { productions: [[`\\\n`]] });
55+
56+
// COPYRIGHT SIGN
57+
assert.deepStrictEqual(parser(`"\\xA9" -> .`), { productions: [[`\\xA9`]] });
58+
assert.deepStrictEqual(parser(`"\\xa9" -> .`), { productions: [[`\\xa9`]] });
59+
assert.deepStrictEqual(parser(`"\\u00A9" -> .`), { productions: [[`\\u00A9`]] });
60+
assert.deepStrictEqual(parser(`"\\u00a9" -> .`), { productions: [[`\\u00a9`]] });
61+
62+
// BLACK HEART SUIT
63+
assert.deepStrictEqual(parser(`"\\u2665" -> .`), { productions: [["\\u2665"]] });
64+
65+
// TETRAGRAM FOR CENTRE
66+
assert.deepStrictEqual(parser(`"\\u{1D306}" -> .`), { productions: [["\\u{1D306}"]] });
6267
});
6368

6469
it("nonterminals don't need to be capitalized", function() {
@@ -108,7 +113,7 @@ describe("parser", function() {
108113
assert.deepStrictEqual(parser("A -> 1 ."), { error: new Error("Parse error") });
109114
});
110115

111-
it("quoted symbols can't contain a newline", function() {
116+
it("quoted symbols can't contain an unescaped newline", function() {
112117
assert.deepStrictEqual(parser("\"A\n\" -> a ."), { error: new Error("Parse error") });
113118
});
114119
});

0 commit comments

Comments
 (0)