diff --git a/README.md b/README.md index 78956c1..98c6ab0 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,11 @@ Constants and utilities to work with JavaScript standard global objects and prim - `RegExp` - `String` -Currently under development, only `Math` and `Number` implemented. +> [!NOTE] +> Main intention of the library is researching and educational purposes. However, some constants and utilities might also become useful in a development. -Subscribe and stay tuned for updates. +> [!IMPORTANT] +> Currently under heavy development, only `Date`, `Math`, `Number` and `RegExp` implemented. Subscribe and stay tuned for updates. ## Usage diff --git a/__tests__/constant/date.test.ts b/__tests__/constant/date.test.ts new file mode 100644 index 0000000..e3cbeb6 --- /dev/null +++ b/__tests__/constant/date.test.ts @@ -0,0 +1,86 @@ +import DATE from '#src/constant/date.mts'; + +describe('`EPOCH`', () => { + test('Expect `EPOCH_ISO` to be `"1970-01-01T00:00:00.000Z"`.', () => { + expect(DATE.EPOCH_ISO).toBe('1970-01-01T00:00:00.000Z'); + }); + test('Expect `EPOCH_STRING` to be `"Thu Jan 01 1970 00:00:00 GMT+0000 (UTC)"`.', () => { + expect(DATE.EPOCH_STRING).toBe('Thu Jan 01 1970 00:00:00 GMT+0000 (UTC)'); + }); + test('Expect `EPOCH_RFC` to be `"1970-01-01T00:00:00+00:00"`.', () => { + expect(DATE.EPOCH_RFC).toBe('1970-01-01T00:00:00+00:00'); + }); + test('Expect `Date.parse(DATE.EPOCH_ISO)` to be `0`.', () => { + expect(Date.parse(DATE.EPOCH_ISO)).toBe(0); + }); + test('Expect `Date.parse(DATE.EPOCH_RFC)` to be `0`.', () => { + expect(Date.parse(DATE.EPOCH_RFC)).toBe(0); + }); + test('Expect `Date.parse(DATE.EPOCH_STRING)` to be `0`.', () => { + expect(Date.parse(DATE.EPOCH_STRING)).toBe(0); + }); + test('Expect `new Date(DATE.EPOCH_ISO).toDateString()` to be `"Thu Jan 01 1970"`.', () => { + expect(new Date(DATE.EPOCH_ISO).toDateString()).toBe('Thu Jan 01 1970'); + }); + test('Expect `new Date(DATE.EPOCH_ISO).valueOf()` to be `0`.', () => { + expect(new Date(DATE.EPOCH_ISO).valueOf()).toBe(0); + }); + test('Expect `new Date(DATE.EPOCH_STRING).toDateString()` to be `"Thu Jan 01 1970"`.', () => { + expect(new Date(DATE.EPOCH_RFC).toDateString()).toBe('Thu Jan 01 1970'); + }); + test('Expect `new Date(DATE.EPOCH_RFC).toISOString()` to be `DATE.EPOCH_ISO`.', () => { + expect(new Date(DATE.EPOCH_RFC).toISOString()).toBe(DATE.EPOCH_ISO); + }); + test('Expect `new Date(DATE.EPOCH_RFC).valueOf()` to be `0`.', () => { + expect(new Date(DATE.EPOCH_RFC).valueOf()).toBe(0); + }); + test('Expect `new Date(DATE.EPOCH_STRING).toDateString()` to be `"Thu Jan 01 1970"`.', () => { + expect(new Date(DATE.EPOCH_STRING).toDateString()).toBe('Thu Jan 01 1970'); + }); + test('Expect `new Date(DATE.EPOCH_STRING).toISOString()` to be `DATE.EPOCH_ISO`.', () => { + expect(new Date(DATE.EPOCH_STRING).toISOString()).toBe(DATE.EPOCH_ISO); + }); + test('Expect `new Date(DATE.EPOCH_STRING).valueOf()` to be `0`.', () => { + expect(new Date(DATE.EPOCH_STRING).valueOf()).toBe(0); + }); +}); +describe('`TIME`', () => { + test('Expect `TIME_DAY` to be `864e5`.', () => { + expect(DATE.TIME_DAY).toBe(864e5); + }); + test('Expect `TIME_HOUR` to be `36e5`.', () => { + expect(DATE.TIME_HOUR).toBe(36e5); + }); + test('Expect `TIME_MINUTE` to be `6e4`.', () => { + expect(DATE.TIME_MINUTE).toBe(6e4); + }); + test('Expect `TIME_SECOND` to be `1e3`.', () => { + expect(DATE.TIME_SECOND).toBe(1e3); + }); + test('Expect `new Date(DATE.TIME_YEAR).toISOString()` to be `"1971-01-01T00:00:00.000Z"`.', () => { + expect(new Date(DATE.TIME_YEAR).toISOString()).toBe('1971-01-01T00:00:00.000Z'); + }); + test('Expect `new Date(DATE.TIME_YEAR * 2).toISOString()` to be `"1972-01-01T00:00:00.000Z"`.', () => { + expect(new Date(DATE.TIME_YEAR * 2).toISOString()).toBe('1972-01-01T00:00:00.000Z'); + }); + test('Expect `new Date(DATE.TIME_YEAR * 5 + DATE.TIME_YEAR_LEAP* 1).toISOString()` to be `"1976-01-01T00:00:00.000Z"`.', () => { + expect(new Date(DATE.TIME_YEAR * 5 + DATE.TIME_YEAR_LEAP * 1).toISOString()).toBe( + '1976-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(DATE.TIME_YEAR * 8 + DATE.TIME_YEAR_LEAP* 2).toISOString()` to be `"1980-01-01T00:00:00.000Z"`.', () => { + expect(new Date(DATE.TIME_YEAR * 8 + DATE.TIME_YEAR_LEAP * 2).toISOString()).toBe( + '1980-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(DATE.TIME_YEAR * 21 + DATE.TIME_YEAR_LEAP * 7).toISOString()` to be `"1998-01-01T00:00:00.000Z"`.', () => { + expect(new Date(DATE.TIME_YEAR * 21 + DATE.TIME_YEAR_LEAP * 7).toISOString()).toBe( + '1998-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(DATE.TIME_YEAR * 42 + DATE.TIME_YEAR_LEAP * 14).toISOString()` to be `"2026-01-01T00:00:00.000Z"`.', () => { + expect(new Date(DATE.TIME_YEAR * 42 + DATE.TIME_YEAR_LEAP * 14).toISOString()).toBe( + '2026-01-01T00:00:00.000Z', + ); + }); +}); diff --git a/__tests__/constant/regexp.test.ts b/__tests__/constant/regexp.test.ts new file mode 100644 index 0000000..083a42d --- /dev/null +++ b/__tests__/constant/regexp.test.ts @@ -0,0 +1,34 @@ +import DATE from '#src/constant/date.mts'; +import REGEXP from '#src/constant/regexp.mts'; + +describe('`DATE_ISO`', () => { + test('Expect `DATE_ISO.test("1970-01-01T00:00:00Z")` to be `true`.', () => { + expect(REGEXP.DATE_ISO_EPOCH.test('1970-01-01T00:00:00Z')).toBe(true); + }); + test('Expect `DATE_ISO.test("1970-01-01T00:00:00.000Z")` to be `true`.', () => { + expect(REGEXP.DATE_ISO_EPOCH.test('1970-01-01T00:00:00.000Z')).toBe(true); + }); +}); +describe('`DATE_STRING`', () => { + test('Expect `DATE_STRING.test("Thu Jan 01 1970 05:00:00 GMT+0000 (UTC)")` to be `true`.', () => { + expect(REGEXP.DATE_STRING.test('Thu Jan 01 1970 05:00:00 GMT+0000 (UTC)')).toBe(true); + }); + test('Expect `DATE_STRING.test("Thu Jan 01 1970 05:00:00 GMT+0500 (Yekaterinburg Standard Time)")` to be `true`.', () => { + expect( + REGEXP.DATE_STRING.test('Thu Jan 01 1970 05:00:00 GMT+0500 (Yekaterinburg Standard Time)'), + ).toBe(true); + }); + test('Expect `DATE_STRING.test("Thu Jan 01 1970 00:00:00 GMT+0500 (Екатеринбург, стандартное время)")` to be `true`.', () => { + expect( + REGEXP.DATE_STRING.test( + 'Thu Jan 01 1970 00:00:00 GMT+0500 (Екатеринбург, стандартное время)', + ), + ).toBe(true); + }); + test('Expect `DATE_STRING.test(new Date(DATE.EPOCH_ISO).toString())` to be `true`.', () => { + expect(REGEXP.DATE_STRING.test(new Date(DATE.EPOCH_ISO).toString())).toBe(true); + }); + test('Expect `DATE_STRING.test(new Date(DATE.EPOCH_RFC).toString())` to be `true`.', () => { + expect(REGEXP.DATE_STRING.test(new Date(DATE.EPOCH_RFC).toString())).toBe(true); + }); +}); diff --git a/__tests__/utility/date/epoch.test.ts b/__tests__/utility/date/epoch.test.ts new file mode 100644 index 0000000..55e6df3 --- /dev/null +++ b/__tests__/utility/date/epoch.test.ts @@ -0,0 +1,26 @@ +import DATE from '#src/constant/date.mts'; +import date from '#src/utility/date.mts'; + +describe('`epoch`', () => { + test('Expect `epoch.toDateString()` to be `"Thu Jan 01 1970"`.', () => { + expect(date.epoch.toDateString()).toBe('Thu Jan 01 1970'); + }); + test('Expect `epoch.toISOString()` to be `"1970-01-01T00:00:00.000Z"`.', () => { + expect(date.epoch.toISOString()).toBe('1970-01-01T00:00:00.000Z'); + }); + test('Expect `epoch.toISOString()` to be `EPOCH_ISO`.', () => { + expect(date.epoch.toISOString()).toBe(DATE.EPOCH_ISO); + }); + /** These values are specific to OS settings and can not be compared. */ + /* test('Expect `epoch.toTimeString()` to be `"05:00:00 GMT+0500 (Yekaterinburg Standard Time)"`.', () => { + expect(date.epoch.toTimeString()).toBe('05:00:00 GMT+0500 (Yekaterinburg Standard Time)'); + }); + test('Expect `epoch.toString()` to be `"Thu Jan 01 1970 05:00:00 GMT+0500 (Yekaterinburg Standard Time)"`.', () => { + expect(date.epoch.toString()).toBe( + 'Thu Jan 01 1970 05:00:00 GMT+0500 (Yekaterinburg Standard Time)', + ); + }); */ + test('Expect `epoch.valueOf()` to be `0`.', () => { + expect(date.epoch.valueOf()).toBe(0); + }); +}); diff --git a/__tests__/utility/date/to_milliseconds.test.ts b/__tests__/utility/date/to_milliseconds.test.ts new file mode 100644 index 0000000..f5ea177 --- /dev/null +++ b/__tests__/utility/date/to_milliseconds.test.ts @@ -0,0 +1,2082 @@ +import DATE from '#src/constant/date.mts'; +import date from '#src/utility/date.mts'; + +describe('`toMilliseconds`', () => { + test('Expect `toMilliseconds()` to be `0`.', () => { + expect(date.toMilliseconds()).toBe(0); + }); + test('Expect `toMilliseconds(NaN)` to be `null`.', () => { + expect(date.toMilliseconds(NaN)).toBe(null); + }); + test('Expect `toMilliseconds(-Infinity)` to be `null`.', () => { + expect(date.toMilliseconds(-Infinity)).toBe(null); + }); + test('Expect `toMilliseconds(DATE.TIME_YEAR_MIN - 1)` to be `null`.', () => { + expect(date.toMilliseconds(DATE.TIME_YEAR_MIN - 1)).toBe(null); + }); + test('Expect `toMilliseconds(DATE.TIME_YEAR_MAX + 1)` to be `null`.', () => { + expect(date.toMilliseconds(DATE.TIME_YEAR_MAX + 1)).toBe(null); + }); + test('Expect `toMilliseconds(Infinity)` to be `null`.', () => { + expect(date.toMilliseconds(Infinity)).toBe(null); + }); + + test('Expect `toMilliseconds(-3)` to be `-DATE.TIME_YEAR * 1495 - DATE.TIME_YEAR_LEAP * 478`.', () => { + expect(date.toMilliseconds(-3)).toBe(-DATE.TIME_YEAR * 1495 - DATE.TIME_YEAR_LEAP * 478); + }); + test('Expect `toMilliseconds(-2)` to be `-DATE.TIME_YEAR * 1494 - DATE.TIME_YEAR_LEAP * 478`.', () => { + expect(date.toMilliseconds(-2)).toBe(-DATE.TIME_YEAR * 1494 - DATE.TIME_YEAR_LEAP * 478); + }); + test('Expect `toMilliseconds(-1)` to be `-DATE.TIME_YEAR * 1493 - DATE.TIME_YEAR_LEAP * 478`.', () => { + expect(date.toMilliseconds(-1)).toBe(-DATE.TIME_YEAR * 1493 - DATE.TIME_YEAR_LEAP * 478); + }); + test('Expect `toMilliseconds(0)` to be `-DATE.TIME_YEAR * 1492 - DATE.TIME_YEAR_LEAP * 478`.', () => { + expect(date.toMilliseconds(0)).toBe(-DATE.TIME_YEAR * 1492 - DATE.TIME_YEAR_LEAP * 478); + }); + + test('Expect `toMilliseconds(1)` to be `-DATE.TIME_YEAR * 1492 - DATE.TIME_YEAR_LEAP * 477`.', () => { + expect(date.toMilliseconds(1)).toBe(-DATE.TIME_YEAR * 1492 - DATE.TIME_YEAR_LEAP * 477); + }); + test('Expect `toMilliseconds(2)` to be `-DATE.TIME_YEAR * 1491 - DATE.TIME_YEAR_LEAP * 477`.', () => { + expect(date.toMilliseconds(2)).toBe(-DATE.TIME_YEAR * 1491 - DATE.TIME_YEAR_LEAP * 477); + }); + test('Expect `toMilliseconds(3)` to be `-DATE.TIME_YEAR * 1490 - DATE.TIME_YEAR_LEAP * 477`.', () => { + expect(date.toMilliseconds(3)).toBe(-DATE.TIME_YEAR * 1490 - DATE.TIME_YEAR_LEAP * 477); + }); + test('Expect `toMilliseconds(4)` to be `-DATE.TIME_YEAR * 1489 - DATE.TIME_YEAR_LEAP * 477`.', () => { + expect(date.toMilliseconds(4)).toBe(-DATE.TIME_YEAR * 1489 - DATE.TIME_YEAR_LEAP * 477); + }); + + test('Expect `toMilliseconds(1793)` to be `-DATE.TIME_YEAR * 135 - DATE.TIME_YEAR_LEAP * 42`.', () => { + expect(date.toMilliseconds(1793)).toBe(-DATE.TIME_YEAR * 135 - DATE.TIME_YEAR_LEAP * 42); + }); + test('Expect `toMilliseconds(1794)` to be `-DATE.TIME_YEAR * 134 - DATE.TIME_YEAR_LEAP * 42`.', () => { + expect(date.toMilliseconds(1794)).toBe(-DATE.TIME_YEAR * 134 - DATE.TIME_YEAR_LEAP * 42); + }); + test('Expect `toMilliseconds(1795)` to be `-DATE.TIME_YEAR * 133 - DATE.TIME_YEAR_LEAP * 42`.', () => { + expect(date.toMilliseconds(1795)).toBe(-DATE.TIME_YEAR * 133 - DATE.TIME_YEAR_LEAP * 42); + }); + test('Expect `toMilliseconds(1796)` to be `-DATE.TIME_YEAR * 132 - DATE.TIME_YEAR_LEAP * 42`.', () => { + expect(date.toMilliseconds(1796)).toBe(-DATE.TIME_YEAR * 132 - DATE.TIME_YEAR_LEAP * 42); + }); + + test('Expect `toMilliseconds(1797)` to be `-DATE.TIME_YEAR * 132 - DATE.TIME_YEAR_LEAP * 41`.', () => { + expect(date.toMilliseconds(1797)).toBe(-DATE.TIME_YEAR * 132 - DATE.TIME_YEAR_LEAP * 41); + }); + test('Expect `toMilliseconds(1798)` to be `-DATE.TIME_YEAR * 131 - DATE.TIME_YEAR_LEAP * 41`.', () => { + expect(date.toMilliseconds(1798)).toBe(-DATE.TIME_YEAR * 131 - DATE.TIME_YEAR_LEAP * 41); + }); + test('Expect `toMilliseconds(1799)` to be `-DATE.TIME_YEAR * 130 - DATE.TIME_YEAR_LEAP * 41`.', () => { + expect(date.toMilliseconds(1799)).toBe(-DATE.TIME_YEAR * 130 - DATE.TIME_YEAR_LEAP * 41); + }); + test('Expect `toMilliseconds(1800)` to be `-DATE.TIME_YEAR * 129 - DATE.TIME_YEAR_LEAP * 41`.', () => { + expect(date.toMilliseconds(1800)).toBe(-DATE.TIME_YEAR * 129 - DATE.TIME_YEAR_LEAP * 41); + }); + test('Expect `toMilliseconds(1801)` to be `-DATE.TIME_YEAR * 128 - DATE.TIME_YEAR_LEAP * 41`.', () => { + expect(date.toMilliseconds(1801)).toBe(-DATE.TIME_YEAR * 128 - DATE.TIME_YEAR_LEAP * 41); + }); + test('Expect `toMilliseconds(1801)` to be `-DATE.TIME_YEAR * 127 - DATE.TIME_YEAR_LEAP * 41`.', () => { + expect(date.toMilliseconds(1802)).toBe(-DATE.TIME_YEAR * 127 - DATE.TIME_YEAR_LEAP * 41); + }); + test('Expect `toMilliseconds(181)` to be `-DATE.TIME_YEAR * 126 - DATE.TIME_YEAR_LEAP * 41`.', () => { + expect(date.toMilliseconds(1803)).toBe(-DATE.TIME_YEAR * 126 - DATE.TIME_YEAR_LEAP * 41); + }); + test('Expect `toMilliseconds(1801)` to be `-DATE.TIME_YEAR * 125 - DATE.TIME_YEAR_LEAP * 41`.', () => { + expect(date.toMilliseconds(1804)).toBe(-DATE.TIME_YEAR * 125 - DATE.TIME_YEAR_LEAP * 41); + }); + + test('Expect `toMilliseconds(1801)` to be `-DATE.TIME_YEAR * 125 - DATE.TIME_YEAR_LEAP * 40`.', () => { + expect(date.toMilliseconds(1805)).toBe(-DATE.TIME_YEAR * 125 - DATE.TIME_YEAR_LEAP * 40); + }); + test('Expect `toMilliseconds(1801)` to be `-DATE.TIME_YEAR * 124 - DATE.TIME_YEAR_LEAP * 40`.', () => { + expect(date.toMilliseconds(1806)).toBe(-DATE.TIME_YEAR * 124 - DATE.TIME_YEAR_LEAP * 40); + }); + test('Expect `toMilliseconds(1801)` to be `-DATE.TIME_YEAR * 123 - DATE.TIME_YEAR_LEAP * 40`.', () => { + expect(date.toMilliseconds(1807)).toBe(-DATE.TIME_YEAR * 123 - DATE.TIME_YEAR_LEAP * 40); + }); + test('Expect `toMilliseconds(1801)` to be `-DATE.TIME_YEAR * 122 - DATE.TIME_YEAR_LEAP * 40`.', () => { + expect(date.toMilliseconds(1808)).toBe(-DATE.TIME_YEAR * 122 - DATE.TIME_YEAR_LEAP * 40); + }); + + test('Expect `toMilliseconds(1893)` to be `-DATE.TIME_YEAR * 59 - DATE.TIME_YEAR_LEAP * 18`.', () => { + expect(date.toMilliseconds(1893)).toBe(-DATE.TIME_YEAR * 59 - DATE.TIME_YEAR_LEAP * 18); + }); + test('Expect `toMilliseconds(1894)` to be `-DATE.TIME_YEAR * 58 - DATE.TIME_YEAR_LEAP * 18`.', () => { + expect(date.toMilliseconds(1894)).toBe(-DATE.TIME_YEAR * 58 - DATE.TIME_YEAR_LEAP * 18); + }); + test('Expect `toMilliseconds(1895)` to be `-DATE.TIME_YEAR * 57 - DATE.TIME_YEAR_LEAP * 18`.', () => { + expect(date.toMilliseconds(1895)).toBe(-DATE.TIME_YEAR * 57 - DATE.TIME_YEAR_LEAP * 18); + }); + test('Expect `toMilliseconds(1896)` to be `-DATE.TIME_YEAR * 56 - DATE.TIME_YEAR_LEAP * 18`.', () => { + expect(date.toMilliseconds(1896)).toBe(-DATE.TIME_YEAR * 56 - DATE.TIME_YEAR_LEAP * 18); + }); + + test('Expect `toMilliseconds(1897)` to be `-DATE.TIME_YEAR * 56 - DATE.TIME_YEAR_LEAP * 17`.', () => { + expect(date.toMilliseconds(1897)).toBe(-DATE.TIME_YEAR * 56 - DATE.TIME_YEAR_LEAP * 17); + }); + test('Expect `toMilliseconds(1898)` to be `-DATE.TIME_YEAR * 55 - DATE.TIME_YEAR_LEAP * 17`.', () => { + expect(date.toMilliseconds(1898)).toBe(-DATE.TIME_YEAR * 55 - DATE.TIME_YEAR_LEAP * 17); + }); + test('Expect `toMilliseconds(1899)` to be `-DATE.TIME_YEAR * 54 - DATE.TIME_YEAR_LEAP * 17`.', () => { + expect(date.toMilliseconds(1899)).toBe(-DATE.TIME_YEAR * 54 - DATE.TIME_YEAR_LEAP * 17); + }); + test('Expect `toMilliseconds(1900)` to be `-DATE.TIME_YEAR * 53 - DATE.TIME_YEAR_LEAP * 17`.', () => { + expect(date.toMilliseconds(1900)).toBe(-DATE.TIME_YEAR * 53 - DATE.TIME_YEAR_LEAP * 17); + }); + test('Expect `toMilliseconds(1901)` to be `-DATE.TIME_YEAR * 52 - DATE.TIME_YEAR_LEAP * 17`.', () => { + expect(date.toMilliseconds(1901)).toBe(-DATE.TIME_YEAR * 52 - DATE.TIME_YEAR_LEAP * 17); + }); + test('Expect `toMilliseconds(1902)` to be `-DATE.TIME_YEAR * 51 - DATE.TIME_YEAR_LEAP * 17`.', () => { + expect(date.toMilliseconds(1902)).toBe(-DATE.TIME_YEAR * 51 - DATE.TIME_YEAR_LEAP * 17); + }); + test('Expect `toMilliseconds(1903)` to be `-DATE.TIME_YEAR * 50 - DATE.TIME_YEAR_LEAP * 17`.', () => { + expect(date.toMilliseconds(1903)).toBe(-DATE.TIME_YEAR * 50 - DATE.TIME_YEAR_LEAP * 17); + }); + test('Expect `toMilliseconds(1904)` to be `-DATE.TIME_YEAR * 49 - DATE.TIME_YEAR_LEAP * 17`.', () => { + expect(date.toMilliseconds(1904)).toBe(-DATE.TIME_YEAR * 49 - DATE.TIME_YEAR_LEAP * 17); + }); + + test('Expect `toMilliseconds(1905)` to be `-DATE.TIME_YEAR * 49 - DATE.TIME_YEAR_LEAP * 16`.', () => { + expect(date.toMilliseconds(1905)).toBe(-DATE.TIME_YEAR * 49 - DATE.TIME_YEAR_LEAP * 16); + }); + test('Expect `toMilliseconds(1906)` to be `-DATE.TIME_YEAR * 48 - DATE.TIME_YEAR_LEAP * 16`.', () => { + expect(date.toMilliseconds(1906)).toBe(-DATE.TIME_YEAR * 48 - DATE.TIME_YEAR_LEAP * 16); + }); + test('Expect `toMilliseconds(1907)` to be `-DATE.TIME_YEAR * 47 - DATE.TIME_YEAR_LEAP * 16`.', () => { + expect(date.toMilliseconds(1907)).toBe(-DATE.TIME_YEAR * 47 - DATE.TIME_YEAR_LEAP * 16); + }); + test('Expect `toMilliseconds(1908)` to be `-DATE.TIME_YEAR * 46 - DATE.TIME_YEAR_LEAP * 16`.', () => { + expect(date.toMilliseconds(1908)).toBe(-DATE.TIME_YEAR * 46 - DATE.TIME_YEAR_LEAP * 16); + }); + + test('Expect `toMilliseconds(1909)` to be `-DATE.TIME_YEAR * 46 - DATE.TIME_YEAR_LEAP * 15`.', () => { + expect(date.toMilliseconds(1909)).toBe(-DATE.TIME_YEAR * 46 - DATE.TIME_YEAR_LEAP * 15); + }); + test('Expect `toMilliseconds(1910)` to be `-DATE.TIME_YEAR * 45 - DATE.TIME_YEAR_LEAP * 15`.', () => { + expect(date.toMilliseconds(1910)).toBe(-DATE.TIME_YEAR * 45 - DATE.TIME_YEAR_LEAP * 15); + }); + test('Expect `toMilliseconds(1911)` to be `-DATE.TIME_YEAR * 44 - DATE.TIME_YEAR_LEAP * 15`.', () => { + expect(date.toMilliseconds(1911)).toBe(-DATE.TIME_YEAR * 44 - DATE.TIME_YEAR_LEAP * 15); + }); + test('Expect `toMilliseconds(1912)` to be `-DATE.TIME_YEAR * 43 - DATE.TIME_YEAR_LEAP * 15`.', () => { + expect(date.toMilliseconds(1912)).toBe(-DATE.TIME_YEAR * 43 - DATE.TIME_YEAR_LEAP * 15); + }); + + test('Expect `toMilliseconds(1957)` to be `-DATE.TIME_YEAR * 10 - DATE.TIME_YEAR_LEAP * 3`.', () => { + expect(date.toMilliseconds(1957)).toBe(-DATE.TIME_YEAR * 10 - DATE.TIME_YEAR_LEAP * 3); + }); + test('Expect `toMilliseconds(1958)` to be `-DATE.TIME_YEAR * 9 - DATE.TIME_YEAR_LEAP * 3`.', () => { + expect(date.toMilliseconds(1958)).toBe(-DATE.TIME_YEAR * 9 - DATE.TIME_YEAR_LEAP * 3); + }); + test('Expect `toMilliseconds(1959)` to be `-DATE.TIME_YEAR * 8 - DATE.TIME_YEAR_LEAP * 3`.', () => { + expect(date.toMilliseconds(1959)).toBe(-DATE.TIME_YEAR * 8 - DATE.TIME_YEAR_LEAP * 3); + }); + test('Expect `toMilliseconds(1960)` to be `-DATE.TIME_YEAR * 7 - DATE.TIME_YEAR_LEAP * 3`.', () => { + expect(date.toMilliseconds(1960)).toBe(-DATE.TIME_YEAR * 7 - DATE.TIME_YEAR_LEAP * 3); + }); + + test('Expect `toMilliseconds(1961)` to be `-DATE.TIME_YEAR * 7 - DATE.TIME_YEAR_LEAP * 2`.', () => { + expect(date.toMilliseconds(1961)).toBe(-DATE.TIME_YEAR * 7 - DATE.TIME_YEAR_LEAP * 2); + }); + test('Expect `toMilliseconds(1962)` to be `-DATE.TIME_YEAR * 6 - DATE.TIME_YEAR_LEAP * 2`.', () => { + expect(date.toMilliseconds(1962)).toBe(-DATE.TIME_YEAR * 6 - DATE.TIME_YEAR_LEAP * 2); + }); + test('Expect `toMilliseconds(1963)` to be `-DATE.TIME_YEAR * 5 - DATE.TIME_YEAR_LEAP * 2`.', () => { + expect(date.toMilliseconds(1963)).toBe(-DATE.TIME_YEAR * 5 - DATE.TIME_YEAR_LEAP * 2); + }); + test('Expect `toMilliseconds(1964)` to be `-DATE.TIME_YEAR * 4 - DATE.TIME_YEAR_LEAP * 2`.', () => { + expect(date.toMilliseconds(1964)).toBe(-DATE.TIME_YEAR * 4 - DATE.TIME_YEAR_LEAP * 2); + }); + + test('Expect `toMilliseconds(1965)` to be `-DATE.TIME_YEAR * 4 - DATE.TIME_YEAR_LEAP`.', () => { + expect(date.toMilliseconds(1965)).toBe(-DATE.TIME_YEAR * 4 - DATE.TIME_YEAR_LEAP); + }); + test('Expect `toMilliseconds(1966)` to be `-DATE.TIME_YEAR * 3 - DATE.TIME_YEAR_LEAP`.', () => { + expect(date.toMilliseconds(1966)).toBe(-DATE.TIME_YEAR * 3 - DATE.TIME_YEAR_LEAP); + }); + test('Expect `toMilliseconds(1967)` to be `-DATE.TIME_YEAR * 2 - DATE.TIME_YEAR_LEAP`.', () => { + expect(date.toMilliseconds(1967)).toBe(-DATE.TIME_YEAR * 2 - DATE.TIME_YEAR_LEAP); + }); + test('Expect `toMilliseconds(1968)` to be `-DATE.TIME_YEAR - DATE.TIME_YEAR_LEAP`.', () => { + expect(date.toMilliseconds(1968)).toBe(-DATE.TIME_YEAR - DATE.TIME_YEAR_LEAP); + }); + + test('Expect `toMilliseconds(1969)` to be `-DATE.TIME_YEAR`.', () => { + expect(date.toMilliseconds(1969)).toBe(-DATE.TIME_YEAR); + }); + test('Expect `toMilliseconds(1970)` to be `0`.', () => { + expect(date.toMilliseconds(1970)).toBe(0); + }); + test('Expect `toMilliseconds(1971)` to be `DATE.TIME_YEAR`.', () => { + expect(date.toMilliseconds(1971)).toBe(DATE.TIME_YEAR); + }); + test('Expect `toMilliseconds(1972)` to be `DATE.TIME_YEAR * 2`.', () => { + expect(date.toMilliseconds(1972)).toBe(DATE.TIME_YEAR * 2); + }); + + test('Expect `toMilliseconds(1973)` to be `DATE.TIME_YEAR * 2 + DATE.TIME_YEAR_LEAP`.', () => { + expect(date.toMilliseconds(1973)).toBe(DATE.TIME_YEAR * 2 + DATE.TIME_YEAR_LEAP); + }); + test('Expect `toMilliseconds(1974)` to be `DATE.TIME_YEAR * 3 + DATE.TIME_YEAR_LEAP`.', () => { + expect(date.toMilliseconds(1974)).toBe(DATE.TIME_YEAR * 3 + DATE.TIME_YEAR_LEAP); + }); + test('Expect `toMilliseconds(1975)` to be `DATE.TIME_YEAR * 4 + DATE.TIME_YEAR_LEAP`.', () => { + expect(date.toMilliseconds(1975)).toBe(DATE.TIME_YEAR * 4 + DATE.TIME_YEAR_LEAP); + }); + test('Expect `toMilliseconds(1976)` to be `DATE.TIME_YEAR * 5 + DATE.TIME_YEAR_LEAP`.', () => { + expect(date.toMilliseconds(1976)).toBe(DATE.TIME_YEAR * 5 + DATE.TIME_YEAR_LEAP); + }); + + test('Expect `toMilliseconds(1977)` to be `DATE.TIME_YEAR * 5 + DATE.TIME_YEAR_LEAP * 2`.', () => { + expect(date.toMilliseconds(1977)).toBe(DATE.TIME_YEAR * 5 + DATE.TIME_YEAR_LEAP * 2); + }); + test('Expect `toMilliseconds(1978)` to be `DATE.TIME_YEAR * 6 + DATE.TIME_YEAR_LEAP * 2`.', () => { + expect(date.toMilliseconds(1978)).toBe(DATE.TIME_YEAR * 6 + DATE.TIME_YEAR_LEAP * 2); + }); + test('Expect `toMilliseconds(1979)` to be `DATE.TIME_YEAR * 7 + DATE.TIME_YEAR_LEAP * 2`.', () => { + expect(date.toMilliseconds(1979)).toBe(DATE.TIME_YEAR * 7 + DATE.TIME_YEAR_LEAP * 2); + }); + test('Expect `toMilliseconds(1980)` to be `DATE.TIME_YEAR * 8 + DATE.TIME_YEAR_LEAP * 2`.', () => { + expect(date.toMilliseconds(1980)).toBe(DATE.TIME_YEAR * 8 + DATE.TIME_YEAR_LEAP * 2); + }); + + test('Expect `toMilliseconds(1981)` to be `DATE.TIME_YEAR * 8 + DATE.TIME_YEAR_LEAP * 3`.', () => { + expect(date.toMilliseconds(1981)).toBe(DATE.TIME_YEAR * 8 + DATE.TIME_YEAR_LEAP * 3); + }); + test('Expect `toMilliseconds(1982)` to be `DATE.TIME_YEAR * 9 + DATE.TIME_YEAR_LEAP * 3`.', () => { + expect(date.toMilliseconds(1982)).toBe(DATE.TIME_YEAR * 9 + DATE.TIME_YEAR_LEAP * 3); + }); + test('Expect `toMilliseconds(1983)` to be `DATE.TIME_YEAR * 10 + DATE.TIME_YEAR_LEAP * 3`.', () => { + expect(date.toMilliseconds(1983)).toBe(DATE.TIME_YEAR * 10 + DATE.TIME_YEAR_LEAP * 3); + }); + test('Expect `toMilliseconds(1984)` to be `DATE.TIME_YEAR * 11 + DATE.TIME_YEAR_LEAP * 3`.', () => { + expect(date.toMilliseconds(1984)).toBe(DATE.TIME_YEAR * 11 + DATE.TIME_YEAR_LEAP * 3); + }); + + test('Expect `toMilliseconds(1985)` to be `DATE.TIME_YEAR * 11 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(1985)).toBe(DATE.TIME_YEAR * 11 + DATE.TIME_YEAR_LEAP * 4); + }); + test('Expect `toMilliseconds(1986)` to be `DATE.TIME_YEAR * 12 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(1986)).toBe(DATE.TIME_YEAR * 12 + DATE.TIME_YEAR_LEAP * 4); + }); + test('Expect `toMilliseconds(1987)` to be `DATE.TIME_YEAR * 13 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(1987)).toBe(DATE.TIME_YEAR * 13 + DATE.TIME_YEAR_LEAP * 4); + }); + test('Expect `toMilliseconds(1988)` to be `DATE.TIME_YEAR * 14 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(1988)).toBe(DATE.TIME_YEAR * 14 + DATE.TIME_YEAR_LEAP * 4); + }); + + test('Expect `toMilliseconds(1989)` to be `DATE.TIME_YEAR * 14 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(1989)).toBe(DATE.TIME_YEAR * 14 + DATE.TIME_YEAR_LEAP * 5); + }); + test('Expect `toMilliseconds(1990)` to be `DATE.TIME_YEAR * 15 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(1990)).toBe(DATE.TIME_YEAR * 15 + DATE.TIME_YEAR_LEAP * 5); + }); + test('Expect `toMilliseconds(1991)` to be `DATE.TIME_YEAR * 16 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(1991)).toBe(DATE.TIME_YEAR * 16 + DATE.TIME_YEAR_LEAP * 5); + }); + test('Expect `toMilliseconds(1992)` to be `DATE.TIME_YEAR * 17 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(1992)).toBe(DATE.TIME_YEAR * 17 + DATE.TIME_YEAR_LEAP * 5); + }); + + test('Expect `toMilliseconds(1993)` to be `DATE.TIME_YEAR * 17 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(1993)).toBe(DATE.TIME_YEAR * 17 + DATE.TIME_YEAR_LEAP * 6); + }); + test('Expect `toMilliseconds(1994)` to be `DATE.TIME_YEAR * 15 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(1994)).toBe(DATE.TIME_YEAR * 18 + DATE.TIME_YEAR_LEAP * 6); + }); + test('Expect `toMilliseconds(1995)` to be `DATE.TIME_YEAR * 16 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(1995)).toBe(DATE.TIME_YEAR * 19 + DATE.TIME_YEAR_LEAP * 6); + }); + test('Expect `toMilliseconds(1996)` to be `DATE.TIME_YEAR * 17 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(1996)).toBe(DATE.TIME_YEAR * 20 + DATE.TIME_YEAR_LEAP * 6); + }); + + test('Expect `toMilliseconds(1997)` to be `DATE.TIME_YEAR * 20 + DATE.TIME_YEAR_LEAP * 7`.', () => { + expect(date.toMilliseconds(1997)).toBe(DATE.TIME_YEAR * 20 + DATE.TIME_YEAR_LEAP * 7); + }); + test('Expect `toMilliseconds(1998)` to be `DATE.TIME_YEAR * 21 + DATE.TIME_YEAR_LEAP * 7`.', () => { + expect(date.toMilliseconds(1998)).toBe(DATE.TIME_YEAR * 21 + DATE.TIME_YEAR_LEAP * 7); + }); + test('Expect `toMilliseconds(1999)` to be `DATE.TIME_YEAR * 22 + DATE.TIME_YEAR_LEAP * 7`.', () => { + expect(date.toMilliseconds(1999)).toBe(DATE.TIME_YEAR * 22 + DATE.TIME_YEAR_LEAP * 7); + }); + test('Expect `toMilliseconds(2000)` to be `DATE.TIME_YEAR * 23 + DATE.TIME_YEAR_LEAP * 7`.', () => { + expect(date.toMilliseconds(2000)).toBe(DATE.TIME_YEAR * 23 + DATE.TIME_YEAR_LEAP * 7); + }); + + test('Expect `toMilliseconds(2001)` to be `DATE.TIME_YEAR * 23 + DATE.TIME_YEAR_LEAP * 8`.', () => { + expect(date.toMilliseconds(2001)).toBe(DATE.TIME_YEAR * 23 + DATE.TIME_YEAR_LEAP * 8); + }); + test('Expect `toMilliseconds(2002)` to be `DATE.TIME_YEAR * 24 + DATE.TIME_YEAR_LEAP * 8`.', () => { + expect(date.toMilliseconds(2002)).toBe(DATE.TIME_YEAR * 24 + DATE.TIME_YEAR_LEAP * 8); + }); + test('Expect `toMilliseconds(2003)` to be `DATE.TIME_YEAR * 25 + DATE.TIME_YEAR_LEAP * 8`.', () => { + expect(date.toMilliseconds(2003)).toBe(DATE.TIME_YEAR * 25 + DATE.TIME_YEAR_LEAP * 8); + }); + test('Expect `toMilliseconds(2004)` to be `DATE.TIME_YEAR * 26 + DATE.TIME_YEAR_LEAP * 8`.', () => { + expect(date.toMilliseconds(2004)).toBe(DATE.TIME_YEAR * 26 + DATE.TIME_YEAR_LEAP * 8); + }); + + test('Expect `toMilliseconds(2005)` to be `DATE.TIME_YEAR * 26 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(2005)).toBe(DATE.TIME_YEAR * 26 + DATE.TIME_YEAR_LEAP * 9); + }); + test('Expect `toMilliseconds(2006)` to be `DATE.TIME_YEAR * 27 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(2006)).toBe(DATE.TIME_YEAR * 27 + DATE.TIME_YEAR_LEAP * 9); + }); + test('Expect `toMilliseconds(2007)` to be `DATE.TIME_YEAR * 28 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(2007)).toBe(DATE.TIME_YEAR * 28 + DATE.TIME_YEAR_LEAP * 9); + }); + test('Expect `toMilliseconds(2008)` to be `DATE.TIME_YEAR * 29 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(2008)).toBe(DATE.TIME_YEAR * 29 + DATE.TIME_YEAR_LEAP * 9); + }); + + test('Expect `toMilliseconds(2009)` to be `DATE.TIME_YEAR * 29 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(2009)).toBe(DATE.TIME_YEAR * 29 + DATE.TIME_YEAR_LEAP * 10); + }); + test('Expect `toMilliseconds(2010)` to be `DATE.TIME_YEAR * 30 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(2010)).toBe(DATE.TIME_YEAR * 30 + DATE.TIME_YEAR_LEAP * 10); + }); + test('Expect `toMilliseconds(2011)` to be `DATE.TIME_YEAR * 31 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(2011)).toBe(DATE.TIME_YEAR * 31 + DATE.TIME_YEAR_LEAP * 10); + }); + test('Expect `toMilliseconds(2012)` to be `DATE.TIME_YEAR * 32 + DATE.TIME_YEAR_LEAP * 4`.', () => { + expect(date.toMilliseconds(2012)).toBe(DATE.TIME_YEAR * 32 + DATE.TIME_YEAR_LEAP * 10); + }); + + test('Expect `toMilliseconds(2013)` to be `DATE.TIME_YEAR * 32 + DATE.TIME_YEAR_LEAP * 11`.', () => { + expect(date.toMilliseconds(2013)).toBe(DATE.TIME_YEAR * 32 + DATE.TIME_YEAR_LEAP * 11); + }); + test('Expect `toMilliseconds(2014)` to be `DATE.TIME_YEAR * 33 + DATE.TIME_YEAR_LEAP * 11`.', () => { + expect(date.toMilliseconds(2014)).toBe(DATE.TIME_YEAR * 33 + DATE.TIME_YEAR_LEAP * 11); + }); + test('Expect `toMilliseconds(2015)` to be `DATE.TIME_YEAR * 34 + DATE.TIME_YEAR_LEAP * 11`.', () => { + expect(date.toMilliseconds(2015)).toBe(DATE.TIME_YEAR * 34 + DATE.TIME_YEAR_LEAP * 11); + }); + test('Expect `toMilliseconds(2016)` to be `DATE.TIME_YEAR * 35 + DATE.TIME_YEAR_LEAP * 11`.', () => { + expect(date.toMilliseconds(2016)).toBe(DATE.TIME_YEAR * 35 + DATE.TIME_YEAR_LEAP * 11); + }); + + test('Expect `toMilliseconds(2017)` to be `DATE.TIME_YEAR * 35 + DATE.TIME_YEAR_LEAP * 12`.', () => { + expect(date.toMilliseconds(2017)).toBe(DATE.TIME_YEAR * 35 + DATE.TIME_YEAR_LEAP * 12); + }); + test('Expect `toMilliseconds(2018)` to be `DATE.TIME_YEAR * 36 + DATE.TIME_YEAR_LEAP * 12`.', () => { + expect(date.toMilliseconds(2018)).toBe(DATE.TIME_YEAR * 36 + DATE.TIME_YEAR_LEAP * 12); + }); + test('Expect `toMilliseconds(2019)` to be `DATE.TIME_YEAR * 37 + DATE.TIME_YEAR_LEAP * 12`.', () => { + expect(date.toMilliseconds(2019)).toBe(DATE.TIME_YEAR * 37 + DATE.TIME_YEAR_LEAP * 12); + }); + test('Expect `toMilliseconds(2020)` to be `DATE.TIME_YEAR * 38 + DATE.TIME_YEAR_LEAP * 12`.', () => { + expect(date.toMilliseconds(2020)).toBe(DATE.TIME_YEAR * 38 + DATE.TIME_YEAR_LEAP * 12); + }); + + test('Expect `toMilliseconds(2021)` to be `DATE.TIME_YEAR * 38 + DATE.TIME_YEAR_LEAP * 13`.', () => { + expect(date.toMilliseconds(2021)).toBe(DATE.TIME_YEAR * 38 + DATE.TIME_YEAR_LEAP * 13); + }); + test('Expect `toMilliseconds(2022)` to be `DATE.TIME_YEAR * 39 + DATE.TIME_YEAR_LEAP * 13`.', () => { + expect(date.toMilliseconds(2022)).toBe(DATE.TIME_YEAR * 39 + DATE.TIME_YEAR_LEAP * 13); + }); + test('Expect `toMilliseconds(2023)` to be `DATE.TIME_YEAR * 40 + DATE.TIME_YEAR_LEAP * 13`.', () => { + expect(date.toMilliseconds(2023)).toBe(DATE.TIME_YEAR * 40 + DATE.TIME_YEAR_LEAP * 13); + }); + test('Expect `toMilliseconds(2024)` to be `DATE.TIME_YEAR * 41 + DATE.TIME_YEAR_LEAP * 13`.', () => { + expect(date.toMilliseconds(2024)).toBe(DATE.TIME_YEAR * 41 + DATE.TIME_YEAR_LEAP * 13); + }); + + test('Expect `toMilliseconds(2025)` to be `DATE.TIME_YEAR * 41 + DATE.TIME_YEAR_LEAP * 14`.', () => { + expect(date.toMilliseconds(2025)).toBe(DATE.TIME_YEAR * 41 + DATE.TIME_YEAR_LEAP * 14); + }); + test('Expect `toMilliseconds(2026)` to be `DATE.TIME_YEAR * 42 + DATE.TIME_YEAR_LEAP * 14`.', () => { + expect(date.toMilliseconds(2026)).toBe(DATE.TIME_YEAR * 42 + DATE.TIME_YEAR_LEAP * 14); + }); + test('Expect `toMilliseconds(2027)` to be `DATE.TIME_YEAR * 43 + DATE.TIME_YEAR_LEAP * 14`.', () => { + expect(date.toMilliseconds(2027)).toBe(DATE.TIME_YEAR * 43 + DATE.TIME_YEAR_LEAP * 14); + }); + test('Expect `toMilliseconds(2028)` to be `DATE.TIME_YEAR * 44 + DATE.TIME_YEAR_LEAP * 14`.', () => { + expect(date.toMilliseconds(2028)).toBe(DATE.TIME_YEAR * 44 + DATE.TIME_YEAR_LEAP * 14); + }); + + test('Expect `toMilliseconds(2029)` to be `DATE.TIME_YEAR * 44 + DATE.TIME_YEAR_LEAP * 15`.', () => { + expect(date.toMilliseconds(2029)).toBe(DATE.TIME_YEAR * 44 + DATE.TIME_YEAR_LEAP * 15); + }); + test('Expect `toMilliseconds(2030)` to be `DATE.TIME_YEAR * 45 + DATE.TIME_YEAR_LEAP * 15`.', () => { + expect(date.toMilliseconds(2030)).toBe(DATE.TIME_YEAR * 45 + DATE.TIME_YEAR_LEAP * 15); + }); + test('Expect `toMilliseconds(2031)` to be `DATE.TIME_YEAR * 46 + DATE.TIME_YEAR_LEAP * 15`.', () => { + expect(date.toMilliseconds(2031)).toBe(DATE.TIME_YEAR * 46 + DATE.TIME_YEAR_LEAP * 15); + }); + test('Expect `toMilliseconds(2032)` to be `DATE.TIME_YEAR * 47 + DATE.TIME_YEAR_LEAP * 15`.', () => { + expect(date.toMilliseconds(2032)).toBe(DATE.TIME_YEAR * 47 + DATE.TIME_YEAR_LEAP * 15); + }); + + test('Expect `toMilliseconds(2033)` to be `DATE.TIME_YEAR * 47 + DATE.TIME_YEAR_LEAP * 16`.', () => { + expect(date.toMilliseconds(2033)).toBe(DATE.TIME_YEAR * 47 + DATE.TIME_YEAR_LEAP * 16); + }); + test('Expect `toMilliseconds(2034)` to be `DATE.TIME_YEAR * 48 + DATE.TIME_YEAR_LEAP * 16`.', () => { + expect(date.toMilliseconds(2034)).toBe(DATE.TIME_YEAR * 48 + DATE.TIME_YEAR_LEAP * 16); + }); + test('Expect `toMilliseconds(2035)` to be `DATE.TIME_YEAR * 49 + DATE.TIME_YEAR_LEAP * 16`.', () => { + expect(date.toMilliseconds(2035)).toBe(DATE.TIME_YEAR * 49 + DATE.TIME_YEAR_LEAP * 16); + }); + test('Expect `toMilliseconds(2036)` to be `DATE.TIME_YEAR * 50 + DATE.TIME_YEAR_LEAP * 16`.', () => { + expect(date.toMilliseconds(2036)).toBe(DATE.TIME_YEAR * 50 + DATE.TIME_YEAR_LEAP * 16); + }); + + test('Expect `toMilliseconds(2037)` to be `DATE.TIME_YEAR * 50 + DATE.TIME_YEAR_LEAP * 17`.', () => { + expect(date.toMilliseconds(2037)).toBe(DATE.TIME_YEAR * 50 + DATE.TIME_YEAR_LEAP * 17); + }); + test('Expect `toMilliseconds(2038)` to be `DATE.TIME_YEAR * 51 + DATE.TIME_YEAR_LEAP * 17`.', () => { + expect(date.toMilliseconds(2038)).toBe(DATE.TIME_YEAR * 51 + DATE.TIME_YEAR_LEAP * 17); + }); + test('Expect `toMilliseconds(2039)` to be `DATE.TIME_YEAR * 52 + DATE.TIME_YEAR_LEAP * 17`.', () => { + expect(date.toMilliseconds(2039)).toBe(DATE.TIME_YEAR * 52 + DATE.TIME_YEAR_LEAP * 17); + }); + test('Expect `toMilliseconds(2040)` to be `DATE.TIME_YEAR * 53 + DATE.TIME_YEAR_LEAP * 17`.', () => { + expect(date.toMilliseconds(2040)).toBe(DATE.TIME_YEAR * 53 + DATE.TIME_YEAR_LEAP * 17); + }); + + test('Expect `toMilliseconds(2097)` to be `DATE.TIME_YEAR * 99 + DATE.TIME_YEAR_LEAP * 32`.', () => { + expect(date.toMilliseconds(2097)).toBe(DATE.TIME_YEAR * 95 + DATE.TIME_YEAR_LEAP * 32); + }); + test('Expect `toMilliseconds(2098)` to be `DATE.TIME_YEAR * 100 + DATE.TIME_YEAR_LEAP * 32`.', () => { + expect(date.toMilliseconds(2098)).toBe(DATE.TIME_YEAR * 96 + DATE.TIME_YEAR_LEAP * 32); + }); + test('Expect `toMilliseconds(2099)` to be `DATE.TIME_YEAR * 101 + DATE.TIME_YEAR_LEAP * 32`.', () => { + expect(date.toMilliseconds(2099)).toBe(DATE.TIME_YEAR * 97 + DATE.TIME_YEAR_LEAP * 32); + }); + test('Expect `toMilliseconds(2100)` to be `DATE.TIME_YEAR * 102 + DATE.TIME_YEAR_LEAP * 32`.', () => { + expect(date.toMilliseconds(2100)).toBe(DATE.TIME_YEAR * 98 + DATE.TIME_YEAR_LEAP * 32); + }); + test('Expect `toMilliseconds(2101)` to be `DATE.TIME_YEAR * 99 + DATE.TIME_YEAR_LEAP * 32`.', () => { + expect(date.toMilliseconds(2101)).toBe(DATE.TIME_YEAR * 99 + DATE.TIME_YEAR_LEAP * 32); + }); + test('Expect `toMilliseconds(2102)` to be `DATE.TIME_YEAR * 100 + DATE.TIME_YEAR_LEAP * 32`.', () => { + expect(date.toMilliseconds(2102)).toBe(DATE.TIME_YEAR * 100 + DATE.TIME_YEAR_LEAP * 32); + }); + test('Expect `toMilliseconds(2103)` to be `DATE.TIME_YEAR * 101 + DATE.TIME_YEAR_LEAP * 32`.', () => { + expect(date.toMilliseconds(2103)).toBe(DATE.TIME_YEAR * 101 + DATE.TIME_YEAR_LEAP * 32); + }); + test('Expect `toMilliseconds(2104)` to be `DATE.TIME_YEAR * 102 + DATE.TIME_YEAR_LEAP * 32`.', () => { + expect(date.toMilliseconds(2104)).toBe(DATE.TIME_YEAR * 102 + DATE.TIME_YEAR_LEAP * 32); + }); + + test('Expect `toMilliseconds(2105)` to be `DATE.TIME_YEAR * 102 + DATE.TIME_YEAR_LEAP * 33`.', () => { + expect(date.toMilliseconds(2105)).toBe(DATE.TIME_YEAR * 102 + DATE.TIME_YEAR_LEAP * 33); + }); + test('Expect `toMilliseconds(2106)` to be `DATE.TIME_YEAR * 103 + DATE.TIME_YEAR_LEAP * 33`.', () => { + expect(date.toMilliseconds(2106)).toBe(DATE.TIME_YEAR * 103 + DATE.TIME_YEAR_LEAP * 33); + }); + test('Expect `toMilliseconds(2107)` to be `DATE.TIME_YEAR * 104 + DATE.TIME_YEAR_LEAP * 33`.', () => { + expect(date.toMilliseconds(2107)).toBe(DATE.TIME_YEAR * 104 + DATE.TIME_YEAR_LEAP * 33); + }); + test('Expect `toMilliseconds(2108)` to be `DATE.TIME_YEAR * 105 + DATE.TIME_YEAR_LEAP * 33`.', () => { + expect(date.toMilliseconds(2108)).toBe(DATE.TIME_YEAR * 105 + DATE.TIME_YEAR_LEAP * 33); + }); + + test('Expect `new Date(-864e13).toISOString()` to be `"-271821-04-20T00:00:00.000Z"`.', () => { + expect(new Date(-864e13).toISOString()).toBe('-271821-04-20T00:00:00.000Z'); + }); + test('Expect `new Date(DATE.TIME_MIN).toISOString()` to be `"-271821-04-20T00:00:00.000Z"`.', () => { + expect(new Date(DATE.TIME_MIN).toISOString()).toBe('-271821-04-20T00:00:00.000Z'); + }); + + test('Expect `new Date(date.toMilliseconds(-271820) as number).toISOString()` to be `"-271820-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(-271820) as number).toISOString()).toBe( + '-271820-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(-10) as number).toISOString()` to be `"-000010-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(-10) as number).toISOString()).toBe( + '-000010-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(-9) as number).toISOString()` to be `"-000009-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(-9) as number).toISOString()).toBe( + '-000009-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(-8) as number).toISOString()` to be `"-000008-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(-8) as number).toISOString()).toBe( + '-000008-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(-7) as number).toISOString()` to be `"-000007-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(-7) as number).toISOString()).toBe( + '-000007-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(-6) as number).toISOString()` to be `"-000006-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(-6) as number).toISOString()).toBe( + '-000006-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(-5) as number).toISOString()` to be `"-000005-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(-5) as number).toISOString()).toBe( + '-000005-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(-4) as number).toISOString()` to be `"-000004-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(-4) as number).toISOString()).toBe( + '-000004-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(-3) as number).toISOString()` to be `"-000003-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(-3) as number).toISOString()).toBe( + '-000003-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(-2) as number).toISOString()` to be `"-000002-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(-2) as number).toISOString()).toBe( + '-000002-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(-1) as number).toISOString()` to be `"-000001-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(-1) as number).toISOString()).toBe( + '-000001-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(0) as number).toISOString()` to be `"0000-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(0) as number).toISOString()).toBe( + '0000-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1) as number).toISOString()` to be `"0001-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1) as number).toISOString()).toBe( + '0001-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2) as number).toISOString()` to be `"0002-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2) as number).toISOString()).toBe( + '0002-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(3) as number).toISOString()` to be `"0003-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(3) as number).toISOString()).toBe( + '0003-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(4) as number).toISOString()` to be `"0004-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(4) as number).toISOString()).toBe( + '0004-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(5) as number).toISOString()` to be `"0005-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(5) as number).toISOString()).toBe( + '0005-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(6) as number).toISOString()` to be `"0006-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(6) as number).toISOString()).toBe( + '0006-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(7) as number).toISOString()` to be `"0007-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(7) as number).toISOString()).toBe( + '0007-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(8) as number).toISOString()` to be `"0008-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(8) as number).toISOString()).toBe( + '0008-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(9) as number).toISOString()` to be `"0009-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(9) as number).toISOString()).toBe( + '0009-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(10) as number).toISOString()` to be `"0010-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(10) as number).toISOString()).toBe( + '0010-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(11) as number).toISOString()` to be `"0011-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(11) as number).toISOString()).toBe( + '0011-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(12) as number).toISOString()` to be `"0012-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(12) as number).toISOString()).toBe( + '0012-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(13) as number).toISOString()` to be `"0013-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(13) as number).toISOString()).toBe( + '0013-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(14) as number).toISOString()` to be `"0014-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(14) as number).toISOString()).toBe( + '0014-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(15) as number).toISOString()` to be `"0015-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(15) as number).toISOString()).toBe( + '0015-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(16) as number).toISOString()` to be `"0016-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(16) as number).toISOString()).toBe( + '0016-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(17) as number).toISOString()` to be `"0017-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(17) as number).toISOString()).toBe( + '0017-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(18) as number).toISOString()` to be `"0018-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(18) as number).toISOString()).toBe( + '0018-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(19) as number).toISOString()` to be `"0019-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(19) as number).toISOString()).toBe( + '0019-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1590) as number).toISOString()` to be `"1590-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1590) as number).toISOString()).toBe( + '1590-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1591) as number).toISOString()` to be `"1591-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1591) as number).toISOString()).toBe( + '1591-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1592) as number).toISOString()` to be `"1592-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1592) as number).toISOString()).toBe( + '1592-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1593) as number).toISOString()` to be `"1593-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1593) as number).toISOString()).toBe( + '1593-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1594) as number).toISOString()` to be `"1594-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1594) as number).toISOString()).toBe( + '1594-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1595) as number).toISOString()` to be `"1595-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1595) as number).toISOString()).toBe( + '1595-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1596) as number).toISOString()` to be `"1596-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1596) as number).toISOString()).toBe( + '1596-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1597) as number).toISOString()` to be `"1597-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1597) as number).toISOString()).toBe( + '1597-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1598) as number).toISOString()` to be `"1598-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1598) as number).toISOString()).toBe( + '1598-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1599) as number).toISOString()` to be `"1599-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1599) as number).toISOString()).toBe( + '1599-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1600) as number).toISOString()` to be `"1900-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1600) as number).toISOString()).toBe( + '1600-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1601) as number).toISOString()` to be `"1901-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1601) as number).toISOString()).toBe( + '1601-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1602) as number).toISOString()` to be `"1902-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1602) as number).toISOString()).toBe( + '1602-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1603) as number).toISOString()` to be `"1903-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1603) as number).toISOString()).toBe( + '1603-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1604) as number).toISOString()` to be `"1904-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1604) as number).toISOString()).toBe( + '1604-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1605) as number).toISOString()` to be `"1905-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1605) as number).toISOString()).toBe( + '1605-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1606) as number).toISOString()` to be `"1906-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1606) as number).toISOString()).toBe( + '1606-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1607) as number).toISOString()` to be `"1907-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1607) as number).toISOString()).toBe( + '1607-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1908) as number).toISOString()` to be `"1908-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1608) as number).toISOString()).toBe( + '1608-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1909) as number).toISOString()` to be `"1909-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1609) as number).toISOString()).toBe( + '1609-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1790) as number).toISOString()` to be `"1790-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1790) as number).toISOString()).toBe( + '1790-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1791) as number).toISOString()` to be `"1791-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1791) as number).toISOString()).toBe( + '1791-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1792) as number).toISOString()` to be `"1792-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1792) as number).toISOString()).toBe( + '1792-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1793) as number).toISOString()` to be `"1793-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1793) as number).toISOString()).toBe( + '1793-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1794) as number).toISOString()` to be `"1794-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1794) as number).toISOString()).toBe( + '1794-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1795) as number).toISOString()` to be `"1795-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1795) as number).toISOString()).toBe( + '1795-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1796) as number).toISOString()` to be `"1796-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1796) as number).toISOString()).toBe( + '1796-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1797) as number).toISOString()` to be `"1797-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1797) as number).toISOString()).toBe( + '1797-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1798) as number).toISOString()` to be `"1798-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1798) as number).toISOString()).toBe( + '1798-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1799) as number).toISOString()` to be `"1799-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1799) as number).toISOString()).toBe( + '1799-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1800) as number).toISOString()` to be `"1800-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1800) as number).toISOString()).toBe( + '1800-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1801) as number).toISOString()` to be `"1901-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1801) as number).toISOString()).toBe( + '1801-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1802) as number).toISOString()` to be `"1902-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1802) as number).toISOString()).toBe( + '1802-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1803) as number).toISOString()` to be `"1903-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1803) as number).toISOString()).toBe( + '1803-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1804) as number).toISOString()` to be `"1904-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1804) as number).toISOString()).toBe( + '1804-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1805) as number).toISOString()` to be `"1905-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1805) as number).toISOString()).toBe( + '1805-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1806) as number).toISOString()` to be `"1906-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1806) as number).toISOString()).toBe( + '1806-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1807) as number).toISOString()` to be `"1907-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1807) as number).toISOString()).toBe( + '1807-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1908) as number).toISOString()` to be `"1908-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1808) as number).toISOString()).toBe( + '1808-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1909) as number).toISOString()` to be `"1909-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1809) as number).toISOString()).toBe( + '1809-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1890) as number).toISOString()` to be `"1890-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1890) as number).toISOString()).toBe( + '1890-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1891) as number).toISOString()` to be `"1891-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1891) as number).toISOString()).toBe( + '1891-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1892) as number).toISOString()` to be `"1892-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1892) as number).toISOString()).toBe( + '1892-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1893) as number).toISOString()` to be `"1893-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1893) as number).toISOString()).toBe( + '1893-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1894) as number).toISOString()` to be `"1894-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1894) as number).toISOString()).toBe( + '1894-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1895) as number).toISOString()` to be `"1895-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1895) as number).toISOString()).toBe( + '1895-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1896) as number).toISOString()` to be `"1896-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1896) as number).toISOString()).toBe( + '1896-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1897) as number).toISOString()` to be `"1897-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1897) as number).toISOString()).toBe( + '1897-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1898) as number).toISOString()` to be `"1898-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1898) as number).toISOString()).toBe( + '1898-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1899) as number).toISOString()` to be `"1899-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1899) as number).toISOString()).toBe( + '1899-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1900) as number).toISOString()` to be `"1900-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1900) as number).toISOString()).toBe( + '1900-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1901) as number).toISOString()` to be `"1901-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1901) as number).toISOString()).toBe( + '1901-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1902) as number).toISOString()` to be `"1902-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1902) as number).toISOString()).toBe( + '1902-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1903) as number).toISOString()` to be `"1903-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1903) as number).toISOString()).toBe( + '1903-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1904) as number).toISOString()` to be `"1904-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1904) as number).toISOString()).toBe( + '1904-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1905) as number).toISOString()` to be `"1905-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1905) as number).toISOString()).toBe( + '1905-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1906) as number).toISOString()` to be `"1906-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1906) as number).toISOString()).toBe( + '1906-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1907) as number).toISOString()` to be `"1907-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1907) as number).toISOString()).toBe( + '1907-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1908) as number).toISOString()` to be `"1908-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1908) as number).toISOString()).toBe( + '1908-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1909) as number).toISOString()` to be `"1909-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1909) as number).toISOString()).toBe( + '1909-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1910) as number).toISOString()` to be `"1910-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1910) as number).toISOString()).toBe( + '1910-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1911) as number).toISOString()` to be `"1911-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1911) as number).toISOString()).toBe( + '1911-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1912) as number).toISOString()` to be `"1912-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1912) as number).toISOString()).toBe( + '1912-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1913) as number).toISOString()` to be `"1913-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1913) as number).toISOString()).toBe( + '1913-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1914) as number).toISOString()` to be `"1914-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1914) as number).toISOString()).toBe( + '1914-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1915) as number).toISOString()` to be `"1915-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1915) as number).toISOString()).toBe( + '1915-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1916) as number).toISOString()` to be `"1916-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1916) as number).toISOString()).toBe( + '1916-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1917) as number).toISOString()` to be `"1917-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1917) as number).toISOString()).toBe( + '1917-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1918) as number).toISOString()` to be `"1918-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1918) as number).toISOString()).toBe( + '1918-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1919) as number).toISOString()` to be `"1919-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1919) as number).toISOString()).toBe( + '1919-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1920) as number).toISOString()` to be `"1920-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1920) as number).toISOString()).toBe( + '1920-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1921) as number).toISOString()` to be `"1921-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1921) as number).toISOString()).toBe( + '1921-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1922) as number).toISOString()` to be `"1922-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1922) as number).toISOString()).toBe( + '1922-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1923) as number).toISOString()` to be `"1923-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1923) as number).toISOString()).toBe( + '1923-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1924) as number).toISOString()` to be `"1924-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1924) as number).toISOString()).toBe( + '1924-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1925) as number).toISOString()` to be `"1925-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1925) as number).toISOString()).toBe( + '1925-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1926) as number).toISOString()` to be `"1926-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1926) as number).toISOString()).toBe( + '1926-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1927) as number).toISOString()` to be `"1927-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1927) as number).toISOString()).toBe( + '1927-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1928) as number).toISOString()` to be `"1928-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1928) as number).toISOString()).toBe( + '1928-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1929) as number).toISOString()` to be `"1929-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1929) as number).toISOString()).toBe( + '1929-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1930) as number).toISOString()` to be `"1930-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1930) as number).toISOString()).toBe( + '1930-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1931) as number).toISOString()` to be `"1931-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1931) as number).toISOString()).toBe( + '1931-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1932) as number).toISOString()` to be `"1932-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1932) as number).toISOString()).toBe( + '1932-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1933) as number).toISOString()` to be `"1933-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1933) as number).toISOString()).toBe( + '1933-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1934) as number).toISOString()` to be `"1934-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1934) as number).toISOString()).toBe( + '1934-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1935) as number).toISOString()` to be `"1935-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1935) as number).toISOString()).toBe( + '1935-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1936) as number).toISOString()` to be `"1936-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1936) as number).toISOString()).toBe( + '1936-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1937) as number).toISOString()` to be `"1937-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1937) as number).toISOString()).toBe( + '1937-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1938) as number).toISOString()` to be `"1938-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1938) as number).toISOString()).toBe( + '1938-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1939) as number).toISOString()` to be `"1939-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1939) as number).toISOString()).toBe( + '1939-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1940) as number).toISOString()` to be `"1940-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1940) as number).toISOString()).toBe( + '1940-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1941) as number).toISOString()` to be `"1941-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1941) as number).toISOString()).toBe( + '1941-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1942) as number).toISOString()` to be `"1942-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1942) as number).toISOString()).toBe( + '1942-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1943) as number).toISOString()` to be `"1943-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1943) as number).toISOString()).toBe( + '1943-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1944) as number).toISOString()` to be `"1944-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1944) as number).toISOString()).toBe( + '1944-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1945) as number).toISOString()` to be `"1945-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1945) as number).toISOString()).toBe( + '1945-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1946) as number).toISOString()` to be `"1946-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1946) as number).toISOString()).toBe( + '1946-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1947) as number).toISOString()` to be `"1947-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1947) as number).toISOString()).toBe( + '1947-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1948) as number).toISOString()` to be `"1948-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1948) as number).toISOString()).toBe( + '1948-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1949) as number).toISOString()` to be `"1949-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1949) as number).toISOString()).toBe( + '1949-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1950) as number).toISOString()` to be `"1950-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1950) as number).toISOString()).toBe( + '1950-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1951) as number).toISOString()` to be `"1951-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1951) as number).toISOString()).toBe( + '1951-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1952) as number).toISOString()` to be `"1952-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1952) as number).toISOString()).toBe( + '1952-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1953) as number).toISOString()` to be `"1953-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1953) as number).toISOString()).toBe( + '1953-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1954) as number).toISOString()` to be `"1954-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1954) as number).toISOString()).toBe( + '1954-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1955) as number).toISOString()` to be `"1955-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1955) as number).toISOString()).toBe( + '1955-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1956) as number).toISOString()` to be `"1956-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1956) as number).toISOString()).toBe( + '1956-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1957) as number).toISOString()` to be `"1957-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1957) as number).toISOString()).toBe( + '1957-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1958) as number).toISOString()` to be `"1958-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1958) as number).toISOString()).toBe( + '1958-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1959) as number).toISOString()` to be `"1959-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1959) as number).toISOString()).toBe( + '1959-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1960) as number).toISOString()` to be `"1960-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1960) as number).toISOString()).toBe( + '1960-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1961) as number).toISOString()` to be `"1961-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1961) as number).toISOString()).toBe( + '1961-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1962) as number).toISOString()` to be `"1962-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1962) as number).toISOString()).toBe( + '1962-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1963) as number).toISOString()` to be `"1963-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1963) as number).toISOString()).toBe( + '1963-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1964) as number).toISOString()` to be `"1964-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1964) as number).toISOString()).toBe( + '1964-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1965) as number).toISOString()` to be `"1965-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1965) as number).toISOString()).toBe( + '1965-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1966) as number).toISOString()` to be `"1966-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1966) as number).toISOString()).toBe( + '1966-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1967) as number).toISOString()` to be `"1967-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1967) as number).toISOString()).toBe( + '1967-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1968) as number).toISOString()` to be `"1968-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1968) as number).toISOString()).toBe( + '1968-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1969) as number).toISOString()` to be `"1969-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1969) as number).toISOString()).toBe( + '1969-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1970) as number).toISOString()` to be `"1970-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1970) as number).toISOString()).toBe( + '1970-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1971) as number).toISOString()` to be `"1971-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1971) as number).toISOString()).toBe( + '1971-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1972) as number).toISOString()` to be `"1972-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1972) as number).toISOString()).toBe( + '1972-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1973) as number).toISOString()` to be `"1973-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1973) as number).toISOString()).toBe( + '1973-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1974) as number).toISOString()` to be `"1974-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1974) as number).toISOString()).toBe( + '1974-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1975) as number).toISOString()` to be `"1975-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1975) as number).toISOString()).toBe( + '1975-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1976) as number).toISOString()` to be `"1976-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1976) as number).toISOString()).toBe( + '1976-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1977) as number).toISOString()` to be `"1977-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1977) as number).toISOString()).toBe( + '1977-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1978) as number).toISOString()` to be `"1978-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1978) as number).toISOString()).toBe( + '1978-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1979) as number).toISOString()` to be `"1979-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1979) as number).toISOString()).toBe( + '1979-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1980) as number).toISOString()` to be `"1980-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1980) as number).toISOString()).toBe( + '1980-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1981) as number).toISOString()` to be `"1981-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1981) as number).toISOString()).toBe( + '1981-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1982) as number).toISOString()` to be `"1982-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1982) as number).toISOString()).toBe( + '1982-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1983) as number).toISOString()` to be `"1983-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1983) as number).toISOString()).toBe( + '1983-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1984) as number).toISOString()` to be `"1984-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1984) as number).toISOString()).toBe( + '1984-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1985) as number).toISOString()` to be `"1985-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1985) as number).toISOString()).toBe( + '1985-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1986) as number).toISOString()` to be `"1986-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1986) as number).toISOString()).toBe( + '1986-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1987) as number).toISOString()` to be `"1987-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1987) as number).toISOString()).toBe( + '1987-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1988) as number).toISOString()` to be `"1988-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1988) as number).toISOString()).toBe( + '1988-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1989) as number).toISOString()` to be `"1989-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1989) as number).toISOString()).toBe( + '1989-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(1990) as number).toISOString()` to be `"1990-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1990) as number).toISOString()).toBe( + '1990-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1991) as number).toISOString()` to be `"1991-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1991) as number).toISOString()).toBe( + '1991-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1992) as number).toISOString()` to be `"1992-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1992) as number).toISOString()).toBe( + '1992-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1993) as number).toISOString()` to be `"1993-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1993) as number).toISOString()).toBe( + '1993-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1994) as number).toISOString()` to be `"1994-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1994) as number).toISOString()).toBe( + '1994-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1995) as number).toISOString()` to be `"1995-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1995) as number).toISOString()).toBe( + '1995-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1996) as number).toISOString()` to be `"1996-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1996) as number).toISOString()).toBe( + '1996-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1997) as number).toISOString()` to be `"1997-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1997) as number).toISOString()).toBe( + '1997-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1998) as number).toISOString()` to be `"1998-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1998) as number).toISOString()).toBe( + '1998-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(1999) as number).toISOString()` to be `"1999-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(1999) as number).toISOString()).toBe( + '1999-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(2000) as number).toISOString()` to be `"2000-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2000) as number).toISOString()).toBe( + '2000-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2001) as number).toISOString()` to be `"2001-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2001) as number).toISOString()).toBe( + '2001-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2002) as number).toISOString()` to be `"2002-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2002) as number).toISOString()).toBe( + '2002-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2003) as number).toISOString()` to be `"2003-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2003) as number).toISOString()).toBe( + '2003-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2004) as number).toISOString()` to be `"2004-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2004) as number).toISOString()).toBe( + '2004-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2005) as number).toISOString()` to be `"2005-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2005) as number).toISOString()).toBe( + '2005-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2006) as number).toISOString()` to be `"2006-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2006) as number).toISOString()).toBe( + '2006-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2007) as number).toISOString()` to be `"2007-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2007) as number).toISOString()).toBe( + '2007-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2008) as number).toISOString()` to be `"2008-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2008) as number).toISOString()).toBe( + '2008-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2009) as number).toISOString()` to be `"2009-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2009) as number).toISOString()).toBe( + '2009-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(2010) as number).toISOString()` to be `"2010-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2010) as number).toISOString()).toBe( + '2010-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2011) as number).toISOString()` to be `"2011-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2011) as number).toISOString()).toBe( + '2011-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2012) as number).toISOString()` to be `"2012-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2012) as number).toISOString()).toBe( + '2012-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2013) as number).toISOString()` to be `"2013-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2013) as number).toISOString()).toBe( + '2013-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2014) as number).toISOString()` to be `"2014-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2014) as number).toISOString()).toBe( + '2014-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2015) as number).toISOString()` to be `"2015-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2015) as number).toISOString()).toBe( + '2015-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2016) as number).toISOString()` to be `"2016-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2016) as number).toISOString()).toBe( + '2016-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2017) as number).toISOString()` to be `"2017-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2017) as number).toISOString()).toBe( + '2017-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2018) as number).toISOString()` to be `"2018-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2018) as number).toISOString()).toBe( + '2018-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2019) as number).toISOString()` to be `"2019-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2019) as number).toISOString()).toBe( + '2019-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(2020) as number).toISOString()` to be `"2020-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2020) as number).toISOString()).toBe( + '2020-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2021) as number).toISOString()` to be `"2021-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2021) as number).toISOString()).toBe( + '2021-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2022) as number).toISOString()` to be `"2022-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2022) as number).toISOString()).toBe( + '2022-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2023) as number).toISOString()` to be `"2023-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2023) as number).toISOString()).toBe( + '2023-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2024) as number).toISOString()` to be `"2024-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2024) as number).toISOString()).toBe( + '2024-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2025) as number).toISOString()` to be `"2025-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2025) as number).toISOString()).toBe( + '2025-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2026) as number).toISOString()` to be `"2026-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2026) as number).toISOString()).toBe( + '2026-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2027) as number).toISOString()` to be `"2027-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2027) as number).toISOString()).toBe( + '2027-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2028) as number).toISOString()` to be `"2028-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2028) as number).toISOString()).toBe( + '2028-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2029) as number).toISOString()` to be `"2029-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2029) as number).toISOString()).toBe( + '2029-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(2090) as number).toISOString()` to be `"2090-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2090) as number).toISOString()).toBe( + '2090-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2091) as number).toISOString()` to be `"2091-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2091) as number).toISOString()).toBe( + '2091-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2092) as number).toISOString()` to be `"2092-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2092) as number).toISOString()).toBe( + '2092-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2093) as number).toISOString()` to be `"2093-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2093) as number).toISOString()).toBe( + '2093-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2094) as number).toISOString()` to be `"2094-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2094) as number).toISOString()).toBe( + '2094-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2095) as number).toISOString()` to be `"2095-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2095) as number).toISOString()).toBe( + '2095-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2096) as number).toISOString()` to be `"2096-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2096) as number).toISOString()).toBe( + '2096-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2097) as number).toISOString()` to be `"2097-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2097) as number).toISOString()).toBe( + '2097-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2098) as number).toISOString()` to be `"2098-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2098) as number).toISOString()).toBe( + '2098-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2099) as number).toISOString()` to be `"2099-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2099) as number).toISOString()).toBe( + '2099-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(2100) as number).toISOString()` to be `"2100-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2100) as number).toISOString()).toBe( + '2100-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2101) as number).toISOString()` to be `"2101-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2101) as number).toISOString()).toBe( + '2101-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2102) as number).toISOString()` to be `"2102-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2102) as number).toISOString()).toBe( + '2102-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2103) as number).toISOString()` to be `"2103-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2103) as number).toISOString()).toBe( + '2103-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2104) as number).toISOString()` to be `"2104-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2104) as number).toISOString()).toBe( + '2104-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2105) as number).toISOString()` to be `"2105-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2105) as number).toISOString()).toBe( + '2105-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2106) as number).toISOString()` to be `"2106-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2106) as number).toISOString()).toBe( + '2106-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2107) as number).toISOString()` to be `"2107-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2107) as number).toISOString()).toBe( + '2107-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2108) as number).toISOString()` to be `"2108-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2108) as number).toISOString()).toBe( + '2108-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2109) as number).toISOString()` to be `"2109-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2109) as number).toISOString()).toBe( + '2109-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(2190) as number).toISOString()` to be `"2190-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2190) as number).toISOString()).toBe( + '2190-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2191) as number).toISOString()` to be `"2191-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2191) as number).toISOString()).toBe( + '2191-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2192) as number).toISOString()` to be `"2192-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2192) as number).toISOString()).toBe( + '2192-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2193) as number).toISOString()` to be `"2193-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2193) as number).toISOString()).toBe( + '2193-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2194) as number).toISOString()` to be `"2194-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2194) as number).toISOString()).toBe( + '2194-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2195) as number).toISOString()` to be `"2195-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2195) as number).toISOString()).toBe( + '2195-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2196) as number).toISOString()` to be `"2196-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2196) as number).toISOString()).toBe( + '2196-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2197) as number).toISOString()` to be `"2197-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2197) as number).toISOString()).toBe( + '2197-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2198) as number).toISOString()` to be `"2198-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2198) as number).toISOString()).toBe( + '2198-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2199) as number).toISOString()` to be `"2199-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2199) as number).toISOString()).toBe( + '2199-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(2200) as number).toISOString()` to be `"2200-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2200) as number).toISOString()).toBe( + '2200-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2201) as number).toISOString()` to be `"2201-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2201) as number).toISOString()).toBe( + '2201-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2202) as number).toISOString()` to be `"2202-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2202) as number).toISOString()).toBe( + '2202-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2203) as number).toISOString()` to be `"2203-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2203) as number).toISOString()).toBe( + '2203-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2204) as number).toISOString()` to be `"2204-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2204) as number).toISOString()).toBe( + '2204-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2205) as number).toISOString()` to be `"2205-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2205) as number).toISOString()).toBe( + '2205-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2206) as number).toISOString()` to be `"2206-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2206) as number).toISOString()).toBe( + '2206-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2207) as number).toISOString()` to be `"2207-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2207) as number).toISOString()).toBe( + '2207-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2208) as number).toISOString()` to be `"2208-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2208) as number).toISOString()).toBe( + '2208-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2209) as number).toISOString()` to be `"2209-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2209) as number).toISOString()).toBe( + '2209-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(2290) as number).toISOString()` to be `"2290-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2290) as number).toISOString()).toBe( + '2290-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2291) as number).toISOString()` to be `"2291-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2291) as number).toISOString()).toBe( + '2291-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2292) as number).toISOString()` to be `"2292-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2292) as number).toISOString()).toBe( + '2292-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2293) as number).toISOString()` to be `"2293-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2293) as number).toISOString()).toBe( + '2293-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2294) as number).toISOString()` to be `"2294-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2294) as number).toISOString()).toBe( + '2294-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2295) as number).toISOString()` to be `"2295-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2295) as number).toISOString()).toBe( + '2295-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2296) as number).toISOString()` to be `"2296-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2296) as number).toISOString()).toBe( + '2296-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2297) as number).toISOString()` to be `"2297-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2297) as number).toISOString()).toBe( + '2297-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2298) as number).toISOString()` to be `"2298-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2298) as number).toISOString()).toBe( + '2298-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2299) as number).toISOString()` to be `"2299-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2299) as number).toISOString()).toBe( + '2299-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(2300) as number).toISOString()` to be `"2300-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2300) as number).toISOString()).toBe( + '2300-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2301) as number).toISOString()` to be `"2301-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2301) as number).toISOString()).toBe( + '2301-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2302) as number).toISOString()` to be `"2302-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2302) as number).toISOString()).toBe( + '2302-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2303) as number).toISOString()` to be `"2303-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2303) as number).toISOString()).toBe( + '2303-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2304) as number).toISOString()` to be `"2304-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2304) as number).toISOString()).toBe( + '2304-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2305) as number).toISOString()` to be `"2305-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2305) as number).toISOString()).toBe( + '2305-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2306) as number).toISOString()` to be `"2306-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2306) as number).toISOString()).toBe( + '2306-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2307) as number).toISOString()` to be `"2307-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2307) as number).toISOString()).toBe( + '2307-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2308) as number).toISOString()` to be `"2308-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2308) as number).toISOString()).toBe( + '2308-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2309) as number).toISOString()` to be `"2309-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2309) as number).toISOString()).toBe( + '2309-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(2390) as number).toISOString()` to be `"2390-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2390) as number).toISOString()).toBe( + '2390-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2391) as number).toISOString()` to be `"2391-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2391) as number).toISOString()).toBe( + '2391-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2392) as number).toISOString()` to be `"2392-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2392) as number).toISOString()).toBe( + '2392-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2393) as number).toISOString()` to be `"2393-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2393) as number).toISOString()).toBe( + '2393-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2394) as number).toISOString()` to be `"2394-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2394) as number).toISOString()).toBe( + '2394-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2395) as number).toISOString()` to be `"2395-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2395) as number).toISOString()).toBe( + '2395-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2396) as number).toISOString()` to be `"2396-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2396) as number).toISOString()).toBe( + '2396-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2397) as number).toISOString()` to be `"2397-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2397) as number).toISOString()).toBe( + '2397-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2398) as number).toISOString()` to be `"2398-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2398) as number).toISOString()).toBe( + '2398-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2399) as number).toISOString()` to be `"2399-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2399) as number).toISOString()).toBe( + '2399-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(2400) as number).toISOString()` to be `"2400-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2400) as number).toISOString()).toBe( + '2400-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2401) as number).toISOString()` to be `"2401-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2401) as number).toISOString()).toBe( + '2401-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2402) as number).toISOString()` to be `"2402-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2402) as number).toISOString()).toBe( + '2402-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2403) as number).toISOString()` to be `"2403-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2403) as number).toISOString()).toBe( + '2403-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2404) as number).toISOString()` to be `"2404-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2404) as number).toISOString()).toBe( + '2404-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2405) as number).toISOString()` to be `"2405-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2405) as number).toISOString()).toBe( + '2405-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2406) as number).toISOString()` to be `"2406-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2406) as number).toISOString()).toBe( + '2406-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2407) as number).toISOString()` to be `"2407-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2407) as number).toISOString()).toBe( + '2407-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2408) as number).toISOString()` to be `"2408-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2408) as number).toISOString()).toBe( + '2408-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2409) as number).toISOString()` to be `"2409-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2409) as number).toISOString()).toBe( + '2409-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(2790) as number).toISOString()` to be `"2790-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2790) as number).toISOString()).toBe( + '2790-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2791) as number).toISOString()` to be `"2791-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2791) as number).toISOString()).toBe( + '2791-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2792) as number).toISOString()` to be `"2792-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2792) as number).toISOString()).toBe( + '2792-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2793) as number).toISOString()` to be `"2793-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2793) as number).toISOString()).toBe( + '2793-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2794) as number).toISOString()` to be `"2794-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2794) as number).toISOString()).toBe( + '2794-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2795) as number).toISOString()` to be `"2795-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2795) as number).toISOString()).toBe( + '2795-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2796) as number).toISOString()` to be `"2796-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2796) as number).toISOString()).toBe( + '2796-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2797) as number).toISOString()` to be `"2797-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2797) as number).toISOString()).toBe( + '2797-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2798) as number).toISOString()` to be `"2798-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2798) as number).toISOString()).toBe( + '2798-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2799) as number).toISOString()` to be `"2799-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2799) as number).toISOString()).toBe( + '2799-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(2800) as number).toISOString()` to be `"2800-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2800) as number).toISOString()).toBe( + '2800-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2801) as number).toISOString()` to be `"2801-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2801) as number).toISOString()).toBe( + '2801-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2802) as number).toISOString()` to be `"2802-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2802) as number).toISOString()).toBe( + '2802-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2803) as number).toISOString()` to be `"2803-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2803) as number).toISOString()).toBe( + '2803-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2804) as number).toISOString()` to be `"2804-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2804) as number).toISOString()).toBe( + '2804-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2805) as number).toISOString()` to be `"2805-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2805) as number).toISOString()).toBe( + '2805-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2806) as number).toISOString()` to be `"2806-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2806) as number).toISOString()).toBe( + '2806-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2807) as number).toISOString()` to be `"2807-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2807) as number).toISOString()).toBe( + '2807-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2808) as number).toISOString()` to be `"2808-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2808) as number).toISOString()).toBe( + '2808-01-01T00:00:00.000Z', + ); + }); + test('Expect `new Date(date.toMilliseconds(2809) as number).toISOString()` to be `"2809-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(2809) as number).toISOString()).toBe( + '2809-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(date.toMilliseconds(275760) as number).toISOString()` to be `"+275760-01-01T00:00:00.000Z"`.', () => { + expect(new Date(date.toMilliseconds(275760) as number).toISOString()).toBe( + '+275760-01-01T00:00:00.000Z', + ); + }); + + test('Expect `new Date(864e13).toISOString()` to be `"+275760-09-13T00:00:00.000Z"`.', () => { + expect(new Date(864e13).toISOString()).toBe('+275760-09-13T00:00:00.000Z'); + }); + test('Expect `new Date(DATE.TIME_MAX).toISOString()` to be `"+275760-09-13T00:00:00.000Z"`.', () => { + expect(new Date(DATE.TIME_MAX).toISOString()).toBe('+275760-09-13T00:00:00.000Z'); + }); +}); diff --git a/package.json b/package.json index cb09680..e94a963 100644 --- a/package.json +++ b/package.json @@ -33,10 +33,10 @@ "node": "20.19.5", "npm": "10.8.2" }, - "type": "module", "imports": { "#src/*": "./source/*" }, + "type": "module", "devDependencies": { "prettier": "3.6.2", "typescript": "^5.9.3", diff --git a/source/constant/date.mts b/source/constant/date.mts new file mode 100644 index 0000000..50aeeb0 --- /dev/null +++ b/source/constant/date.mts @@ -0,0 +1,46 @@ +/**! + * Date constants. + * + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toDateString + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toString + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toTimeString + * @see https://en.wikipedia.org/wiki/ISO_8601 + * @see https://en.wikipedia.org/wiki/List_of_UTC_offsets + * @see https://en.wikipedia.org/wiki/RFC_2822#Message_format + * @see https://www.iana.org/time-zones + * @module constant/date + */ + +export const EPOCH_ISO = '1970-01-01T00:00:00.000Z', + EPOCH_RFC = '1970-01-01T00:00:00+00:00', + EPOCH_STRING = 'Thu Jan 01 1970 00:00:00 GMT+0000 (UTC)', + EPOCH_YEAR = 1970, + TIME_SECOND = 1e3, + TIME_MINUTE = TIME_SECOND * 60, + TIME_HOUR = TIME_MINUTE * 60, + TIME_DAY = TIME_HOUR * 24, + TIME_MAX = TIME_DAY * 1e8, + TIME_MIN = -TIME_MAX, + TIME_YEAR = TIME_DAY * 365, + TIME_YEAR_LEAP = TIME_YEAR + TIME_DAY, + /** @todo Calculate maximum year value dynamically. */ + TIME_YEAR_MAX = 275760, + /** @todo Calculate minimum year value dynamically. */ + TIME_YEAR_MIN = -271820; + +export default { + EPOCH_ISO, + EPOCH_RFC, + EPOCH_STRING, + EPOCH_YEAR, + TIME_DAY, + TIME_HOUR, + TIME_MAX, + TIME_MIN, + TIME_MINUTE, + TIME_SECOND, + TIME_YEAR, + TIME_YEAR_LEAP, + TIME_YEAR_MAX, + TIME_YEAR_MIN, +}; diff --git a/source/constant/regexp.mts b/source/constant/regexp.mts new file mode 100644 index 0000000..d12965c --- /dev/null +++ b/source/constant/regexp.mts @@ -0,0 +1,46 @@ +/**! + * Regular expression constants. + * + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp + * @see https://www.regular-expressions.info + * @module constant/regexp + */ + +export const BTC_ADDRESS = /^(bc1|[13])[\dA-HJ-NP-Za-z]{25,59}$/, + /** @see https://en.wikipedia.org/wiki/ISO_8601 */ + DATE_ISO_EPOCH = + /^(19[7-9]\d|20[0-2]\d)-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])T([01][0-9]|2[0-3]):([0-5]\d):([0-5]\d)(\.\d{3})?Z$/, + /** @see https://en.wikipedia.org/wiki/RFC_2822#Message_format */ + DATE_RFC_EPOCH = + /^(19[7-9]\d|20[0-2]\d)-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])T([01][0-9]|2[0-3]):([0-5]\d):([0-5]\d)+[01]\d{3}$/, + /** + * Matches a string representing a date in a specific timezone. + * Can be obtained by `new Date().toString()`, TZ value depends on the OS settings: + * + "Thu Jan 01 1970 05:00:00 GMT+0000 (UTC)" + * + "Thu Jan 01 1970 05:00:00 GMT+0500 (Yekaterinburg Standard Time)" + * + "Thu Jan 01 1970 00:00:00 GMT+0500 (Екатеринбург, стандартное время)" + */ + DATE_STRING = + /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{2} -?\d{4,6} ([01]\d|2[0-3]):([0-5]\d):([0-5]\d) GMT(\+|-)[01]\d{3} \(.{3,32}\)/, + EVM_ADDRESS = /^0x[\dA-Fa-f]{40}$/, + EVM_TXID = /^0x[\dA-Fa-f]{64}$/, + FLOAT64 = /^\d{0,21}.\d{1,21}$/, + INTEGER = /^\d{1,21}$/, + SOL_ADDRESS = /^[\dA-Za-z]{44}$/, + /** @see https://tools.ietf.org/html/rfc3986#appendix-B */ + URI = /^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/, + UUID = /^[\dA-Fa-f]{8}\-([\dA-Fa-f]{4}\-){3}[\dA-Fa-f]{12}$/; + +export default { + BTC_ADDRESS, + DATE_ISO_EPOCH, + DATE_RFC_EPOCH, + DATE_STRING, + EVM_ADDRESS, + EVM_TXID, + FLOAT64, + INTEGER, + SOL_ADDRESS, + URI, + UUID, +}; diff --git a/source/utility/date.mts b/source/utility/date.mts new file mode 100644 index 0000000..146d301 --- /dev/null +++ b/source/utility/date.mts @@ -0,0 +1,84 @@ +/**! + * Date utilities. + * + * @see https://en.wikipedia.org/wiki/20th_century + * @see https://en.wikipedia.org/wiki/Leap_day + * @see https://en.wikipedia.org/wiki/Leap_second + * @see https://en.wikipedia.org/wiki/Leap_year + * @see https://en.wikipedia.org/wiki/Unix_time + * @see https://developer.mozilla.org/en-US/docs/Glossary/Unix_time + * @module utility/date + */ + +import { + EPOCH_YEAR, + TIME_YEAR, + TIME_YEAR_MAX, + TIME_YEAR_MIN, + TIME_YEAR_LEAP, +} from '#src/constant/date.mts'; + +/** + * Get century of a specified year. + * @param {number} [year=EPOCH_YEAR] Year to get century from. + * @returns {number} Century of a specified year. + */ +export const getCentury = (year: number = EPOCH_YEAR): number => { + return Math.ceil(year / 100); +}; + +/** + * Get timezone of a provided date. + * @param {boolean} [isOffset=true] Timezone offset. + * @returns {null | number | string} Timezone offset if the `isOffset` is truthy, else parsed string. + */ +export const getTimezone = (isOffset = true): null | number | string => { + const date = new Date(); + + if (isOffset === true) return date.getTimezoneOffset() / 60; // E.g., -5. + + return date.toTimeString().match(/(\+|-)\d{4}/)?.[0] ?? null; // E.g., "+0500". +}; + +/** + * ECMAScript epoch date object, "Thu Jan 01 1970 05:00:00 GMT+0000 (UTC)". + * @type {Date} + */ +export const epoch: Date = new Date(EPOCH_YEAR, 0, 1, (getTimezone() as number) * -1, 0, 0, 0); + +/** + * Translate specified year to an amount of milliseconds elapsed since the ECMAScript/Unix epoch. + * @param {number} [year=EPOCH_YEAR] Year to translate milliseconds from. + * @returns {null | number} Amount of milliseconds elapsed since the ECMAScript/Unix epoch. + */ +export const toMilliseconds = (year = EPOCH_YEAR): null | number => { + if (TIME_YEAR_MIN <= year && year <= TIME_YEAR_MAX) { + const years = year - EPOCH_YEAR; + + let century = getCentury(year), + leap = Math.round((years - 1) / 4); + + if (century < 21) { + while (century < 21) { + if (century % 4 !== 0) leap++; + century++; + } + } else if (century > 21) { + while (century > 21) { + if ((century - 1) % 4 !== 0) leap--; + century--; + } + } + + return (years - leap) * TIME_YEAR + leap * TIME_YEAR_LEAP; + } + + return null; +}; + +export default { + epoch, + getCentury, + getTimezone, + toMilliseconds, +}; diff --git a/tsconfig.json b/tsconfig.json index 9e93306..9c93bb1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,18 +9,18 @@ "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "isolatedModules": true, - "lib": ["ESNext", "DOM", "DOM.Iterable"], + "lib": ["DOM", "DOM.Iterable", "ESNext"], "module": "NodeNext", "moduleDetection": "force", "moduleResolution": "NodeNext", "noEmit": true, "noImplicitAny": true, "noImplicitThis": true, + "outDir": "./distribution", "paths": { "#src/*": ["./source/*"] }, "preserveConstEnums": true, - "outDir": "./distribution", "resolveJsonModule": true, "resolvePackageJsonExports": true, "resolvePackageJsonImports": true,