diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2010-10-21 15:22:38 -0700 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2010-10-21 15:22:38 -0700 |
commit | 3b861db31d1ecc92149cf6b2497b6539276e0f70 (patch) | |
tree | 67c84f64183536213383373804520f84b931d865 /deps/v8/test/mjsunit/regexp.js | |
parent | 2629296c257b6d74e86e9f9139b04ba5e27b68d8 (diff) | |
download | node-new-3b861db31d1ecc92149cf6b2497b6539276e0f70.tar.gz |
Upgrade V8 to 2.5.1
Diffstat (limited to 'deps/v8/test/mjsunit/regexp.js')
-rw-r--r-- | deps/v8/test/mjsunit/regexp.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/regexp.js b/deps/v8/test/mjsunit/regexp.js index 5836ddb7f0..b57b86d2d8 100644 --- a/deps/v8/test/mjsunit/regexp.js +++ b/deps/v8/test/mjsunit/regexp.js @@ -589,3 +589,61 @@ assertEquals(0, desc.value); assertEquals(false, desc.configurable); assertEquals(false, desc.enumerable); assertEquals(true, desc.writable); + + +// Check that end-anchored regexps are optimized correctly. +var re = /(?:a|bc)g$/; +assertTrue(re.test("ag")); +assertTrue(re.test("bcg")); +assertTrue(re.test("abcg")); +assertTrue(re.test("zimbag")); +assertTrue(re.test("zimbcg")); + +assertFalse(re.test("g")); +assertFalse(re.test("")); + +// Global regexp (non-zero start). +var re = /(?:a|bc)g$/g; +assertTrue(re.test("ag")); +re.lastIndex = 1; // Near start of string. +assertTrue(re.test("zimbag")); +re.lastIndex = 6; // At end of string. +assertFalse(re.test("zimbag")); +re.lastIndex = 5; // Near end of string. +assertFalse(re.test("zimbag")); +re.lastIndex = 4; +assertTrue(re.test("zimbag")); + +// Anchored at both ends. +var re = /^(?:a|bc)g$/g; +assertTrue(re.test("ag")); +re.lastIndex = 1; +assertFalse(re.test("ag")); +re.lastIndex = 1; +assertFalse(re.test("zag")); + +// Long max_length of RegExp. +var re = /VeryLongRegExp!{1,1000}$/; +assertTrue(re.test("BahoolaVeryLongRegExp!!!!!!")); +assertFalse(re.test("VeryLongRegExp")); +assertFalse(re.test("!")); + +// End anchor inside disjunction. +var re = /(?:a$|bc$)/; +assertTrue(re.test("a")); +assertTrue(re.test("bc")); +assertTrue(re.test("abc")); +assertTrue(re.test("zimzamzumba")); +assertTrue(re.test("zimzamzumbc")); +assertFalse(re.test("c")); +assertFalse(re.test("")); + +// Only partially anchored. +var re = /(?:a|bc$)/; +assertTrue(re.test("a")); +assertTrue(re.test("bc")); +assertEquals(["a"], re.exec("abc")); +assertEquals(4, re.exec("zimzamzumba").index); +assertEquals(["bc"], re.exec("zimzomzumbc")); +assertFalse(re.test("c")); +assertFalse(re.test("")); |