// Copyright (C) 2021 Igalia, S.L. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-temporal.duration.compare description: A pre-epoch value is handled correctly by the modulo operation in GetISOPartsFromEpoch info: | sec-temporal-getisopartsfromepoch step 1: 1. Let _remainderNs_ be the mathematical value whose sign is the sign of _epochNanoseconds_ and whose magnitude is abs(_epochNanoseconds_) modulo 106. sec-temporal-builtintimezonegetplaindatetimefor step 2: 2. Let _result_ be ! GetISOPartsFromEpoch(_instant_.[[Nanoseconds]]). features: [Temporal] ---*/ const relativeTo = new Temporal.ZonedDateTime(-13849764_999_999_999n, "UTC"); const duration = new Temporal.Duration(0, 0, 0, 1); // This code path shows up anywhere we convert an exact time, before the Unix // epoch, with nonzero microseconds or nanoseconds, into a wall time; in this // case via relativeTo. const result = Temporal.Duration.compare(duration, duration, { relativeTo }); assert.sameValue(result, 0);