Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Side by Side Diff: test/mjsunit/harmony/regexp-dotall.js

Issue 2780173002: [regexp] Add support for dotAll flag (Closed)
Patch Set: Reserve enough space for '.' character range Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/regexp/regexp-parser.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2017 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Flags: --harmony-regexp-dotall
6
7 function toSlowMode(re) {
8 re.exec = (str) => RegExp.prototype.exec.call(re, str);
9 return re;
10 }
11
12 // Construction does not throw.
13 {
14 let re = /./s;
15 re = RegExp(".", "s");
16 re = new RegExp(".", "s");
17 assertThrows(() => new RegExp(".", "wtf"), SyntaxError);
18 }
19
20 // The flags accessors.
21 {
22 let re = /./s;
23 assertEquals("s", re.flags);
24 assertFalse(re.global);
25 assertFalse(re.ignoreCase);
26 assertFalse(re.multiline);
27 assertFalse(re.sticky);
28 assertFalse(re.unicode);
29 assertTrue(re.dotAll);
30
31 re = toSlowMode(/./s);
32 assertEquals("s", re.flags);
33 assertFalse(re.global);
34 assertFalse(re.ignoreCase);
35 assertFalse(re.multiline);
36 assertFalse(re.sticky);
37 assertFalse(re.unicode);
38 assertTrue(re.dotAll);
39
40 re = /./gimyus;
41 assertEquals("gimsuy", re.flags);
42 assertTrue(re.global);
43 assertTrue(re.ignoreCase);
44 assertTrue(re.multiline);
45 assertTrue(re.sticky);
46 assertTrue(re.unicode);
47 assertTrue(re.dotAll);
48
49 re = /./gimyu;
50 assertEquals("gimuy", re.flags);
51 assertTrue(re.global);
52 assertTrue(re.ignoreCase);
53 assertTrue(re.multiline);
54 assertTrue(re.sticky);
55 assertTrue(re.unicode);
56 assertFalse(re.dotAll);
57 }
58
59 // Default '.' behavior.
60 {
61 let re = /^.$/;
62 assertTrue(re.test("a"));
63 assertTrue(re.test("3"));
64 assertTrue(re.test("π"));
65 assertTrue(re.test("\u2027"));
66 assertTrue(re.test("\u0085"));
67 assertTrue(re.test("\v"));
68 assertTrue(re.test("\f"));
69 assertFalse(re.test("\u{10300}")); // Supplementary plane.
70 assertFalse(re.test("\n"));
71 assertFalse(re.test("\r"));
72 assertFalse(re.test("\u2028"));
73 assertFalse(re.test("\u2029"));
mathias 2017/03/29 16:10:42 Let’s test U+180E as well, since it used to be a w
jgruber 2017/03/30 07:32:39 Done. The expectation for U+180E is to match '.' i
74 }
75
76 // Default '.' behavior (unicode).
77 {
78 let re = /^.$/u;
79 assertTrue(re.test("a"));
80 assertTrue(re.test("3"));
81 assertTrue(re.test("π"));
82 assertTrue(re.test("\u2027"));
83 assertTrue(re.test("\u0085"));
84 assertTrue(re.test("\v"));
85 assertTrue(re.test("\f"));
86 assertTrue(re.test("\u{10300}")); // Supplementary plane.
87 assertFalse(re.test("\n"));
88 assertFalse(re.test("\r"));
89 assertFalse(re.test("\u2028"));
90 assertFalse(re.test("\u2029"));
91 assertTrue(re.test("\u{10300}"));
92 }
93
94 // DotAll '.' behavior.
95 {
96 let re = /^.$/s;
97 assertTrue(re.test("a"));
98 assertTrue(re.test("3"));
99 assertTrue(re.test("π"));
100 assertTrue(re.test("\u2027"));
101 assertTrue(re.test("\u0085"));
102 assertTrue(re.test("\v"));
103 assertTrue(re.test("\f"));
104 assertFalse(re.test("\u{10300}")); // Supplementary plane.
105 assertTrue(re.test("\n"));
106 assertTrue(re.test("\r"));
107 assertTrue(re.test("\u2028"));
108 assertTrue(re.test("\u2029"));
109 }
110
111 // DotAll '.' behavior (unicode).
112 {
113 let re = /^.$/su;
114 assertTrue(re.test("a"));
115 assertTrue(re.test("3"));
116 assertTrue(re.test("π"));
117 assertTrue(re.test("\u2027"));
118 assertTrue(re.test("\u0085"));
119 assertTrue(re.test("\v"));
120 assertTrue(re.test("\f"));
121 assertTrue(re.test("\u{10300}")); // Supplementary plane.
122 assertTrue(re.test("\n"));
123 assertTrue(re.test("\r"));
124 assertTrue(re.test("\u2028"));
125 assertTrue(re.test("\u2029"));
126 }
OLDNEW
« no previous file with comments | « src/regexp/regexp-parser.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698