tor-browser

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

argument-duration-max.js (3249B)


      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.from
      7 description: Maximum allowed duration
      8 features: [Temporal]
      9 ---*/
     10 
     11 const maxCases = [
     12  ["P4294967295Y104249991374DT7H36M31.999999999S", "string with max years"],
     13  [{ years: 4294967295, days: 104249991374, nanoseconds: 27391999999999 }, "property bag with max years"],
     14  ["P4294967295M104249991374DT7H36M31.999999999S", "string with max months"],
     15  [{ months: 4294967295, days: 104249991374, nanoseconds: 27391999999999 }, "property bag with max months"],
     16  ["P4294967295W104249991374DT7H36M31.999999999S", "string with max weeks"],
     17  [{ weeks: 4294967295, days: 104249991374, nanoseconds: 27391999999999 }, "property bag with max weeks"],
     18  ["P104249991374DT7H36M31.999999999S", "string with max days"],
     19  [{ days: 104249991374, nanoseconds: 27391999999999 }, "property bag with max days"],
     20  ["PT2501999792983H36M31.999999999S", "string with max hours"],
     21  [{ hours: 2501999792983, nanoseconds: 2191999999999 }, "property bag with max hours"],
     22  ["PT150119987579016M31.999999999S", "string with max minutes"],
     23  [{ minutes: 150119987579016, nanoseconds: 31999999999 }, "property bag with max minutes"],
     24  ["PT9007199254740991.999999999S", "string with max seconds"],
     25  [{ seconds: 9007199254740991, nanoseconds: 999999999 }, "property bag with max seconds"],
     26 ];
     27 
     28 for (const [arg, descr] of maxCases) {
     29  const result = Temporal.Duration.from(arg);
     30  assert.sameValue(result.with({ years: 0, months: 0, weeks: 0 }).total("seconds"), 9007199254740991.999999999, `operation succeeds with ${descr}`);
     31 }
     32 
     33 const minCases = [
     34  ["-P4294967295Y104249991374DT7H36M31.999999999S", "string with min years"],
     35  [{ years: -4294967295, days: -104249991374, nanoseconds: -27391999999999 }, "property bag with min years"],
     36  ["-P4294967295M104249991374DT7H36M31.999999999S", "string with min months"],
     37  [{ months: -4294967295, days: -104249991374, nanoseconds: -27391999999999 }, "property bag with min months"],
     38  ["-P4294967295W104249991374DT7H36M31.999999999S", "string with min weeks"],
     39  [{ weeks: -4294967295, days: -104249991374, nanoseconds: -27391999999999 }, "property bag with min weeks"],
     40  ["-P104249991374DT7H36M31.999999999S", "string with min days"],
     41  [{ days: -104249991374, nanoseconds: -27391999999999 }, "property bag with min days"],
     42  ["-PT2501999792983H36M31.999999999S", "string with min hours"],
     43  [{ hours: -2501999792983, nanoseconds: -2191999999999 }, "property bag with min hours"],
     44  ["-PT150119987579016M31.999999999S", "string with min minutes"],
     45  [{ minutes: -150119987579016, nanoseconds: -31999999999 }, "property bag with min minutes"],
     46  ["-PT9007199254740991.999999999S", "string with min seconds"],
     47  [{ seconds: -9007199254740991, nanoseconds: -999999999 }, "property bag with min seconds"],
     48 ];
     49 
     50 for (const [arg, descr] of minCases) {
     51  const result = Temporal.Duration.from(arg);
     52  assert.sameValue(result.with({ years: 0, months: 0, weeks: 0 }).total("seconds"), -9007199254740991.999999999, `operation succeeds with ${descr}`);
     53 }
     54 
     55 reportCompare(0, 0);