tor-browser

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

non-extensible-elements2.js (7066B)


      1 load(libdir + "asserts.js");
      2 
      3 function testPopSimple() {
      4    var a = [4, 3, 2, 1, 0];
      5    Object.preventExtensions(a);
      6    for (var i = 0; i < 5; i++)
      7        assertEq(a.pop(), i);
      8    assertEq(a.length, 0);
      9 
     10    a = [1, 2, 3];
     11    Object.seal(a);
     12    for (var i = 0; i < 10; i++)
     13        assertThrowsInstanceOf(() => a.pop(), TypeError);
     14    assertEq(a.toString(), "1,2,3");
     15 
     16    a = [1, 2, 3];
     17    Object.freeze(a);
     18    for (var i = 0; i < 10; i++)
     19        assertThrowsInstanceOf(() => a.pop(), TypeError);
     20    assertEq(a.toString(), "1,2,3");
     21 }
     22 testPopSimple();
     23 
     24 function testPopHoles() {
     25    var a = [1, , 3];
     26    Object.preventExtensions(a);
     27    assertEq(a.pop(), 3);
     28    assertEq(a.pop(), undefined);
     29    assertEq(a.pop(), 1);
     30    assertEq(a.length, 0);
     31 
     32    a = [1, ,];
     33    Object.seal(a);
     34    assertEq(a.pop(), undefined);
     35    for (var i = 0; i < 10; i++)
     36        assertThrowsInstanceOf(() => a.pop(), TypeError);
     37    assertEq(a.toString(), "1");
     38 
     39    a = [1, ,];
     40    Object.freeze(a);
     41    for (var i = 0; i < 10; i++)
     42        assertThrowsInstanceOf(() => a.pop(), TypeError);
     43    assertEq(a.toString(), "1,");
     44 }
     45 testPopHoles();
     46 
     47 function testPushSimple() {
     48    var a = [1, 2, 3];
     49    Object.preventExtensions(a);
     50    for (var i = 0; i < 10; i++)
     51 assertThrowsInstanceOf(() => a.push(4), TypeError);
     52    assertEq(a.length, 3);
     53    assertEq(a.toString(), "1,2,3");
     54 
     55    a = [1, 2, 3];
     56    Object.seal(a);
     57    for (var i = 0; i < 10; i++)
     58 assertThrowsInstanceOf(() => a.push(4), TypeError);
     59    assertEq(a.toString(), "1,2,3");
     60 
     61    a = [1, 2, 3];
     62    Object.freeze(a);
     63    for (var i = 0; i < 10; i++)
     64 assertThrowsInstanceOf(() => a.push(4), TypeError);
     65    assertEq(a.toString(), "1,2,3");
     66 }
     67 testPushSimple();
     68 
     69 function testPushHoles() {
     70    var a = [,,,];
     71    Object.preventExtensions(a);
     72    for (var i = 0; i < 10; i++)
     73 assertThrowsInstanceOf(() => a.push(4), TypeError);
     74    assertEq(a.length, 3);
     75    assertEq(a.toString(), ",,");
     76 
     77    a = [,,,];
     78    Object.seal(a);
     79    for (var i = 0; i < 10; i++)
     80 assertThrowsInstanceOf(() => a.push(4), TypeError);
     81    assertEq(a.toString(), ",,");
     82 
     83    a = [,,,];
     84    Object.freeze(a);
     85    for (var i = 0; i < 10; i++)
     86 assertThrowsInstanceOf(() => a.push(4), TypeError);
     87    assertEq(a.toString(), ",,");
     88 }
     89 testPushHoles();
     90 
     91 function testReverseSimple() {
     92    var a = [1, 2, 3];
     93    Object.preventExtensions(a);
     94    a.reverse();
     95    assertEq(a.toString(), "3,2,1");
     96 
     97    a = [1, 2, 3];
     98    Object.seal(a);
     99    a.reverse();
    100    assertEq(a.toString(), "3,2,1");
    101 
    102    a = [1, 2, 3];
    103    Object.freeze(a);
    104    assertThrowsInstanceOf(() => a.reverse(), TypeError);
    105    assertEq(a.toString(), "1,2,3");
    106 }
    107 testReverseSimple();
    108 
    109 function testReverseHoles() {
    110    var a = [1, 2, , 4];
    111    Object.preventExtensions(a);
    112    assertThrowsInstanceOf(() => a.reverse(), TypeError);
    113    assertEq(a.toString(), "4,,,1");
    114 
    115    a = [1, 2, , 4];
    116    Object.seal(a);
    117    assertThrowsInstanceOf(() => a.reverse(), TypeError);
    118    assertEq(a.toString(), "4,2,,1");
    119 
    120    a = [1, 2, , 4];
    121    Object.freeze(a);
    122    assertThrowsInstanceOf(() => a.reverse(), TypeError);
    123    assertEq(a.toString(), "1,2,,4");
    124 }
    125 testReverseHoles();
    126 
    127 function testShiftSimple() {
    128    var a = [1, 2, 3];
    129    Object.preventExtensions(a);
    130    assertEq(a.shift(), 1);
    131    assertEq(a.toString(), "2,3");
    132    for (var i = 0; i < 10; i++)
    133 a.shift();
    134    assertEq(a.length, 0);
    135 
    136    a = [1, 2, 3];
    137    Object.seal(a);
    138    for (var i = 0; i < 10; i++)
    139 assertThrowsInstanceOf(() => a.shift(), TypeError);
    140    assertEq(a.toString(), "3,3,3");
    141 
    142    a = [1, 2, 3];
    143    Object.freeze(a);
    144    for (var i = 0; i < 10; i++)
    145 assertThrowsInstanceOf(() => a.shift(), TypeError);
    146    assertEq(a.toString(), "1,2,3");
    147 }
    148 testShiftSimple();
    149 testShiftSimple();
    150 
    151 function testShiftHoles() {
    152    var a = [1, 2, , 4];
    153    Object.preventExtensions(a);
    154    for (var i = 0; i < 10; i++)
    155 assertThrowsInstanceOf(() => a.shift(), TypeError);
    156    assertEq(a.toString(), ",,,4");
    157 
    158    a = [1, 2, , 4];
    159    Object.seal(a);
    160    for (var i = 0; i < 10; i++)
    161 assertThrowsInstanceOf(() => a.shift(), TypeError);
    162    assertEq(a.toString(), "2,2,,4");
    163 
    164    a = [1, 2, , 4];
    165    Object.freeze(a);
    166    for (var i = 0; i < 10; i++)
    167 assertThrowsInstanceOf(() => a.shift(), TypeError);
    168    assertEq(a.toString(), "1,2,,4");
    169 }
    170 testShiftHoles();
    171 testShiftHoles();
    172 
    173 function testUnshiftSimple() {
    174    var a = [1, 2, 3];
    175    Object.preventExtensions(a);
    176    assertThrowsInstanceOf(() => a.unshift(0), TypeError);
    177    assertEq(a.toString(), "1,2,3");
    178 
    179    a = [1, 2, 3];
    180    Object.seal(a);
    181    assertThrowsInstanceOf(() => a.unshift(0), TypeError);
    182    assertEq(a.toString(), "1,2,3");
    183 
    184    a = [1, 2, 3];
    185    Object.freeze(a);
    186    assertThrowsInstanceOf(() => a.unshift(0), TypeError);
    187    assertEq(a.toString(), "1,2,3");
    188 }
    189 testUnshiftSimple();
    190 
    191 function testUnshiftHoles() {
    192    var a = [,,,];
    193    Object.preventExtensions(a);
    194    assertThrowsInstanceOf(() => a.unshift(0), TypeError);
    195    assertEq(a.toString(), ",,");
    196 
    197    a = [,,,];
    198    Object.seal(a);
    199    assertThrowsInstanceOf(() => a.unshift(0), TypeError);
    200    assertEq(a.toString(), ",,");
    201 
    202    a = [,,,];
    203    Object.freeze(a);
    204    assertThrowsInstanceOf(() => a.unshift(0), TypeError);
    205    assertEq(a.toString(), ",,");
    206 }
    207 testUnshiftHoles();
    208 
    209 function testSpliceDelete() {
    210    var a = [1, 2, 3];
    211    Object.preventExtensions(a);
    212    a.splice(1, 2);
    213    assertEq(a.toString(), "1");
    214 
    215    a = [1, 2, 3];
    216    Object.seal(a);
    217    assertThrowsInstanceOf(() => a.splice(1, 2), TypeError);
    218    assertEq(a.toString(), "1,2,3");
    219 
    220    a = [1, 2, 3];
    221    Object.freeze(a);
    222    assertThrowsInstanceOf(() => a.splice(1, 2), TypeError);
    223    assertEq(a.toString(), "1,2,3");
    224 }
    225 testSpliceDelete();
    226 
    227 function testSpliceAdd() {
    228    var a = [1, 2, 3];
    229    Object.preventExtensions(a);
    230    assertThrowsInstanceOf(() => a.splice(2, 1, 4, 5), TypeError);
    231    assertEq(a.toString(), "1,2,4");
    232 
    233    a = [1, 2, 3];
    234    Object.seal(a);
    235    assertThrowsInstanceOf(() => a.splice(2, 1, 4, 5), TypeError);
    236    assertEq(a.toString(), "1,2,4");
    237 
    238    a = [1, 2, 3];
    239    Object.freeze(a);
    240    assertThrowsInstanceOf(() => a.splice(2, 1, 4, 5), TypeError);
    241    assertEq(a.toString(), "1,2,3");
    242 }
    243 testSpliceAdd();
    244 
    245 function testSortSimple() {
    246    var a = [3, 1, 2];
    247    Object.preventExtensions(a);
    248    a.sort();
    249    assertEq(a.toString(), "1,2,3");
    250 
    251    a = [3, 1, 2];
    252    Object.seal(a);
    253    a.sort();
    254    assertEq(a.toString(), "1,2,3");
    255 
    256    a = [3, 1, 2];
    257    Object.freeze(a);
    258    assertThrowsInstanceOf(() => a.sort(), TypeError);
    259    assertEq(a.toString(), "3,1,2");
    260 }
    261 testSortSimple();
    262 
    263 function testSortHoles() {
    264    var a = [, , 3, 1, 2];
    265    Object.preventExtensions(a);
    266    assertThrowsInstanceOf(() => a.sort(), TypeError);
    267    assertEq(a.toString(), ",,3,1,2");
    268 
    269    a = [, , 3, 1, 2];
    270    Object.seal(a);
    271    assertThrowsInstanceOf(() => a.sort(), TypeError);
    272    assertEq(a.toString(), ",,3,1,2");
    273 
    274    a = [, , 3, 1, 2];
    275    Object.freeze(a);
    276    assertThrowsInstanceOf(() => a.sort(), TypeError);
    277    assertEq(a.toString(), ",,3,1,2");
    278 }
    279 testSortHoles();