summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/cacheir/string-lastIndexOf.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/cacheir/string-lastIndexOf.js')
-rw-r--r--js/src/jit-test/tests/cacheir/string-lastIndexOf.js102
1 files changed, 102 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/cacheir/string-lastIndexOf.js b/js/src/jit-test/tests/cacheir/string-lastIndexOf.js
new file mode 100644
index 0000000000..f281d1eac1
--- /dev/null
+++ b/js/src/jit-test/tests/cacheir/string-lastIndexOf.js
@@ -0,0 +1,102 @@
+function testEmpty() {
+ var strings = [
+ "",
+ "a",
+ "ab",
+ ];
+
+ for (var i = 0; i < 200; ++i) {
+ var str = strings[i % strings.length];
+ assertEq(str.lastIndexOf(""), str.length);
+ }
+}
+testEmpty();
+
+function testSingle() {
+ var strings = [
+ "",
+
+ "a",
+ "b",
+
+ "aa",
+ "ab",
+ "ba",
+ "bb",
+ ];
+
+ var searchStrings = [
+ "a",
+ "b",
+ ];
+
+ for (var i = 0; i < 200; ++i) {
+ var str = strings[i % strings.length];
+ var searchString = searchStrings[i % searchStrings.length];
+
+ var j = str.length;
+ while (--j >= 0 && str[j] !== searchString);
+
+ assertEq(str.lastIndexOf(searchString), j);
+ }
+}
+testSingle();
+
+function testDouble() {
+ var strings = [
+ "",
+
+ "a",
+ "b",
+
+ "aa",
+ "ab",
+ "ba",
+ "bb",
+
+ "aaa",
+ "aab",
+ "aba",
+ "abb",
+ "baa",
+ "bab",
+ "bba",
+ "bbb",
+
+ "aaaa",
+ "aaab",
+ "aaba",
+ "aabb",
+ "abaa",
+ "abab",
+ "abba",
+ "abbb",
+
+ "baaa",
+ "baab",
+ "baba",
+ "babb",
+ "bbaa",
+ "bbab",
+ "bbba",
+ "bbbb",
+ ];
+
+ var searchStrings = [
+ "aa",
+ "ab",
+ "ba",
+ "bb",
+ ];
+
+ for (var i = 0; i < 200; ++i) {
+ var str = strings[i % strings.length];
+ var searchString = searchStrings[i % searchStrings.length];
+
+ var j = str.length;
+ while (--j >= 0 && (str[j] !== searchString[0] || str[j + 1] !== searchString[1]));
+
+ assertEq(str.lastIndexOf(searchString), j);
+ }
+}
+testDouble();