string-lastIndexOf.js (1459B)
1 function testEmpty() { 2 var strings = [ 3 "", 4 "a", 5 "ab", 6 ]; 7 8 for (var i = 0; i < 200; ++i) { 9 var str = strings[i % strings.length]; 10 assertEq(str.lastIndexOf(""), str.length); 11 } 12 } 13 testEmpty(); 14 15 function testSingle() { 16 var strings = [ 17 "", 18 19 "a", 20 "b", 21 22 "aa", 23 "ab", 24 "ba", 25 "bb", 26 ]; 27 28 var searchStrings = [ 29 "a", 30 "b", 31 ]; 32 33 for (var i = 0; i < 200; ++i) { 34 var str = strings[i % strings.length]; 35 var searchString = searchStrings[i % searchStrings.length]; 36 37 var j = str.length; 38 while (--j >= 0 && str[j] !== searchString); 39 40 assertEq(str.lastIndexOf(searchString), j); 41 } 42 } 43 testSingle(); 44 45 function testDouble() { 46 var strings = [ 47 "", 48 49 "a", 50 "b", 51 52 "aa", 53 "ab", 54 "ba", 55 "bb", 56 57 "aaa", 58 "aab", 59 "aba", 60 "abb", 61 "baa", 62 "bab", 63 "bba", 64 "bbb", 65 66 "aaaa", 67 "aaab", 68 "aaba", 69 "aabb", 70 "abaa", 71 "abab", 72 "abba", 73 "abbb", 74 75 "baaa", 76 "baab", 77 "baba", 78 "babb", 79 "bbaa", 80 "bbab", 81 "bbba", 82 "bbbb", 83 ]; 84 85 var searchStrings = [ 86 "aa", 87 "ab", 88 "ba", 89 "bb", 90 ]; 91 92 for (var i = 0; i < 200; ++i) { 93 var str = strings[i % strings.length]; 94 var searchString = searchStrings[i % searchStrings.length]; 95 96 var j = str.length; 97 while (--j >= 0 && (str[j] !== searchString[0] || str[j + 1] !== searchString[1])); 98 99 assertEq(str.lastIndexOf(searchString), j); 100 } 101 } 102 testDouble();