export const tests = [] const t = (f) => tests.push(f) // is the date a valid date? const invalid = (callback, ary = 1) => { for (const s of [ `new Date('')`, `new Date(NaN)`, `''`, `'2013-01-01'`, `NaN`, ]) { if (callback(...Array(ary).fill(eval(s)))) { throw Error(`${callback.name}(${s}) should be false`) } } } // isValid t(() => !invalid(isValid)) t(() => isValid(new Date())) t(() => isValid(Date.now())) t(() => isValid(new Date('December 17, 1995 03:24:00'))) t(() => isValid(new Date(1488370835081))) t(() => isValid(new Date('1995-12-17T03:24:00'))) t(() => isValid(new Date('1995-12-17T03:24:00').getTime())) // isAfter t(() => !invalid(isAfter, 2)) t(() => !isAfter(new Date('1992-01-01'), new Date('1992-01-02'))) t(() => !isAfter(new Date('1992-01-01'), new Date('1992-01-02'))) t(() => isAfter(new Date(2321, 11, 21), new Date(Date.now()))) t(() => isAfter(123123, 526)) // isBefore t(() => !invalid(isBefore, 2)) t(() => !isBefore(new Date(2321, 11, 21), new Date(Date.now()))) t(() => !isBefore(123123, 526)) t(() => isBefore(new Date('1992-01-01'), new Date('1992-01-02'))) t(() => isBefore(new Date('1992-01-01'), new Date('1992-01-02'))) // isFuture t(() => !invalid(isFuture)) t(() => !isFuture(new Date('1992-01-01'))) t(() => !isFuture(new Date(Date.now() - 1))) t(() => isFuture(new Date(2021, 11, 31))) t(() => isFuture(new Date(Date.now() + 1))) // isPast t(() => !invalid(isPast)) t(() => !isPast(new Date(Date.now() + 1))) t(() => !isPast(new Date(2021, 11, 31))) t(() => isPast(new Date(1442, 11, 31))) t(() => isPast(new Date(Date.now() - 1))) Object.freeze(tests)