tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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