tor-browser

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

out-of-range.js (3496B)


      1 // |reftest| skip-if(!this.hasOwnProperty('Temporal')) -- Temporal is not enabled unconditionally
      2 // Copyright (C) 2023 Igalia, S.L. All rights reserved.
      3 // This code is governed by the BSD license found in the LICENSE file.
      4 
      5 /*---
      6 esid: sec-temporal.duration
      7 description: Various arguments to the Duration constructor that are out of range
      8 features: [Temporal]
      9 ---*/
     10 
     11 // 2^32 = 4294967296
     12 assert.throws(RangeError, () => new Temporal.Duration(4294967296), "years > max");
     13 assert.throws(RangeError, () => new Temporal.Duration(-4294967296), "years < min");
     14 assert.throws(RangeError, () => new Temporal.Duration(0, 4294967296), "months > max");
     15 assert.throws(RangeError, () => new Temporal.Duration(0, -4294967296), "months < min");
     16 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 4294967296), "weeks > max");
     17 assert.throws(RangeError, () => new Temporal.Duration(0, 0, -4294967296), "weeks < min");
     18 
     19 // ceil(max safe integer / 86400) = 104249991375
     20 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 104249991375), "days > max");
     21 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 104249991374, 24), "hours balance into days > max");
     22 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, -104249991375), "days < min");
     23 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, -104249991374, -24), "hours balance into days < min");
     24 
     25 // ceil(max safe integer / 3600) = 2501999792984
     26 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 2501999792984), "hours > max");
     27 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 2501999792983, 60), "minutes balance into hours > max");
     28 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, -2501999792984), "hours < min");
     29 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, -2501999792983, -60), "minutes balance into hours < min");
     30 
     31 // ceil(max safe integer / 60) = 150119987579017
     32 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 0, 150119987579017), "minutes > max");
     33 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 0, 150119987579016, 60), "seconds balance into minutes > max");
     34 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 0, -150119987579017), "minutes < min");
     35 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 0, -150119987579016, -60), "seconds balance into minutes < min");
     36 
     37 // 2^53 = 9007199254740992
     38 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 0, 0, 9007199254740992), "seconds > max");
     39 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 0, 0, 9007199254740991, 1000), "ms balance into seconds > max");
     40 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 0, 0, 9007199254740991, 999, 1000), "µs balance into seconds > max");
     41 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 0, 0, 9007199254740991, 999, 999, 1000), "ns balance into seconds > max");
     42 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 0, 0, -9007199254740992), "seconds < min");
     43 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 0, 0, -9007199254740991, -1000), "ms balance into seconds < min");
     44 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 0, 0, -9007199254740991, -999, -1000), "µs balance into seconds < min");
     45 assert.throws(RangeError, () => new Temporal.Duration(0, 0, 0, 0, 0, 0, -9007199254740991, -999, -999, -1000), "ns balance into seconds < min");
     46 
     47 reportCompare(0, 0);