startsWith-endsWith.js (2201B)
1 function toLatin1(s) { 2 assertEq(isLatin1(s), true); 3 return s; 4 } 5 function testStartsWith() { 6 var s1 = toLatin1("abc\u0099def"); 7 var s2 = toLatin1("abc\u0099d"); 8 var s3 = toLatin1("abc\u0098d"); 9 var s4 = toLatin1("bc\u0099"); 10 11 // Latin1 + Latin1 12 assertEq(s1.startsWith(s2), true); 13 assertEq(s1.startsWith(s3), false); 14 assertEq(s1.startsWith(s4), false); 15 assertEq(s1.startsWith(s4, 1), true); 16 assertEq(s1.startsWith(s1), true); 17 18 // Latin1 + TwoByte 19 assertEq(s1.startsWith("abc\u0099\u1200".slice(0, -1)), true); 20 assertEq(s1.startsWith("abc\u0099e\u1200".slice(0, -1)), false); 21 assertEq(s1.startsWith("bc\u0099\u1200".slice(0, -1), 1), true); 22 assertEq(s1.startsWith("\u1200"), false); 23 24 // TwoByte + Latin1 25 var s5 = "abc\u0099de\u1200"; 26 assertEq(s5.startsWith(s1), false); 27 assertEq(s5.startsWith(s2), true); 28 assertEq(s5.startsWith(s4), false); 29 assertEq(s5.startsWith(s4, 1), true); 30 31 // TwoByte + TwoByte 32 assertEq(s5.startsWith(s5), true); 33 assertEq(s5.startsWith("\u1200"), false); 34 assertEq(s5.startsWith("\u1200", 6), true); 35 } 36 testStartsWith(); 37 38 function testEndsWith() { 39 var s1 = toLatin1("zabc\u0099defg"); 40 var s2 = toLatin1("\u0099defg"); 41 var s3 = toLatin1("\u0098defg"); 42 var s4 = toLatin1("zabc\u0099def"); 43 44 // Latin1 + Latin1 45 assertEq(s1.endsWith(s2), true); 46 assertEq(s1.endsWith(s3), false); 47 assertEq(s1.endsWith(s4), false); 48 assertEq(s1.endsWith(s4, 8), true); 49 assertEq(s1.endsWith(s1), true); 50 51 // Latin1 + TwoByte 52 assertEq(s1.endsWith("abc\u0099defg\u1200".slice(0, -1)), true); 53 assertEq(s1.endsWith("\u1100efg\u1200".slice(0, -1)), false); 54 assertEq(s1.endsWith("bc\u0099\u1200".slice(0, -1), 5), true); 55 assertEq(s1.endsWith("\u1200"), false); 56 57 // TwoByte + Latin1 58 var s5 = "\u1200zabc\u0099defg"; 59 assertEq(s5.endsWith(s1), true); 60 assertEq(s5.endsWith(s2), true); 61 assertEq(s5.endsWith(s4), false); 62 assertEq(s5.endsWith(s4, 9), true); 63 64 // TwoByte + TwoByte 65 assertEq(s5.endsWith(s5), true); 66 assertEq(s5.endsWith("\u1200"), false); 67 assertEq(s5.endsWith("\u1200za", 3), true); 68 } 69 testEndsWith();