Index: test/mjsunit/string-lastindexof.js |
diff --git a/test/mjsunit/string-lastindexof.js b/test/mjsunit/string-lastindexof.js |
index bf46666ee0741ddf43eabca168a79a037453c8d9..27378f7895c8d399ac9460a606ef567c02118d78 100644 |
--- a/test/mjsunit/string-lastindexof.js |
+++ b/test/mjsunit/string-lastindexof.js |
@@ -27,25 +27,62 @@ |
var s = "test test test"; |
-assertEquals(5, s.lastIndexOf("test", 5)); |
-assertEquals(5, s.lastIndexOf("test", 6)); |
-assertEquals(0, s.lastIndexOf("test", 4)); |
-assertEquals(0, s.lastIndexOf("test", 0)); |
-assertEquals(-1, s.lastIndexOf("test", -1)); |
-assertEquals(10, s.lastIndexOf("test")); |
-assertEquals(-1, s.lastIndexOf("notpresent")); |
-assertEquals(-1, s.lastIndexOf()); |
-assertEquals(10, s.lastIndexOf("test", "not a number")); |
+var MAX_DOUBLE = 1.7976931348623157e+308; |
+var MIN_DOUBLE = -MAX_DOUBLE; |
+var MAX_SMI = Math.pow(2,30)-1; |
+var MIN_SMI = -Math.pow(2,30); |
+ |
+assertEquals(10, s.lastIndexOf("test", Infinity), "tinf"); |
+assertEquals(10, s.lastIndexOf("test", MAX_DOUBLE), "tmaxdouble"); |
+assertEquals(10, s.lastIndexOf("test", MAX_SMI), "tmaxsmi"); |
+assertEquals(10, s.lastIndexOf("test", s.length * 2), "t2length"); |
+assertEquals(10, s.lastIndexOf("test", 15), "t15"); |
+assertEquals(10, s.lastIndexOf("test", 14), "t14"); |
+assertEquals(10, s.lastIndexOf("test", 10), "t10"); |
+assertEquals(5, s.lastIndexOf("test", 9), "t9"); |
+assertEquals(5, s.lastIndexOf("test", 6), "t6"); |
+assertEquals(5, s.lastIndexOf("test", 5), "t5"); |
+assertEquals(0, s.lastIndexOf("test", 4), "t4"); |
+assertEquals(0, s.lastIndexOf("test", 0), "t0"); |
+assertEquals(0, s.lastIndexOf("test", -1), "t-1"); |
+assertEquals(0, s.lastIndexOf("test", -s.length), "t-len"); |
+assertEquals(0, s.lastIndexOf("test", MIN_SMI), "tminsmi"); |
+assertEquals(0, s.lastIndexOf("test", MIN_DOUBLE), "tmindouble"); |
+assertEquals(0, s.lastIndexOf("test", -Infinity), "tneginf"); |
+assertEquals(10, s.lastIndexOf("test"), "t"); |
+assertEquals(-1, s.lastIndexOf("notpresent"), "n"); |
+assertEquals(-1, s.lastIndexOf(), "none"); |
+assertEquals(10, s.lastIndexOf("test", "not a number"), "nan"); |
+ |
+var longNonMatch = "overlong string that doesn't match"; |
+var longAlmostMatch = "test test test!"; |
+var longAlmostMatch2 = "!test test test"; |
+ |
+ |
+assertEquals(-1, s.lastIndexOf(longNonMatch), "long"); |
+assertEquals(-1, s.lastIndexOf(longNonMatch, 10), "longpos"); |
+assertEquals(-1, s.lastIndexOf(longNonMatch, NaN), "longnan"); |
+assertEquals(-1, s.lastIndexOf(longAlmostMatch), "tlong"); |
+assertEquals(-1, s.lastIndexOf(longAlmostMatch, 10), "tlongpos"); |
+assertEquals(-1, s.lastIndexOf(longAlmostMatch), "tlongnan"); |
+ |
+var nonInitialMatch = "est"; |
+ |
+assertEquals(-1, s.lastIndexOf(nonInitialMatch, 0), "noninit"); |
+assertEquals(-1, s.lastIndexOf(nonInitialMatch, -1), "noninitneg"); |
+assertEquals(-1, s.lastIndexOf(nonInitialMatch, MIN_SMI), "noninitminsmi"); |
+assertEquals(-1, s.lastIndexOf(nonInitialMatch, MIN_DOUBLE), "noninitmindbl"); |
+assertEquals(-1, s.lastIndexOf(nonInitialMatch, -Infinity), "noninitneginf"); |
for (var i = s.length + 10; i >= 0; i--) { |
var expected = i < s.length ? i : s.length; |
- assertEquals(expected, s.lastIndexOf("", i)); |
+ assertEquals(expected, s.lastIndexOf("", i), "empty" + i); |
} |
var reString = "asdf[a-z]+(asdf)?"; |
-assertEquals(4, reString.lastIndexOf("[a-z]+")); |
-assertEquals(10, reString.lastIndexOf("(asdf)?")); |
+assertEquals(4, reString.lastIndexOf("[a-z]+"), "r4"); |
+assertEquals(10, reString.lastIndexOf("(asdf)?"), "r10"); |
-assertEquals(1, String.prototype.lastIndexOf.length); |
+assertEquals(1, String.prototype.lastIndexOf.length, "length"); |