| Index: test/mjsunit/regexp.js
|
| diff --git a/test/mjsunit/regexp.js b/test/mjsunit/regexp.js
|
| index b57b86d2d88bbf2a882e0116e3c8be38b13f3cd7..59c3ba8d2874f08dff99445f2de61257a80b4add 100644
|
| --- a/test/mjsunit/regexp.js
|
| +++ b/test/mjsunit/regexp.js
|
| @@ -110,44 +110,6 @@ 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(':'));
|
| @@ -647,3 +609,47 @@ assertEquals(4, re.exec("zimzamzumba").index);
|
| 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]");
|
| +
|
| +
|
| +
|
| +
|
|
|