summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/regexp_parse/Atom.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/regexp_parse/Atom.js')
-rw-r--r--js/src/jit-test/tests/regexp_parse/Atom.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/regexp_parse/Atom.js b/js/src/jit-test/tests/regexp_parse/Atom.js
new file mode 100644
index 000000000..c9c3ad52d
--- /dev/null
+++ b/js/src/jit-test/tests/regexp_parse/Atom.js
@@ -0,0 +1,54 @@
+if (typeof parseRegExp === 'undefined')
+ quit();
+
+load(libdir + "regexp_parse.js");
+
+test_mix("a", all_flags,
+ Atom("a"));
+test_mix("abc\u3042\u3044\u3046", all_flags,
+ Atom("abc\u3042\u3044\u3046"));
+
+// raw brace
+
+test("{", no_unicode_flags,
+ Atom("{"));
+test("{a", no_unicode_flags,
+ Atom("{a"));
+test("a{b", no_unicode_flags,
+ Atom("a{b"));
+
+test("}", no_unicode_flags,
+ Atom("}"));
+test("}a", no_unicode_flags,
+ Atom("}a"));
+test("a}b", no_unicode_flags,
+ Atom("a}b"));
+
+// raw surrogate pair
+
+test("X\uD83D\uDC38Y", unicode_flags,
+ Text([
+ Atom("X"),
+ Atom("\uD83D\uDC38"),
+ Atom("Y")
+ ]));
+
+test("X\uD83DY", unicode_flags,
+ Alternative([
+ Atom("X"),
+ Alternative([
+ Atom("\uD83D"),
+ NegativeLookahead(CharacterClass([["\uDC00", "\uDFFF"]]))
+ ]),
+ Atom("Y")
+ ]));
+
+test("X\uDC38Y", unicode_flags,
+ Alternative([
+ Atom("X"),
+ Alternative([
+ Assertion("NOT_AFTER_LEAD_SURROGATE"),
+ Atom("\uDC38"),
+ ]),
+ Atom("Y")
+ ]));