tor-browser

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

regress-304828.js (4889B)


      1 /* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 //-----------------------------------------------------------------------------
      7 var BUGNUMBER = 304828;
      8 var summary = 'Array Generic Methods';
      9 var actual = '';
     10 var expect = '';
     11 printBugNumber(BUGNUMBER);
     12 printStatus (summary);
     13 
     14 var value;
     15 
     16 // use Array methods on a String
     17 // join
     18 value  = '123';
     19 expect = '1,2,3';
     20 try
     21 {
     22  actual = Array.prototype.join.call(value);
     23 }
     24 catch(e)
     25 {
     26  actual = e + '';
     27 }
     28 reportCompare(expect, actual, summary + ': join');
     29 
     30 // reverse
     31 value  = '123';
     32 expect = 'TypeError: 0 is read-only';
     33 try
     34 {
     35  actual = Array.prototype.reverse.call(value) + '';
     36 }
     37 catch(e)
     38 {
     39  actual = e + '';
     40 }
     41 reportCompare(expect, actual, summary + ': reverse');
     42 
     43 // sort
     44 value  = 'cba';
     45 expect = 'TypeError: 0 is read-only';
     46 try
     47 {
     48  actual = Array.prototype.sort.call(value) + '';
     49 }
     50 catch(e)
     51 {
     52  actual = e + '';
     53 }
     54 reportCompare(expect, actual, summary + ': sort');
     55 
     56 // push
     57 value  = 'abc';
     58 expect = 6;
     59 try
     60 {
     61  Array.prototype.push.call(value, 'd', 'e', 'f');
     62  throw new Error("didn't throw");
     63 }
     64 catch(e)
     65 {
     66  reportCompare(true, e instanceof TypeError,
     67                "push on a string primitive should throw TypeError");
     68 }
     69 reportCompare('abc', value, summary + ': push string primitive');
     70 
     71 value  = new String("abc");
     72 expect = 6;
     73 try
     74 {
     75  Array.prototype.push.call(value, 'd', 'e', 'f');
     76  throw new Error("didn't throw");
     77 }
     78 catch(e)
     79 {
     80  reportCompare(true, e instanceof TypeError,
     81                "push on a String object should throw TypeError");
     82 }
     83 reportCompare("d", value[3], summary + ': push String object index 3');
     84 reportCompare("e", value[4], summary + ': push String object index 4');
     85 reportCompare("f", value[5], summary + ': push String object index 5');
     86 
     87 // pop
     88 value  = 'abc';
     89 expect = "TypeError: property 2 is non-configurable and can't be deleted";
     90 try
     91 {
     92  actual = Array.prototype.pop.call(value);
     93 }
     94 catch(e)
     95 {
     96  actual = e + '';
     97 }
     98 reportCompare(expect, actual, summary + ': pop');
     99 reportCompare('abc', value, summary + ': pop');
    100 
    101 // unshift
    102 value  = 'def';
    103 expect = 'TypeError: 0 is read-only';
    104 try
    105 {
    106  actual = Array.prototype.unshift.call(value, 'a', 'b', 'c');
    107 }
    108 catch(e)
    109 {
    110  actual = e + '';
    111 }
    112 reportCompare(expect, actual, summary + ': unshift');
    113 reportCompare('def', value, summary + ': unshift');
    114 
    115 // shift
    116 value  = 'abc';
    117 expect = 'TypeError: 0 is read-only';
    118 try
    119 {
    120  actual = Array.prototype.shift.call(value);
    121 }
    122 catch(e)
    123 {
    124  actual = e + '';
    125 }
    126 reportCompare(expect, actual, summary + ': shift');
    127 reportCompare('abc', value, summary + ': shift');
    128 
    129 // splice
    130 value  = 'abc';
    131 expect = 'TypeError: 1 is read-only';
    132 try
    133 {
    134  actual = Array.prototype.splice.call(value, 1, 1) + '';
    135 }
    136 catch(e)
    137 {
    138  actual = e + '';
    139 }
    140 reportCompare(expect, actual, summary + ': splice');
    141 
    142 // concat
    143 value  = 'abc';
    144 expect = 'abc,d,e,f';
    145 try
    146 {
    147  actual = Array.prototype.concat.call(value, 'd', 'e', 'f') + '';
    148 }
    149 catch(e)
    150 {
    151  actual = e + '';
    152 }
    153 reportCompare(expect, actual, summary + ': concat');
    154 
    155 // slice
    156 value  = 'abc';
    157 expect = 'b';
    158 try
    159 {
    160  actual = Array.prototype.slice.call(value, 1, 2) + '';
    161 }
    162 catch(e)
    163 {
    164  actual = e + '';
    165 }
    166 reportCompare(expect, actual, summary + ': slice');
    167 
    168 // indexOf
    169 value  = 'abc';
    170 expect = 1;
    171 try
    172 {
    173  actual = Array.prototype.indexOf.call(value, 'b');
    174 }
    175 catch(e)
    176 {
    177  actual = e + '';
    178 }
    179 reportCompare(expect, actual, summary + ': indexOf');
    180 
    181 // lastIndexOf
    182 value  = 'abcabc';
    183 expect = 4;
    184 try
    185 {
    186  actual = Array.prototype.lastIndexOf.call(value, 'b');
    187 }
    188 catch(e)
    189 {
    190  actual = e + '';
    191 }
    192 reportCompare(expect, actual, summary + ': lastIndexOf');
    193 
    194 // forEach
    195 value  = 'abc';
    196 expect = 'ABC';
    197 actual = '';
    198 try
    199 {
    200  Array.prototype.forEach.call(value,
    201                               function (v, index, array)
    202 		       {actual += array[index].toUpperCase();});
    203 }
    204 catch(e)
    205 {
    206  actual = e + '';
    207 }
    208 reportCompare(expect, actual, summary + ': forEach');
    209 
    210 // map
    211 value  = 'abc';
    212 expect = 'A,B,C';
    213 try
    214 {
    215  actual = Array.prototype.map.call(value,
    216                                    function (v, index, array)
    217 			    {return v.toUpperCase();}) + '';
    218 }
    219 catch(e)
    220 {
    221  actual = e + '';
    222 }
    223 reportCompare(expect, actual, summary + ': map');
    224 
    225 // filter
    226 value  = '1234567890';
    227 expect = '2,4,6,8,0';
    228 try
    229 {
    230  actual = Array.prototype.filter.call(value,
    231 			       function (v, index, array)
    232 			       {return array[index] % 2 == 0;}) + '';
    233 }
    234 catch(e)
    235 {
    236  actual = e + '';
    237 }
    238 reportCompare(expect, actual, summary + ': filter');
    239 
    240 // every
    241 value  = '1234567890';
    242 expect = false;
    243 try
    244 {
    245  actual = Array.prototype.every.call(value,
    246 			      function (v, index, array)
    247 			      {return array[index] % 2 == 0;});
    248 }
    249 catch(e)
    250 {
    251  actual = e + '';
    252 }
    253 reportCompare(expect, actual, summary + ': every');