tor-browser

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

rest-parameter.js (1379B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 // Simple functional test for destructuring rest parameters.
      6 
      7 function arrayRest(...[a, b]) {
      8    return a + b;
      9 }
     10 assertEq(arrayRest(3, 7), 10);
     11 
     12 
     13 function arrayRestWithDefault(...[a, b = 1]) {
     14    return a + b;
     15 }
     16 assertEq(arrayRestWithDefault(3, 7), 10);
     17 assertEq(arrayRestWithDefault(4), 5);
     18 assertEq(arrayRestWithDefault(4, undefined), 5);
     19 
     20 
     21 function objectRest(...{length: len}) {
     22    return len;
     23 }
     24 assertEq(objectRest(), 0);
     25 assertEq(objectRest(10), 1);
     26 assertEq(objectRest(10, 20), 2);
     27 
     28 
     29 function objectRestWithDefault(...{0: a, 1: b = 1}) {
     30    return a + b;
     31 }
     32 assertEq(objectRestWithDefault(3, 7), 10);
     33 assertEq(objectRestWithDefault(4), 5);
     34 assertEq(objectRestWithDefault(4, undefined), 5);
     35 
     36 
     37 function arrayRestWithNestedRest(...[...r]) {
     38    return r.length;
     39 }
     40 assertEq(arrayRestWithNestedRest(), 0);
     41 assertEq(arrayRestWithNestedRest(10), 1);
     42 assertEq(arrayRestWithNestedRest(10, 20), 2);
     43 
     44 
     45 function arrayRestTDZ(...[a = a]) { }
     46 assertThrowsInstanceOf(() => arrayRestTDZ(), ReferenceError);
     47 
     48 
     49 function objectRestTDZ(...{a = a}) { }
     50 assertThrowsInstanceOf(() => objectRestTDZ(), ReferenceError);
     51 
     52 
     53 if (typeof reportCompare === "function")
     54    reportCompare(0, 0);