tor-browser

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

negative-infinity-throws-rangeerror.js (3266B)


      1 // |reftest| skip-if(!this.hasOwnProperty('Temporal')) -- Temporal is not enabled unconditionally
      2 // Copyright (C) 2020 Igalia, S.L. All rights reserved.
      3 // This code is governed by the BSD license found in the LICENSE file.
      4 
      5 /*---
      6 description: Temporal.PlainDate throws a RangeError if any value is -Infinity
      7 esid: sec-temporal.plaintime
      8 includes: [compareArray.js, temporalHelpers.js]
      9 features: [Temporal]
     10 ---*/
     11 
     12 assert.throws(RangeError, () => new Temporal.PlainTime(-Infinity));
     13 assert.throws(RangeError, () => new Temporal.PlainTime(0, -Infinity));
     14 assert.throws(RangeError, () => new Temporal.PlainTime(0, 0, -Infinity));
     15 assert.throws(RangeError, () => new Temporal.PlainTime(0, 0, 0, -Infinity));
     16 assert.throws(RangeError, () => new Temporal.PlainTime(0, 0, 0, 0, -Infinity));
     17 assert.throws(RangeError, () => new Temporal.PlainTime(0, 0, 0, 0, 0, -Infinity));
     18 
     19 const O = (primitiveValue, propertyName) => (calls) => TemporalHelpers.toPrimitiveObserver(calls, primitiveValue, propertyName);
     20 const tests = [
     21  [
     22    "infinite hour",
     23    [O(-Infinity, "hour"), O(1, "minute"), O(1, "second"), O(1, "millisecond"), O(1, "microsecond"), O(1, "nanosecond")],
     24    ["get hour.valueOf", "call hour.valueOf"]
     25  ],
     26  [
     27    "infinite minute",
     28    [O(1, "hour"), O(-Infinity, "minute"), O(1, "second"), O(1, "millisecond"), O(1, "microsecond"), O(1, "nanosecond")],
     29    ["get hour.valueOf", "call hour.valueOf", "get minute.valueOf", "call minute.valueOf"]
     30  ],
     31  [
     32    "infinite second",
     33    [O(1, "hour"), O(1, "minute"), O(-Infinity, "second"), O(1, "millisecond"), O(1, "microsecond"), O(1, "nanosecond")],
     34    ["get hour.valueOf", "call hour.valueOf", "get minute.valueOf", "call minute.valueOf", "get second.valueOf", "call second.valueOf"]
     35  ],
     36  [
     37    "infinite millisecond",
     38    [O(1, "hour"), O(1, "minute"), O(1, "second"), O(-Infinity, "millisecond"), O(1, "microsecond"), O(1, "nanosecond")],
     39    ["get hour.valueOf", "call hour.valueOf", "get minute.valueOf", "call minute.valueOf", "get second.valueOf", "call second.valueOf", "get millisecond.valueOf", "call millisecond.valueOf"]
     40  ],
     41  [
     42    "infinite microsecond",
     43    [O(1, "hour"), O(1, "minute"), O(1, "second"), O(1, "millisecond"), O(-Infinity, "microsecond"), O(1, "nanosecond")],
     44    ["get hour.valueOf", "call hour.valueOf", "get minute.valueOf", "call minute.valueOf", "get second.valueOf", "call second.valueOf", "get millisecond.valueOf", "call millisecond.valueOf", "get microsecond.valueOf", "call microsecond.valueOf"]
     45  ],
     46  [
     47    "infinite nanosecond",
     48    [O(1, "hour"), O(1, "minute"), O(1, "second"), O(1, "millisecond"), O(1, "microsecond"), O(-Infinity, "nanosecond")],
     49    ["get hour.valueOf", "call hour.valueOf", "get minute.valueOf", "call minute.valueOf", "get second.valueOf", "call second.valueOf", "get millisecond.valueOf", "call millisecond.valueOf", "get microsecond.valueOf", "call microsecond.valueOf", "get nanosecond.valueOf", "call nanosecond.valueOf"]
     50  ],
     51 ];
     52 
     53 for (const [description, args, expected] of tests) {
     54  const actual = [];
     55  const args_ = args.map((o) => o(actual));
     56  assert.throws(RangeError, () => new Temporal.PlainTime(...args_), description);
     57  assert.compareArray(actual, expected, `${description} order of operations`);
     58 }
     59 
     60 reportCompare(0, 0);