tor-browser

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

dependent.js (2605B)


      1 function testSubstrLatin1() {
      2    var s1 = "abcdefghijklmnopqrstuvwxyz12345678900000a";
      3 
      4    // Static strings.
      5    assertEq(s1.substr(s1.length - 1), "a");
      6    assertEq(s1.substr(s1.length - 2), "0a");
      7    assertEq(s1.substr(26, 3), "123");
      8 
      9    // (Fat) inline strings.
     10    var s2 = s1.substr(3, 5);
     11    assertEq(isLatin1(s2), true);
     12    assertEq(s2, "defgh");
     13    s2 = s1.substr(0, 20);
     14    assertEq(isLatin1(s2), true);
     15    assertEq(s2, "abcdefghijklmnopqrst");
     16 
     17    // Dependent string.
     18    s2 = s1.substr(1, s1.length - 2);
     19    assertEq(isLatin1(s2), true);
     20    assertEq(s2.length, 39);
     21    assertEq(s2, "bcdefghijklmnopqrstuvwxyz12345678900000");
     22 
     23    s2 = s2.substr(2).substr(1);
     24    assertEq(isLatin1(s2), true);
     25    assertEq(s2, "efghijklmnopqrstuvwxyz12345678900000");
     26 }
     27 testSubstrLatin1();
     28 
     29 function testSubstrTwoByte() {
     30    // Two byte string.
     31    var s1 = "abcdefghijklmnopqrstuvwxyz12345678900000a\u1480";
     32    assertEq(isLatin1(s1), false);
     33 
     34    // Static string.
     35    var s2 = s1.substr(28, 1);
     36    assertEq(s2, "3");
     37 
     38    // Inline string.
     39    s2 = s1.substr(3, 5);
     40    assertEq(s2, "defgh");
     41 
     42    // Dependent string.
     43    s2 = s1.substr(2);
     44    assertEq(isLatin1(s2), false);
     45    assertEq(s2, "cdefghijklmnopqrstuvwxyz12345678900000a\u1480");
     46 
     47    s2 = s2.substr(2).substr(1);
     48    assertEq(isLatin1(s2), false);
     49    assertEq(s2, "fghijklmnopqrstuvwxyz12345678900000a\u1480");
     50 }
     51 testSubstrTwoByte();
     52 
     53 function testSubstring() {
     54    var s1 = "abcdefghijklmnopqrstuvwxyz123456789000ab";
     55    var s2 = s1.substring(1, 8);
     56    assertEq(isLatin1(s2), true);
     57    assertEq(s2, "bcdefgh");
     58    s2 = s1.substring(0, s1.length - 1);
     59    assertEq(isLatin1(s2), true);
     60    assertEq(s2, "abcdefghijklmnopqrstuvwxyz123456789000a");
     61 }
     62 testSubstring();
     63 
     64 function testSlice() {
     65    var s1 = "abcdefghijklmnopqrstuvwxyz123456789000ABC";
     66    var s2 = s1.slice(1, 8);
     67    assertEq(isLatin1(s2), true);
     68    assertEq(s2, "bcdefgh");
     69    s2 = s1.slice(0, -2);
     70    assertEq(isLatin1(s2), true);
     71    assertEq(s2, "abcdefghijklmnopqrstuvwxyz123456789000A");
     72 }
     73 testSlice();
     74 
     75 function testUndepend() {
     76    // Latin1
     77    var s = "abcdefg".repeat(7);
     78    s.indexOf("def"); // flatten
     79    assertEq(isLatin1(s), true);
     80 
     81    var dep = s.substr(7);
     82    var res = dep.replace(/abcdef/g, ""); // StrReplaceRegexpRemove undepends.
     83    assertEq(res, "gggggg");
     84 
     85    // TwoByte
     86    var s = "abcdefg\u1200".repeat(6);
     87    s.indexOf("def"); // flatten
     88    var dep = s.substr(8);
     89    var res = dep.replace(/abcdefg/g, ""); // StrReplaceRegexpRemove undepends.
     90    assertEq(res, "\u1200\u1200\u1200\u1200\u1200");
     91 }
     92 testUndepend();