| Index: test/mjsunit/regexp.js
|
| diff --git a/test/mjsunit/regexp.js b/test/mjsunit/regexp.js
|
| index 59c3ba8d2874f08dff99445f2de61257a80b4add..4c1d2e315f856ed9e241d52eb2cbcf98e987e2c4 100644
|
| --- a/test/mjsunit/regexp.js
|
| +++ b/test/mjsunit/regexp.js
|
| @@ -110,6 +110,44 @@ assertFalse(re.test("\\]"));
|
| assertFalse(re.test("\x03]")); // I.e., read as \cc
|
|
|
|
|
| +// Test that we handle \s and \S correctly inside some bizarre
|
| +// character classes.
|
| +re = /[\s-:]/;
|
| +assertTrue(re.test('-'));
|
| +assertTrue(re.test(':'));
|
| +assertTrue(re.test(' '));
|
| +assertTrue(re.test('\t'));
|
| +assertTrue(re.test('\n'));
|
| +assertFalse(re.test('a'));
|
| +assertFalse(re.test('Z'));
|
| +
|
| +re = /[\S-:]/;
|
| +assertTrue(re.test('-'));
|
| +assertTrue(re.test(':'));
|
| +assertFalse(re.test(' '));
|
| +assertFalse(re.test('\t'));
|
| +assertFalse(re.test('\n'));
|
| +assertTrue(re.test('a'));
|
| +assertTrue(re.test('Z'));
|
| +
|
| +re = /[^\s-:]/;
|
| +assertFalse(re.test('-'));
|
| +assertFalse(re.test(':'));
|
| +assertFalse(re.test(' '));
|
| +assertFalse(re.test('\t'));
|
| +assertFalse(re.test('\n'));
|
| +assertTrue(re.test('a'));
|
| +assertTrue(re.test('Z'));
|
| +
|
| +re = /[^\S-:]/;
|
| +assertFalse(re.test('-'));
|
| +assertFalse(re.test(':'));
|
| +assertTrue(re.test(' '));
|
| +assertTrue(re.test('\t'));
|
| +assertTrue(re.test('\n'));
|
| +assertFalse(re.test('a'));
|
| +assertFalse(re.test('Z'));
|
| +
|
| re = /[\s]/;
|
| assertFalse(re.test('-'));
|
| assertFalse(re.test(':'));
|
| @@ -164,6 +202,17 @@ assertFalse(re.test('\n'));
|
| assertFalse(re.test('a'));
|
| assertFalse(re.test('Z'));
|
|
|
| +// First - is treated as range operator, second as literal minus.
|
| +// This follows the specification in parsing, but doesn't throw on
|
| +// the \s at the beginning of the range.
|
| +re = /[\s-0-9]/;
|
| +assertTrue(re.test(' '));
|
| +assertTrue(re.test('\xA0'));
|
| +assertTrue(re.test('-'));
|
| +assertTrue(re.test('0'));
|
| +assertTrue(re.test('9'));
|
| +assertFalse(re.test('1'));
|
| +
|
| // Test beginning and end of line assertions with or without the
|
| // multiline flag.
|
| re = /^\d+/;
|
| @@ -610,46 +659,3 @@ assertEquals(["bc"], re.exec("zimzomzumbc"));
|
| assertFalse(re.test("c"));
|
| assertFalse(re.test(""));
|
|
|
| -
|
| -function testInvalidRange(str) {
|
| - try {
|
| - RegExp(str).test("x");
|
| - } catch (e) {
|
| - return;
|
| - }
|
| - assetUnreachable("Allowed invalid range in " + str);
|
| -}
|
| -
|
| -function testValidRange(str) {
|
| - try {
|
| - RegExp(str).test("x");
|
| - } catch (e) {
|
| - assertUnreachable("Shouldn't fail parsing: " + str + ", was: " + e);
|
| - }
|
| -}
|
| -
|
| -testInvalidRange("[\\d-z]");
|
| -testInvalidRange("[z-\\d]");
|
| -testInvalidRange("[\\d-\\d]");
|
| -testInvalidRange("[z-x]"); // Larger value first.
|
| -testInvalidRange("[x-\\d-\\d]");
|
| -
|
| -testValidRange("[x-z]");
|
| -testValidRange("[!--\d]"); // Second "-" is end of range.
|
| -testValidRange("[\d-]");
|
| -testValidRange("[-\d]");
|
| -testValidRange("[-\d-]");
|
| -testValidRange("[^-\d-]");
|
| -testValidRange("[^-\d-]");
|
| -testValidRange("[0-9-\w]");
|
| -
|
| -// Escaped dashes do not count as range operators.
|
| -testValidRange("[\\d\\-z]");
|
| -testValidRange("[z\\-\\d]");
|
| -testValidRange("[\\d\\-\\d]");
|
| -testValidRange("[z\\-x]");
|
| -testValidRange("[x\\-\\d\\-\\d]");
|
| -
|
| -
|
| -
|
| -
|
|
|