From f0cd727d74a278566c192f321ffe8f9d18058b58 Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Sat, 13 Nov 2021 13:24:24 +0000 Subject: [PATCH] LibJS: Fix logic typo in balance_duration() hours calculation By using milliseconds_division_result instead of seconds_division_result here, the result for hours was off by a factor of 60. --- Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp | 2 +- .../Tests/builtins/Temporal/Instant/Instant.prototype.since.js | 2 +- .../Tests/builtins/Temporal/Instant/Instant.prototype.until.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp b/Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp index 1eba7ec999..996d9f325a 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp +++ b/Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp @@ -399,7 +399,7 @@ ThrowCompletionOr balance_duration(GlobalObject& global_object // h. Set seconds to seconds modulo 60. seconds = seconds_division_result.remainder.to_double(); // i. Set hours to floor(minutes / 60). - auto minutes_division_result = milliseconds_division_result.quotient.divided_by(Crypto::UnsignedBigInteger(60)); + auto minutes_division_result = seconds_division_result.quotient.divided_by(Crypto::UnsignedBigInteger(60)); hours = minutes_division_result.quotient.to_double(); // j. Set minutes to minutes modulo 60. minutes = minutes_division_result.remainder.to_double(); diff --git a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Instant/Instant.prototype.since.js b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Instant/Instant.prototype.since.js index 95d7ac0483..fa806cbb01 100644 --- a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Instant/Instant.prototype.since.js +++ b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Instant/Instant.prototype.since.js @@ -7,7 +7,7 @@ describe("correct behavior", () => { const instant1 = new Temporal.Instant(1625614920000000000n); const instant2 = new Temporal.Instant(0n); expect(instant1.since(instant2).seconds).toBe(1625614920); - expect(instant1.since(instant2, { largestUnit: "hour" }).hours).toBe(27093582); + expect(instant1.since(instant2, { largestUnit: "hour" }).hours).toBe(451559); }); }); diff --git a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Instant/Instant.prototype.until.js b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Instant/Instant.prototype.until.js index 2f009bfe5c..64ea328ca9 100644 --- a/Userland/Libraries/LibJS/Tests/builtins/Temporal/Instant/Instant.prototype.until.js +++ b/Userland/Libraries/LibJS/Tests/builtins/Temporal/Instant/Instant.prototype.until.js @@ -7,7 +7,7 @@ describe("correct behavior", () => { const instant1 = new Temporal.Instant(0n); const instant2 = new Temporal.Instant(1625614920000000000n); expect(instant1.until(instant2).seconds).toBe(1625614920); - expect(instant1.until(instant2, { largestUnit: "hour" }).hours).toBe(27093582); + expect(instant1.until(instant2, { largestUnit: "hour" }).hours).toBe(451559); }); });