1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 04:37:34 +00:00

LibJS: Explicitly handle invalid Date objects in UTC time setters

This is a normative change in the ECMA-262 spec:
ca53334

Note that this also fixes a few errors where we errantly converted the
stored time value to local time.
This commit is contained in:
Timothy Flynn 2022-02-04 07:56:15 -05:00 committed by Linus Groh
parent fd7d0a31d9
commit 30a143c79e
8 changed files with 160 additions and 80 deletions

View file

@ -33,3 +33,9 @@ describe("correct behavior", () => {
expect(d.getUTCDate()).toBeNaN();
});
});
test("invalid date", () => {
let date = new Date(NaN);
expect(date.setUTCDate(15)).toBeNaN();
expect(date.getUTCDate()).toBeNaN();
});

View file

@ -53,3 +53,9 @@ describe("correct behavior", () => {
expect(d.getUTCFullYear()).toBeNaN();
});
});
test("invalid date", () => {
let date = new Date(NaN);
date.setUTCFullYear(2022);
expect(date.getUTCFullYear()).toBe(2022);
});

View file

@ -63,3 +63,9 @@ describe("correct behavior", () => {
expect(d.getUTCHours()).toBeNaN();
});
});
test("invalid date", () => {
let date = new Date(NaN);
expect(date.setUTCHours(2)).toBeNaN();
expect(date.getUTCHours()).toBeNaN();
});

View file

@ -36,3 +36,9 @@ describe("correct behavior", () => {
expect(d.getUTCMilliseconds()).toBeNaN();
});
});
test("invalid date", () => {
let date = new Date(NaN);
expect(date.setUTCMilliseconds(2)).toBeNaN();
expect(date.getUTCMilliseconds()).toBeNaN();
});

View file

@ -49,3 +49,9 @@ describe("correct behavior", () => {
expect(d.getUTCMinutes()).toBeNaN();
});
});
test("invalid date", () => {
let date = new Date(NaN);
expect(date.setUTCMinutes(2)).toBeNaN();
expect(date.getUTCMinutes()).toBeNaN();
});

View file

@ -44,3 +44,9 @@ describe("correct behavior", () => {
expect(d.getUTCMonth()).toBeNaN();
});
});
test("invalid date", () => {
let date = new Date(NaN);
expect(date.setUTCMonth(2)).toBeNaN();
expect(date.getUTCMonth()).toBeNaN();
});

View file

@ -44,3 +44,9 @@ describe("correct behavior", () => {
expect(d.getUTCSeconds()).toBeNaN();
});
});
test("invalid date", () => {
let date = new Date(NaN);
expect(date.setUTCSeconds(2)).toBeNaN();
expect(date.getUTCSeconds()).toBeNaN();
});