| Index: test/mjsunit/regexp.js
|
| ===================================================================
|
| --- test/mjsunit/regexp.js (revision 4511)
|
| +++ test/mjsunit/regexp.js (working copy)
|
| @@ -388,3 +388,99 @@
|
| assertTrue(String(e).indexOf("Stack overflow") >= 0, "overflow");
|
| }
|
|
|
| +
|
| +// Test that compile works on modified objects
|
| +var re = /re+/;
|
| +assertEquals("re+", re.source);
|
| +assertFalse(re.global);
|
| +assertFalse(re.ignoreCase);
|
| +assertFalse(re.multiline);
|
| +assertEquals(0, re.lastIndex);
|
| +
|
| +re.compile("ro+", "gim");
|
| +assertEquals("ro+", re.source);
|
| +assertTrue(re.global);
|
| +assertTrue(re.ignoreCase);
|
| +assertTrue(re.multiline);
|
| +assertEquals(0, re.lastIndex);
|
| +
|
| +re.lastIndex = 42;
|
| +re.someOtherProperty = 42;
|
| +re.someDeletableProperty = 42;
|
| +re[37] = 37;
|
| +re[42] = 42;
|
| +
|
| +re.compile("ra+", "i");
|
| +assertEquals("ra+", re.source);
|
| +assertFalse(re.global);
|
| +assertTrue(re.ignoreCase);
|
| +assertFalse(re.multiline);
|
| +assertEquals(0, re.lastIndex);
|
| +
|
| +assertEquals(42, re.someOtherProperty);
|
| +assertEquals(42, re.someDeletableProperty);
|
| +assertEquals(37, re[37]);
|
| +assertEquals(42, re[42]);
|
| +
|
| +re.lastIndex = -1;
|
| +re.someOtherProperty = 37;
|
| +re[42] = 37;
|
| +assertTrue(delete re[37]);
|
| +assertTrue(delete re.someDeletableProperty);
|
| +re.compile("ri+", "gm");
|
| +
|
| +assertEquals("ri+", re.source);
|
| +assertTrue(re.global);
|
| +assertFalse(re.ignoreCase);
|
| +assertTrue(re.multiline);
|
| +assertEquals(0, re.lastIndex);
|
| +assertEquals(37, re.someOtherProperty);
|
| +assertEquals(37, re[42]);
|
| +
|
| +// Test boundary-checks.
|
| +function assertRegExpTest(re, input, test) {
|
| + assertEquals(test, re.test(input), "test:" + re + ":" + input);
|
| +}
|
| +
|
| +assertRegExpTest(/b\b/, "b", true);
|
| +assertRegExpTest(/b\b$/, "b", true);
|
| +assertRegExpTest(/\bb/, "b", true);
|
| +assertRegExpTest(/^\bb/, "b", true);
|
| +assertRegExpTest(/,\b/, ",", false);
|
| +assertRegExpTest(/,\b$/, ",", false);
|
| +assertRegExpTest(/\b,/, ",", false);
|
| +assertRegExpTest(/^\b,/, ",", false);
|
| +
|
| +assertRegExpTest(/b\B/, "b", false);
|
| +assertRegExpTest(/b\B$/, "b", false);
|
| +assertRegExpTest(/\Bb/, "b", false);
|
| +assertRegExpTest(/^\Bb/, "b", false);
|
| +assertRegExpTest(/,\B/, ",", true);
|
| +assertRegExpTest(/,\B$/, ",", true);
|
| +assertRegExpTest(/\B,/, ",", true);
|
| +assertRegExpTest(/^\B,/, ",", true);
|
| +
|
| +assertRegExpTest(/b\b/, "b,", true);
|
| +assertRegExpTest(/b\b/, "ba", false);
|
| +assertRegExpTest(/b\B/, "b,", false);
|
| +assertRegExpTest(/b\B/, "ba", true);
|
| +
|
| +assertRegExpTest(/b\Bb/, "bb", true);
|
| +assertRegExpTest(/b\bb/, "bb", false);
|
| +
|
| +assertRegExpTest(/b\b[,b]/, "bb", false);
|
| +assertRegExpTest(/b\B[,b]/, "bb", true);
|
| +assertRegExpTest(/b\b[,b]/, "b,", true);
|
| +assertRegExpTest(/b\B[,b]/, "b,", false);
|
| +
|
| +assertRegExpTest(/[,b]\bb/, "bb", false);
|
| +assertRegExpTest(/[,b]\Bb/, "bb", true);
|
| +assertRegExpTest(/[,b]\bb/, ",b", true);
|
| +assertRegExpTest(/[,b]\Bb/, ",b", false);
|
| +
|
| +assertRegExpTest(/[,b]\b[,b]/, "bb", false);
|
| +assertRegExpTest(/[,b]\B[,b]/, "bb", true);
|
| +assertRegExpTest(/[,b]\b[,b]/, ",b", true);
|
| +assertRegExpTest(/[,b]\B[,b]/, ",b", false);
|
| +assertRegExpTest(/[,b]\b[,b]/, "b,", true);
|
| +assertRegExpTest(/[,b]\B[,b]/, "b,", false);
|
|
|