Source code

Revision control

Copy as Markdown

Other Tools

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();