diff options
Diffstat (limited to 'js/src/jit-test/tests/regexp_parse/CharacterClass.js')
-rw-r--r-- | js/src/jit-test/tests/regexp_parse/CharacterClass.js | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/regexp_parse/CharacterClass.js b/js/src/jit-test/tests/regexp_parse/CharacterClass.js new file mode 100644 index 000000000..fb7367b1f --- /dev/null +++ b/js/src/jit-test/tests/regexp_parse/CharacterClass.js @@ -0,0 +1,74 @@ +if (typeof parseRegExp === 'undefined') + quit(); + +load(libdir + "regexp_parse.js"); + +test_mix("[]", all_flags, + NegativeCharacterClass([ + ["\u0000", "\uFFFF"] + ])); + +test("[a]", all_flags, + CharacterClass([ + ["a", "a"] + ])); + +test("[abc\u3042\u3044\u3046]", all_flags, + CharacterClass([ + ["a", "a"], + ["b", "b"], + ["c", "c"], + ["\u3042", "\u3042"], + ["\u3044", "\u3044"], + ["\u3046", "\u3046"], + ])); + +test("[a-c\u3042-\u3046]", all_flags, + CharacterClass([ + ["a", "c"], + ["\u3042", "\u3046"] + ])); + +test("[-]", all_flags, + CharacterClass([ + ["-", "-"] + ])); + +// raw surrogate pair + +test("[X\uD83D\uDC38Y]", unicode_flags, + Disjunction([ + CharacterClass([ + ["X", "X"], + ["Y", "Y"], + ]), + Atom("\uD83D\uDC38") + ])); + +test("[X\uD83DY]", unicode_flags, + Disjunction([ + CharacterClass([ + ["X", "X"], + ["Y", "Y"] + ]), + Alternative([ + CharacterClass([ + ["\uD83D", "\uD83D"] + ]), + NegativeLookahead(CharacterClass([["\uDC00", "\uDFFF"]])) + ]) + ])); + +test("[X\uDC38Y]", unicode_flags, + Disjunction([ + CharacterClass([ + ["X", "X"], + ["Y", "Y"] + ]), + Alternative([ + Assertion("NOT_AFTER_LEAD_SURROGATE"), + CharacterClass([ + ["\uDC38", "\uDC38"] + ]) + ]) + ])); |