michael@0: assertEq("abc".contains("a"), true); michael@0: assertEq("abc".contains("b"), true); michael@0: assertEq("abc".contains("abc"), true); michael@0: assertEq("abc".contains("bc"), true); michael@0: assertEq("abc".contains("d"), false); michael@0: assertEq("abc".contains("abcd"), false); michael@0: assertEq("abc".contains("ac"), false); michael@0: assertEq("abc".contains("abc", 0), true); michael@0: assertEq("abc".contains("bc", 0), true); michael@0: assertEq("abc".contains("de", 0), false); michael@0: assertEq("abc".contains("bc", 1), true); michael@0: assertEq("abc".contains("c", 1), true); michael@0: assertEq("abc".contains("a", 1), false); michael@0: assertEq("abc".contains("abc", 1), false); michael@0: assertEq("abc".contains("c", 2), true); michael@0: assertEq("abc".contains("d", 2), false); michael@0: assertEq("abc".contains("dcd", 2), false); michael@0: assertEq("abc".contains("a", 42), false); michael@0: assertEq("abc".contains("a", Infinity), false); michael@0: assertEq("abc".contains("ab", -43), true); michael@0: assertEq("abc".contains("cd", -42), false); michael@0: assertEq("abc".contains("ab", -Infinity), true); michael@0: assertEq("abc".contains("cd", -Infinity), false); michael@0: assertEq("abc".contains("ab", NaN), true); michael@0: assertEq("abc".contains("cd", NaN), false); michael@0: var myobj = {toString : (function () "abc"), contains : String.prototype.contains}; michael@0: assertEq(myobj.contains("abc"), true); michael@0: assertEq(myobj.contains("cd"), false); michael@0: var gotStr = false, gotPos = false; michael@0: myobj = {toString : (function () { michael@0: assertEq(gotPos, false); michael@0: gotStr = true; michael@0: return "xyz"; michael@0: }), michael@0: contains : String.prototype.contains}; michael@0: var idx = {valueOf : (function () { michael@0: assertEq(gotStr, true); michael@0: gotPos = true; michael@0: return 42; michael@0: })}; michael@0: myobj.contains("elephant", idx); michael@0: assertEq(gotPos, true); michael@0: assertEq("xyzzy".contains("zy\0", 2), false); michael@0: var dots = Array(10000).join('.'); michael@0: assertEq(dots.contains("\x01", 10000), false); michael@0: assertEq(dots.contains("\0", 10000), false);