summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/regexp_parse/CharacterClass.js
blob: fb7367b1fe09c5497b0f6777553868c06e903325 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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"]
             ])
         ])
     ]));