tor-browser

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

spread-array.js (1699B)


      1 load(libdir + "asserts.js");
      2 load(libdir + "iteration.js");
      3 load(libdir + "eqArrayHelper.js");
      4 
      5 assertEqArray([...[1, 2, 3]], [1, 2, 3]);
      6 assertEqArray([1, ...[2, 3, 4], 5], [1, 2, 3, 4, 5]);
      7 assertEqArray([1, ...[], 2], [1, 2]);
      8 assertEqArray([1, ...[2, 3], 4, ...[5, 6]], [1, 2, 3, 4, 5, 6]);
      9 assertEqArray([1, ...[], 2], [1, 2]);
     10 assertEqArray([1,, ...[2]], [1,, 2]);
     11 assertEqArray([1,, ...[2],, 3,, 4,], [1,, 2,, 3,, 4,]);
     12 assertEqArray([...[1, 2, 3],,,,], [1, 2, 3,,,,]);
     13 assertEqArray([,,...[1, 2, 3],,,,], [,,1,2,3,,,,]);
     14 assertEqArray([...[1, 2, 3],,,,...[]], [1,2,3,,,,]);
     15 
     16 assertEqArray([...[undefined]], [undefined]);
     17 
     18 // other iterable objects
     19 assertEqArray([...new Int32Array([1, 2, 3])], [1, 2, 3]);
     20 assertEqArray([..."abc"], ["a", "b", "c"]);
     21 assertEqArray([...[1, 2, 3][Symbol.iterator]()], [1, 2, 3]);
     22 assertEqArray([...new Set([1, 2, 3])], [1, 2, 3]);
     23 assertEqArray([...new Map([["a", "A"], ["b", "B"], ["c", "C"]])].map(([k, v]) => k + v), ["aA", "bB", "cC"]);
     24 let itr = {};
     25 itr[Symbol.iterator] = function () {
     26    return {
     27        i: 1,
     28        next: function() {
     29            if (this.i < 4)
     30                return { value: this.i++, done: false };
     31            else
     32                return { value: undefined, done: true };
     33        }
     34    };
     35 }
     36 assertEqArray([...itr], [1, 2, 3]);
     37 function* gen() {
     38    for (let i = 1; i < 4; i ++)
     39        yield i;
     40 }
     41 assertEqArray([...gen()], [1, 2, 3]);
     42 
     43 let a, b = [1, 2, 3];
     44 assertEqArray([...a=b], [1, 2, 3]);
     45 
     46 // 12.2.4.1.2 Runtime Semantics: ArrayAccumulation
     47 // If Type(spreadObj) is not Object, then throw a TypeError exception.
     48 assertThrowsInstanceOf(() => [...null], TypeError);
     49 assertThrowsInstanceOf(() => [...undefined], TypeError);