diff options
Diffstat (limited to 'js/src/jit-test/tests/cacheir/string-lastIndexOf.js')
-rw-r--r-- | js/src/jit-test/tests/cacheir/string-lastIndexOf.js | 102 |
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(); |