Index: tests/corelib_strong/regexp/regexp_test.dart |
diff --git a/tests/corelib_strong/regexp/regexp_test.dart b/tests/corelib_strong/regexp/regexp_test.dart |
index 60483ba545934d06b0a84dd6c19aa45404d6bc38..2fdd4149108712d972718572d1f2f5f7bef19c8d 100644 |
--- a/tests/corelib_strong/regexp/regexp_test.dart |
+++ b/tests/corelib_strong/regexp/regexp_test.dart |
@@ -50,10 +50,9 @@ void main() { |
assertEquals(re.allMatches(s).length, 1); |
assertEquals(re.stringMatch(s), new String.fromCharCode(0)); |
- final _vmFrame = new RegExp( |
- r'^#\d+\s+(\S.*) \((.+?):(\d+)(?::(\d+))?\)$'); |
+ final _vmFrame = new RegExp(r'^#\d+\s+(\S.*) \((.+?):(\d+)(?::(\d+))?\)$'); |
final _traceLine = |
- "#0 Trace.Trace.parse (package:stack_trace/src/trace.dart:130:7)"; |
+ "#0 Trace.Trace.parse (package:stack_trace/src/trace.dart:130:7)"; |
Expect.equals(_vmFrame.firstMatch(_traceLine).group(0), _traceLine); |
// Test the UTF16 case insensitive comparison. |
@@ -111,11 +110,11 @@ void main() { |
// Some tests from the Mozilla tests, where our behavior used to differ |
// from SpiderMonkey. |
// From ecma_3/RegExp/regress-334158.js |
- assertTrue( "\x01" .contains(new RegExp(r"\ca"))); |
- assertFalse( "\\ca" .contains(new RegExp(r"\ca"))); |
- assertFalse( "ca" .contains(new RegExp(r"\ca"))); |
- assertTrue( "\\ca" .contains(new RegExp(r"\c[a/]"))); |
- assertTrue( "\\c/" .contains(new RegExp(r"\c[a/]"))); |
+ assertTrue("\x01".contains(new RegExp(r"\ca"))); |
+ assertFalse("\\ca".contains(new RegExp(r"\ca"))); |
+ assertFalse("ca".contains(new RegExp(r"\ca"))); |
+ assertTrue("\\ca".contains(new RegExp(r"\c[a/]"))); |
+ assertTrue("\\c/".contains(new RegExp(r"\c[a/]"))); |
// Test \c in character class |
re = r"^[\cM]$"; |
@@ -123,13 +122,13 @@ void main() { |
assertFalse("M".contains(new RegExp(re))); |
assertFalse("c".contains(new RegExp(re))); |
assertFalse("\\".contains(new RegExp(re))); |
- assertFalse("\x03".contains(new RegExp(re))); // I.e., read as \cc |
+ assertFalse("\x03".contains(new RegExp(re))); // I.e., read as \cc |
re = r"^[\c]]$"; |
assertTrue("c]".contains(new RegExp(re))); |
assertTrue("\\]".contains(new RegExp(re))); |
- assertFalse("\x1d".contains(new RegExp(re))); // ']' & 0x1f |
- assertFalse("\x03]".contains(new RegExp(re))); // I.e., read as \cc |
+ assertFalse("\x1d".contains(new RegExp(re))); // ']' & 0x1f |
+ assertFalse("\x03]".contains(new RegExp(re))); // I.e., read as \cc |
// Digit control characters are masked in character classes. |
re = r"^[\c1]$"; |
@@ -145,7 +144,7 @@ void main() { |
assertFalse("c".contains(new RegExp(re))); |
assertFalse("_".contains(new RegExp(re))); |
- re = r"^[\c$]$"; // Other characters are interpreted literally. |
+ re = r"^[\c$]$"; // Other characters are interpreted literally. |
assertFalse("\x04".contains(new RegExp(re))); |
assertTrue("\\".contains(new RegExp(re))); |
assertTrue("c".contains(new RegExp(re))); |
@@ -284,8 +283,7 @@ void main() { |
re = new RegExp(r"^(.*)", multiLine: true); |
assertEquals(3, re.allMatches("a\n\rb").length); |
assertEquals("*a\n*b\r*c\n*\r*d\r*\n*e", |
- "a\nb\rc\n\rd\r\ne".replaceAllMapped( |
- re, (Match m) => "*${m.group(1)}")); |
+ "a\nb\rc\n\rd\r\ne".replaceAllMapped(re, (Match m) => "*${m.group(1)}")); |
// Test that empty matches advance one character |
re = new RegExp(""); |
@@ -294,8 +292,8 @@ void main() { |
// Check for lazy RegExp literal creation |
lazyLiteral(doit) { |
- if (doit) return "".replaceAll( |
- new RegExp(r"foo(", caseSensitive: false), ""); |
+ if (doit) |
+ return "".replaceAll(new RegExp(r"foo(", caseSensitive: false), ""); |
return true; |
} |
@@ -304,12 +302,11 @@ void main() { |
// Check $01 and $10 |
re = new RegExp("(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)"); |
- assertEquals("t", "123456789t".replaceAllMapped( |
- re, (Match m) => m.group(10))); |
- assertEquals("15", "123456789t".replaceAllMapped( |
- re, (Match m) => "${m.group(1)}5")); |
- assertEquals("1", "123456789t".replaceAllMapped( |
- re, (Match m) => m.group(1))); |
+ assertEquals( |
+ "t", "123456789t".replaceAllMapped(re, (Match m) => m.group(10))); |
+ assertEquals( |
+ "15", "123456789t".replaceAllMapped(re, (Match m) => "${m.group(1)}5")); |
+ assertEquals("1", "123456789t".replaceAllMapped(re, (Match m) => m.group(1))); |
assertFalse("football".contains(new RegExp(r"()foo$\1")), "football1"); |
assertFalse("football".contains(new RegExp(r"foo$(?=ball)")), "football2"); |
@@ -331,26 +328,32 @@ void main() { |
// Back-reference, ignore case: |
// ASCII |
- assertEquals("a", new RegExp(r"x(a)\1x", caseSensitive: false) |
- .firstMatch("xaAx").group(1), "backref-ASCII"); |
- assertFalse("xaaaaa".contains(new RegExp(r"x(...)\1", |
- caseSensitive: false)), |
+ assertEquals( |
+ "a", |
+ new RegExp(r"x(a)\1x", caseSensitive: false).firstMatch("xaAx").group(1), |
+ "backref-ASCII"); |
+ assertFalse("xaaaaa".contains(new RegExp(r"x(...)\1", caseSensitive: false)), |
"backref-ASCII-short"); |
assertTrue("xx".contains(new RegExp(r"x((?:))\1\1x", caseSensitive: false)), |
"backref-ASCII-empty"); |
- assertTrue("xabcx".contains( |
- new RegExp(r"x(?:...|(...))\1x", caseSensitive: false)), |
+ assertTrue( |
+ "xabcx".contains(new RegExp(r"x(?:...|(...))\1x", caseSensitive: false)), |
"backref-ASCII-uncaptured"); |
- assertTrue("xabcABCx".contains( |
- new RegExp(r"x(?:...|(...))\1x", caseSensitive: false)), |
+ assertTrue( |
+ "xabcABCx" |
+ .contains(new RegExp(r"x(?:...|(...))\1x", caseSensitive: false)), |
"backref-ASCII-backtrack"); |
- assertEquals("aBc", new RegExp(r"x(...)\1\1x", caseSensitive: false) |
- .firstMatch("xaBcAbCABCx").group(1), "backref-ASCII-twice"); |
+ assertEquals( |
+ "aBc", |
+ new RegExp(r"x(...)\1\1x", caseSensitive: false) |
+ .firstMatch("xaBcAbCABCx") |
+ .group(1), |
+ "backref-ASCII-twice"); |
for (var i = 0; i < 128; i++) { |
var testName = "backref-ASCII-char-$i,,${i^0x20}"; |
var test = new String.fromCharCodes([i, i ^ 0x20]) |
- .contains(new RegExp(r"^(.)\1$", caseSensitive: false)); |
+ .contains(new RegExp(r"^(.)\1$", caseSensitive: false)); |
if (('A'.codeUnitAt(0) <= i && i <= 'Z'.codeUnitAt(0)) || |
('a'.codeUnitAt(0) <= i && i <= 'z'.codeUnitAt(0))) { |
assertTrue(test, testName); |
@@ -359,48 +362,46 @@ void main() { |
} |
} |
- assertFalse('foo'.contains(new RegExp(r"f(o)$\1")), |
- "backref detects at_end"); |
+ assertFalse('foo'.contains(new RegExp(r"f(o)$\1")), "backref detects at_end"); |
// Check decimal escapes doesn't overflow. |
// (Note: \214 is interpreted as octal). |
- assertEquals("\x8c7483648", new RegExp(r"\2147483648") |
- .firstMatch("\x8c7483648").group(0), "Overflow decimal escape"); |
+ assertEquals( |
+ "\x8c7483648", |
+ new RegExp(r"\2147483648").firstMatch("\x8c7483648").group(0), |
+ "Overflow decimal escape"); |
// Check numbers in quantifiers doesn't overflow and doesn't throw on |
// too large numbers. |
- assertFalse('b'.contains( |
- new RegExp(r"a{111111111111111111111111111111111111111111111}")), |
- "overlarge1"); |
- assertFalse('b'.contains( |
- new RegExp(r"a{999999999999999999999999999999999999999999999}")), |
- "overlarge2"); |
- assertFalse('b'.contains( |
- new RegExp(r"a{1,111111111111111111111111111111111111111111111}")), |
- "overlarge3"); |
- assertFalse('b'.contains( |
- new RegExp(r"a{1,999999999999999999999999999999999999999999999}")), |
- "overlarge4"); |
- assertFalse('b'.contains(new RegExp(r"a{2147483648}")), |
- "overlarge5"); |
- assertFalse('b'.contains(new RegExp(r"a{21474836471}")), |
- "overlarge6"); |
- assertFalse('b'.contains(new RegExp(r"a{1,2147483648}")), |
- "overlarge7"); |
- assertFalse('b'.contains(new RegExp(r"a{1,21474836471}")), |
- "overlarge8"); |
- assertFalse('b'.contains(new RegExp(r"a{2147483648,2147483648}")), |
- "overlarge9"); |
- assertFalse('b'.contains(new RegExp(r"a{21474836471,21474836471}")), |
- "overlarge10"); |
- assertFalse('b'.contains(new RegExp(r"a{2147483647}")), |
- "overlarge11"); |
- assertFalse('b'.contains(new RegExp(r"a{1,2147483647}")), |
- "overlarge12"); |
- assertTrue('a'.contains(new RegExp(r"a{1,2147483647}")), |
- "overlarge13"); |
- assertFalse('a'.contains(new RegExp(r"a{2147483647,2147483647}")), |
- "overlarge14"); |
+ assertFalse( |
+ 'b'.contains( |
+ new RegExp(r"a{111111111111111111111111111111111111111111111}")), |
+ "overlarge1"); |
+ assertFalse( |
+ 'b'.contains( |
+ new RegExp(r"a{999999999999999999999999999999999999999999999}")), |
+ "overlarge2"); |
+ assertFalse( |
+ 'b'.contains( |
+ new RegExp(r"a{1,111111111111111111111111111111111111111111111}")), |
+ "overlarge3"); |
+ assertFalse( |
+ 'b'.contains( |
+ new RegExp(r"a{1,999999999999999999999999999999999999999999999}")), |
+ "overlarge4"); |
+ assertFalse('b'.contains(new RegExp(r"a{2147483648}")), "overlarge5"); |
+ assertFalse('b'.contains(new RegExp(r"a{21474836471}")), "overlarge6"); |
+ assertFalse('b'.contains(new RegExp(r"a{1,2147483648}")), "overlarge7"); |
+ assertFalse('b'.contains(new RegExp(r"a{1,21474836471}")), "overlarge8"); |
+ assertFalse( |
+ 'b'.contains(new RegExp(r"a{2147483648,2147483648}")), "overlarge9"); |
+ assertFalse( |
+ 'b'.contains(new RegExp(r"a{21474836471,21474836471}")), "overlarge10"); |
+ assertFalse('b'.contains(new RegExp(r"a{2147483647}")), "overlarge11"); |
+ assertFalse('b'.contains(new RegExp(r"a{1,2147483647}")), "overlarge12"); |
+ assertTrue('a'.contains(new RegExp(r"a{1,2147483647}")), "overlarge13"); |
+ assertFalse( |
+ 'a'.contains(new RegExp(r"a{2147483647,2147483647}")), "overlarge14"); |
// Check that we don't read past the end of the string. |
assertFalse('b'.contains(new RegExp(r"f"))); |
@@ -424,21 +425,25 @@ void main() { |
// Test that merging of quick test masks gets it right. |
assertFalse('x7%%y'.contains(new RegExp(r"x([0-7]%%x|[0-6]%%y)")), 'qt'); |
- assertFalse('xy7%%%y'.contains( |
- new RegExp(r"()x\1(y([0-7]%%%x|[0-6]%%%y)|dkjasldkas)")), 'qt2'); |
- assertFalse('xy%%%y'.contains( |
- new RegExp(r"()x\1(y([0-7]%%%x|[0-6]%%%y)|dkjasldkas)")), 'qt3'); |
- assertFalse('xy7%%%y'.contains( |
- new RegExp(r"()x\1y([0-7]%%%x|[0-6]%%%y)")), 'qt4'); |
- assertFalse('xy%%%y'.contains( |
- new RegExp(r"()x\1(y([0-7]%%%x|[0-6]%%%y)|dkjasldkas)")), 'qt5'); |
- assertFalse('xy7%%%y'.contains( |
- new RegExp(r"()x\1y([0-7]%%%x|[0-6]%%%y)")), 'qt6'); |
- assertFalse('xy7%%%y'.contains( |
- new RegExp(r"xy([0-7]%%%x|[0-6]%%%y)")), 'qt7'); |
- assertFalse('x7%%%y'.contains(new RegExp(r"x([0-7]%%%x|[0-6]%%%y)")), |
- 'qt8'); |
- |
+ assertFalse( |
+ 'xy7%%%y' |
+ .contains(new RegExp(r"()x\1(y([0-7]%%%x|[0-6]%%%y)|dkjasldkas)")), |
+ 'qt2'); |
+ assertFalse( |
+ 'xy%%%y' |
+ .contains(new RegExp(r"()x\1(y([0-7]%%%x|[0-6]%%%y)|dkjasldkas)")), |
+ 'qt3'); |
+ assertFalse( |
+ 'xy7%%%y'.contains(new RegExp(r"()x\1y([0-7]%%%x|[0-6]%%%y)")), 'qt4'); |
+ assertFalse( |
+ 'xy%%%y' |
+ .contains(new RegExp(r"()x\1(y([0-7]%%%x|[0-6]%%%y)|dkjasldkas)")), |
+ 'qt5'); |
+ assertFalse( |
+ 'xy7%%%y'.contains(new RegExp(r"()x\1y([0-7]%%%x|[0-6]%%%y)")), 'qt6'); |
+ assertFalse( |
+ 'xy7%%%y'.contains(new RegExp(r"xy([0-7]%%%x|[0-6]%%%y)")), 'qt7'); |
+ assertFalse('x7%%%y'.contains(new RegExp(r"x([0-7]%%%x|[0-6]%%%y)")), 'qt8'); |
// Don't hang on this one. |
"".contains(new RegExp(r"[^\xfe-\xff]*")); |
@@ -456,11 +461,10 @@ void main() { |
assertTrue(e.toString().indexOf("Stack overflow") >= 0, "overflow"); |
} |
- |
// Test boundary-checks. |
void assertRegExpTest(re, input, test) { |
- assertEquals(test, input.contains( |
- new RegExp(re)), "test:" + re + ":" + input); |
+ assertEquals( |
+ test, input.contains(new RegExp(re)), "test:" + re + ":" + input); |
} |
assertRegExpTest(r"b\b", "b", true); |