Browse Source

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.
Linus Groh 3 years ago
parent
commit
f0cd727d74

+ 1 - 1
Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp

@@ -399,7 +399,7 @@ ThrowCompletionOr<BalancedDuration> balance_duration(GlobalObject& global_object
         // h. Set seconds to seconds modulo 60.
         // h. Set seconds to seconds modulo 60.
         seconds = seconds_division_result.remainder.to_double();
         seconds = seconds_division_result.remainder.to_double();
         // i. Set hours to floor(minutes / 60).
         // 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();
         hours = minutes_division_result.quotient.to_double();
         // j. Set minutes to minutes modulo 60.
         // j. Set minutes to minutes modulo 60.
         minutes = minutes_division_result.remainder.to_double();
         minutes = minutes_division_result.remainder.to_double();

+ 1 - 1
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 instant1 = new Temporal.Instant(1625614920000000000n);
         const instant2 = new Temporal.Instant(0n);
         const instant2 = new Temporal.Instant(0n);
         expect(instant1.since(instant2).seconds).toBe(1625614920);
         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);
     });
     });
 });
 });
 
 

+ 1 - 1
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 instant1 = new Temporal.Instant(0n);
         const instant2 = new Temporal.Instant(1625614920000000000n);
         const instant2 = new Temporal.Instant(1625614920000000000n);
         expect(instant1.until(instant2).seconds).toBe(1625614920);
         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);
     });
     });
 });
 });