@checkdigit/time 4.0.0-PR.18-81a3 → 4.0.0-PR.18-e0fa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/package.json +1 -1
- package/src/date-fns/_lib/addLeadingZeros/test.mts +0 -12
- package/src/date-fns/_lib/getRoundingMethod/test.mts +0 -50
- package/src/date-fns/_lib/getTimezoneOffsetInMilliseconds/test.mts +0 -25
- package/src/date-fns/add/test.mts +0 -95
- package/src/date-fns/addBusinessDays/test.mts +0 -78
- package/src/date-fns/addDays/test.mts +0 -90
- package/src/date-fns/addHours/test.mts +0 -30
- package/src/date-fns/addISOWeekYears/test.mts +0 -41
- package/src/date-fns/addMilliseconds/test.mts +0 -30
- package/src/date-fns/addMinutes/test.mts +0 -30
- package/src/date-fns/addMonths/test.mts +0 -123
- package/src/date-fns/addQuarters/test.mts +0 -47
- package/src/date-fns/addSeconds/test.mts +0 -30
- package/src/date-fns/addWeeks/test.mts +0 -30
- package/src/date-fns/addYears/test.mts +0 -46
- package/src/date-fns/areIntervalsOverlapping/test.mts +0 -231
- package/src/date-fns/clamp/test.mts +0 -36
- package/src/date-fns/closestIndexTo/test.mts +0 -51
- package/src/date-fns/closestTo/test.mts +0 -49
- package/src/date-fns/compareAsc/test.mts +0 -58
- package/src/date-fns/compareDesc/test.mts +0 -58
- package/src/date-fns/constructFrom/test.mts +0 -47
- package/src/date-fns/constructNow/test.mts +0 -37
- package/src/date-fns/daysToWeeks/test.mts +0 -36
- package/src/date-fns/differenceInBusinessDays/test.mts +0 -102
- package/src/date-fns/differenceInCalendarDays/test.mts +0 -206
- package/src/date-fns/differenceInCalendarISOWeekYears/test.mts +0 -93
- package/src/date-fns/differenceInCalendarISOWeeks/test.mts +0 -89
- package/src/date-fns/differenceInCalendarMonths/test.mts +0 -82
- package/src/date-fns/differenceInCalendarQuarters/test.mts +0 -82
- package/src/date-fns/differenceInCalendarWeeks/test.mts +0 -136
- package/src/date-fns/differenceInCalendarYears/test.mts +0 -82
- package/src/date-fns/differenceInDays/test.mts +0 -175
- package/src/date-fns/differenceInHours/test.mts +0 -122
- package/src/date-fns/differenceInISOWeekYears/test.mts +0 -93
- package/src/date-fns/differenceInMilliseconds/test.mts +0 -53
- package/src/date-fns/differenceInMinutes/test.mts +0 -123
- package/src/date-fns/differenceInMonths/test.mts +0 -121
- package/src/date-fns/differenceInQuarters/test.mts +0 -109
- package/src/date-fns/differenceInSeconds/test.mts +0 -144
- package/src/date-fns/differenceInWeeks/test.mts +0 -111
- package/src/date-fns/differenceInYears/test.mts +0 -97
- package/src/date-fns/eachDayOfInterval/test.mts +0 -164
- package/src/date-fns/eachHourOfInterval/test.mts +0 -154
- package/src/date-fns/eachMinuteOfInterval/test.mts +0 -159
- package/src/date-fns/eachMonthOfInterval/test.mts +0 -151
- package/src/date-fns/eachQuarterOfInterval/test.mts +0 -136
- package/src/date-fns/eachWeekOfInterval/test.mts +0 -177
- package/src/date-fns/eachWeekendOfInterval/test.mts +0 -67
- package/src/date-fns/eachWeekendOfMonth/test.mts +0 -23
- package/src/date-fns/eachWeekendOfYear/test.mts +0 -18
- package/src/date-fns/eachYearOfInterval/test.mts +0 -136
- package/src/date-fns/endOfDay/test.mts +0 -27
- package/src/date-fns/endOfDecade/test.mts +0 -32
- package/src/date-fns/endOfHour/test.mts +0 -26
- package/src/date-fns/endOfISOWeek/test.mts +0 -27
- package/src/date-fns/endOfISOWeekYear/test.mts +0 -36
- package/src/date-fns/endOfMinute/test.mts +0 -26
- package/src/date-fns/endOfMonth/test.mts +0 -41
- package/src/date-fns/endOfQuarter/test.mts +0 -27
- package/src/date-fns/endOfSecond/test.mts +0 -26
- package/src/date-fns/endOfToday/test.mts +0 -19
- package/src/date-fns/endOfTomorrow/test.mts +0 -29
- package/src/date-fns/endOfWeek/test.mts +0 -86
- package/src/date-fns/endOfYear/test.mts +0 -27
- package/src/date-fns/endOfYesterday/test.mts +0 -29
- package/src/date-fns/format/test.mts +0 -909
- package/src/date-fns/formatDistance/test.mts +0 -189
- package/src/date-fns/formatDistanceStrict/test.mts +0 -329
- package/src/date-fns/formatDistanceToNow/test.mts +0 -196
- package/src/date-fns/formatDistanceToNowStrict/test.mts +0 -293
- package/src/date-fns/formatDuration/test.mts +0 -74
- package/src/date-fns/formatISO/test.mts +0 -55
- package/src/date-fns/formatISO9075/test.mts +0 -35
- package/src/date-fns/formatISODuration/test.mts +0 -75
- package/src/date-fns/formatRFC3339/test.mts +0 -41
- package/src/date-fns/formatRFC7231/test.mts +0 -18
- package/src/date-fns/formatRelative/test.mts +0 -92
- package/src/date-fns/fp/_lib/convertToFP/test.mts +0 -114
- package/src/date-fns/fromUnixTime/test.mts +0 -14
- package/src/date-fns/getDate/test.mts +0 -19
- package/src/date-fns/getDay/test.mts +0 -19
- package/src/date-fns/getDayOfYear/test.mts +0 -27
- package/src/date-fns/getDaysInMonth/test.mts +0 -33
- package/src/date-fns/getDaysInYear/test.mts +0 -35
- package/src/date-fns/getDecade/test.mts +0 -24
- package/src/date-fns/getDefaultOptions/test.mts +0 -58
- package/src/date-fns/getHours/test.mts +0 -19
- package/src/date-fns/getISODay/test.mts +0 -24
- package/src/date-fns/getISOWeek/test.mts +0 -54
- package/src/date-fns/getISOWeekYear/test.mts +0 -27
- package/src/date-fns/getISOWeeksInYear/test.mts +0 -37
- package/src/date-fns/getMilliseconds/test.mts +0 -19
- package/src/date-fns/getMinutes/test.mts +0 -19
- package/src/date-fns/getMonth/test.mts +0 -19
- package/src/date-fns/getOverlappingDaysInIntervals/test.mts +0 -243
- package/src/date-fns/getQuarter/test.mts +0 -19
- package/src/date-fns/getSeconds/test.mts +0 -19
- package/src/date-fns/getTime/test.mts +0 -21
- package/src/date-fns/getUnixTime/test.mts +0 -26
- package/src/date-fns/getWeek/test.mts +0 -56
- package/src/date-fns/getWeekOfMonth/test.mts +0 -75
- package/src/date-fns/getWeekYear/test.mts +0 -49
- package/src/date-fns/getWeeksInMonth/test.mts +0 -51
- package/src/date-fns/getYear/test.mts +0 -19
- package/src/date-fns/hoursToMilliseconds/test.mts +0 -23
- package/src/date-fns/hoursToMinutes/test.mts +0 -25
- package/src/date-fns/hoursToSeconds/test.mts +0 -25
- package/src/date-fns/interval/test.mts +0 -42
- package/src/date-fns/intervalToDuration/test.mts +0 -235
- package/src/date-fns/intlFormat/test.mts +0 -88
- package/src/date-fns/intlFormatDistance/test.mts +0 -588
- package/src/date-fns/isAfter/test.mts +0 -39
- package/src/date-fns/isBefore/test.mts +0 -39
- package/src/date-fns/isDate/test.mts +0 -72
- package/src/date-fns/isEqual/test.mts +0 -34
- package/src/date-fns/isExists/test.mts +0 -14
- package/src/date-fns/isFirstDayOfMonth/test.mts +0 -25
- package/src/date-fns/isFriday/test.mts +0 -24
- package/src/date-fns/isFuture/test.mts +0 -34
- package/src/date-fns/isLastDayOfMonth/test.mts +0 -25
- package/src/date-fns/isLeapYear/test.mts +0 -35
- package/src/date-fns/isMatch/test.mts +0 -27
- package/src/date-fns/isMonday/test.mts +0 -24
- package/src/date-fns/isPast/test.mts +0 -34
- package/src/date-fns/isSameDay/test.mts +0 -37
- package/src/date-fns/isSameHour/test.mts +0 -37
- package/src/date-fns/isSameISOWeek/test.mts +0 -34
- package/src/date-fns/isSameISOWeekYear/test.mts +0 -48
- package/src/date-fns/isSameMinute/test.mts +0 -37
- package/src/date-fns/isSameMonth/test.mts +0 -34
- package/src/date-fns/isSameQuarter/test.mts +0 -34
- package/src/date-fns/isSameSecond/test.mts +0 -43
- package/src/date-fns/isSameWeek/test.mts +0 -58
- package/src/date-fns/isSameYear/test.mts +0 -34
- package/src/date-fns/isSaturday/test.mts +0 -24
- package/src/date-fns/isSunday/test.mts +0 -24
- package/src/date-fns/isThisHour/test.mts +0 -34
- package/src/date-fns/isThisISOWeek/test.mts +0 -34
- package/src/date-fns/isThisMinute/test.mts +0 -34
- package/src/date-fns/isThisMonth/test.mts +0 -34
- package/src/date-fns/isThisQuarter/test.mts +0 -34
- package/src/date-fns/isThisSecond/test.mts +0 -34
- package/src/date-fns/isThisWeek/test.mts +0 -39
- package/src/date-fns/isThisYear/test.mts +0 -34
- package/src/date-fns/isThursday/test.mts +0 -24
- package/src/date-fns/isToday/test.mts +0 -34
- package/src/date-fns/isTomorrow/test.mts +0 -34
- package/src/date-fns/isTuesday/test.mts +0 -24
- package/src/date-fns/isValid/test.mts +0 -24
- package/src/date-fns/isWednesday/test.mts +0 -24
- package/src/date-fns/isWeekend/test.mts +0 -24
- package/src/date-fns/isWithinInterval/test.mts +0 -92
- package/src/date-fns/isYesterday/test.mts +0 -34
- package/src/date-fns/lastDayOfDecade/test.mts +0 -32
- package/src/date-fns/lastDayOfISOWeek/test.mts +0 -27
- package/src/date-fns/lastDayOfISOWeekYear/test.mts +0 -36
- package/src/date-fns/lastDayOfMonth/test.mts +0 -41
- package/src/date-fns/lastDayOfQuarter/test.mts +0 -27
- package/src/date-fns/lastDayOfWeek/test.mts +0 -86
- package/src/date-fns/lastDayOfYear/test.mts +0 -27
- package/src/date-fns/lightFormat/test.mts +0 -126
- package/src/date-fns/max/test.mts +0 -34
- package/src/date-fns/milliseconds/test.mts +0 -62
- package/src/date-fns/millisecondsToHours/test.mts +0 -24
- package/src/date-fns/millisecondsToMinutes/test.mts +0 -24
- package/src/date-fns/millisecondsToSeconds/test.mts +0 -24
- package/src/date-fns/min/test.mts +0 -34
- package/src/date-fns/minutesToHours/test.mts +0 -24
- package/src/date-fns/minutesToMilliseconds/test.mts +0 -23
- package/src/date-fns/minutesToSeconds/test.mts +0 -23
- package/src/date-fns/monthsToQuarters/test.mts +0 -24
- package/src/date-fns/monthsToYears/test.mts +0 -24
- package/src/date-fns/nextDay/test.mts +0 -44
- package/src/date-fns/nextFriday/test.mts +0 -24
- package/src/date-fns/nextMonday/test.mts +0 -24
- package/src/date-fns/nextSaturday/test.mts +0 -24
- package/src/date-fns/nextSunday/test.mts +0 -24
- package/src/date-fns/nextThursday/test.mts +0 -24
- package/src/date-fns/nextTuesday/test.mts +0 -23
- package/src/date-fns/nextWednesday/test.mts +0 -24
- package/src/date-fns/parse/test.mts +0 -2202
- package/src/date-fns/parseISO/test.mts +0 -362
- package/src/date-fns/parseJSON/test.mts +0 -129
- package/src/date-fns/previousDay/test.mts +0 -42
- package/src/date-fns/previousFriday/test.mts +0 -22
- package/src/date-fns/previousMonday/test.mts +0 -22
- package/src/date-fns/previousSaturday/test.mts +0 -22
- package/src/date-fns/previousSunday/test.mts +0 -22
- package/src/date-fns/previousThursday/test.mts +0 -22
- package/src/date-fns/previousTuesday/test.mts +0 -22
- package/src/date-fns/previousWednesday/test.mts +0 -22
- package/src/date-fns/quartersToMonths/test.mts +0 -24
- package/src/date-fns/quartersToYears/test.mts +0 -24
- package/src/date-fns/roundToNearestHours/test.mts +0 -200
- package/src/date-fns/roundToNearestMinutes/test.mts +0 -208
- package/src/date-fns/secondsToHours/test.mts +0 -24
- package/src/date-fns/secondsToMilliseconds/test.mts +0 -14
- package/src/date-fns/secondsToMinutes/test.mts +0 -24
- package/src/date-fns/set/test.mts +0 -121
- package/src/date-fns/setDate/test.mts +0 -30
- package/src/date-fns/setDay/test.mts +0 -112
- package/src/date-fns/setDayOfYear/test.mts +0 -30
- package/src/date-fns/setDefaultOptions/test.mts +0 -498
- package/src/date-fns/setHours/test.mts +0 -30
- package/src/date-fns/setISODay/test.mts +0 -59
- package/src/date-fns/setISOWeek/test.mts +0 -41
- package/src/date-fns/setISOWeekYear/test.mts +0 -50
- package/src/date-fns/setMilliseconds/test.mts +0 -30
- package/src/date-fns/setMinutes/test.mts +0 -30
- package/src/date-fns/setMonth/test.mts +0 -46
- package/src/date-fns/setQuarter/test.mts +0 -46
- package/src/date-fns/setSeconds/test.mts +0 -30
- package/src/date-fns/setWeek/test.mts +0 -63
- package/src/date-fns/setWeekYear/test.mts +0 -72
- package/src/date-fns/setYear/test.mts +0 -30
- package/src/date-fns/startOfDay/test.mts +0 -27
- package/src/date-fns/startOfDecade/test.mts +0 -32
- package/src/date-fns/startOfHour/test.mts +0 -27
- package/src/date-fns/startOfISOWeek/test.mts +0 -27
- package/src/date-fns/startOfISOWeekYear/test.mts +0 -41
- package/src/date-fns/startOfMinute/test.mts +0 -27
- package/src/date-fns/startOfMonth/test.mts +0 -27
- package/src/date-fns/startOfQuarter/test.mts +0 -27
- package/src/date-fns/startOfSecond/test.mts +0 -27
- package/src/date-fns/startOfToday/test.mts +0 -19
- package/src/date-fns/startOfTomorrow/test.mts +0 -29
- package/src/date-fns/startOfWeek/test.mts +0 -86
- package/src/date-fns/startOfWeekYear/test.mts +0 -58
- package/src/date-fns/startOfYear/test.mts +0 -38
- package/src/date-fns/startOfYesterday/test.mts +0 -29
- package/src/date-fns/sub/test.mts +0 -83
- package/src/date-fns/subBusinessDays/test.mts +0 -40
- package/src/date-fns/subDays/test.mts +0 -30
- package/src/date-fns/subHours/test.mts +0 -30
- package/src/date-fns/subISOWeekYears/test.mts +0 -41
- package/src/date-fns/subMilliseconds/test.mts +0 -30
- package/src/date-fns/subMinutes/test.mts +0 -30
- package/src/date-fns/subMonths/test.mts +0 -47
- package/src/date-fns/subQuarters/test.mts +0 -47
- package/src/date-fns/subSeconds/test.mts +0 -30
- package/src/date-fns/subWeeks/test.mts +0 -30
- package/src/date-fns/subYears/test.mts +0 -46
- package/src/date-fns/toDate/test.mts +0 -35
- package/src/date-fns/weeksToDays/test.mts +0 -24
- package/src/date-fns/yearsToDays/test.mts +0 -24
- package/src/date-fns/yearsToMonths/test.mts +0 -24
- package/src/date-fns/yearsToQuarters/test.mts +0 -24
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { constructFrom } from '.';
|
|
3
|
-
|
|
4
|
-
describe('constructFrom', () => {
|
|
5
|
-
it('should create a new Date instance using the constructor from the reference date', () => {
|
|
6
|
-
const referenceDate = new Date('2023-10-25T12:00:00');
|
|
7
|
-
const value = new Date('2023-10-26T12:00:00');
|
|
8
|
-
|
|
9
|
-
const result = constructFrom(referenceDate, value);
|
|
10
|
-
|
|
11
|
-
expect(result instanceof Date).toBe(true);
|
|
12
|
-
expect(result).toEqual(value);
|
|
13
|
-
expect(result.constructor).toBe(referenceDate.constructor);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it('should create a new Date instance using a number as the reference date', () => {
|
|
17
|
-
const referenceDate = 1635158400000; // October 25, 2023
|
|
18
|
-
const value = new Date('2023-10-26T12:00:00');
|
|
19
|
-
|
|
20
|
-
const result = constructFrom(referenceDate, value);
|
|
21
|
-
|
|
22
|
-
expect(result instanceof Date).toBe(true);
|
|
23
|
-
expect(result).toEqual(value);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
it('should create a new custom Date instance using the constructor from the reference date', () => {
|
|
27
|
-
class CustomDate extends Date {}
|
|
28
|
-
const referenceDate = new CustomDate('2023-10-25T12:00:00');
|
|
29
|
-
const value = new CustomDate('2023-10-26T12:00:00');
|
|
30
|
-
|
|
31
|
-
const result = constructFrom(referenceDate, value);
|
|
32
|
-
|
|
33
|
-
expect(result instanceof CustomDate).toBe(true);
|
|
34
|
-
expect(result).toEqual(value);
|
|
35
|
-
expect(result.constructor).toBe(referenceDate.constructor);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it('should create a new Date instance using numbers as both referenceDate and value', () => {
|
|
39
|
-
const referenceDate = 1635158400000; // October 25, 2023
|
|
40
|
-
const value = 1635244800000; // October 26, 2023
|
|
41
|
-
|
|
42
|
-
const result = constructFrom(referenceDate, value);
|
|
43
|
-
|
|
44
|
-
expect(result instanceof Date).toBe(true);
|
|
45
|
-
expect(result.getTime()).toEqual(value);
|
|
46
|
-
});
|
|
47
|
-
});
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { constructNow } from '.';
|
|
3
|
-
|
|
4
|
-
describe('constructNow', () => {
|
|
5
|
-
it('creates a new Date instance using the constructor from the reference date', () => {
|
|
6
|
-
const result = constructNow(new Date('2023-10-25T12:00:00'));
|
|
7
|
-
|
|
8
|
-
expect(result instanceof Date).toBe(true);
|
|
9
|
-
expect(+result - Date.now()).toBeLessThan(10); // Give 10 ms of slack
|
|
10
|
-
expect(result.constructor).toBe(Date);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it('creates a new Date instance using a number as the reference date', () => {
|
|
14
|
-
const result = constructNow(1635158400000);
|
|
15
|
-
|
|
16
|
-
expect(result instanceof Date).toBe(true);
|
|
17
|
-
expect(+result - Date.now()).toBeLessThan(10); // Give 10 ms of slack
|
|
18
|
-
expect(result.constructor).toBe(Date);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('creates a new Date instance using a string as the reference date', () => {
|
|
22
|
-
const result = constructNow('2023-10-25T12:00:00');
|
|
23
|
-
|
|
24
|
-
expect(result instanceof Date).toBe(true);
|
|
25
|
-
expect(+result - Date.now()).toBeLessThan(10); // Give 10 ms of slack
|
|
26
|
-
expect(result.constructor).toBe(Date);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it('creates a new custom Date instance using the constructor from the reference date', () => {
|
|
30
|
-
class CustomDate extends Date {}
|
|
31
|
-
const result = constructNow(new CustomDate('2023-10-26T12:00:00'));
|
|
32
|
-
|
|
33
|
-
expect(result instanceof CustomDate).toBe(true);
|
|
34
|
-
expect(+result - Date.now()).toBeLessThan(10); // Give 10 ms of slack
|
|
35
|
-
expect(result.constructor).toBe(CustomDate);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { daysToWeeks } from './index';
|
|
3
|
-
|
|
4
|
-
describe('daysToWeeks', () => {
|
|
5
|
-
it('converts days to weeks', () => {
|
|
6
|
-
expect(daysToWeeks(7)).toBe(1);
|
|
7
|
-
expect(daysToWeeks(14)).toBe(2);
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
it('uses trunc rounding', () => {
|
|
11
|
-
expect(daysToWeeks(8)).toBe(1);
|
|
12
|
-
expect(daysToWeeks(6)).toBe(0);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('handles border values', () => {
|
|
16
|
-
expect(daysToWeeks(7.5)).toBe(1);
|
|
17
|
-
expect(daysToWeeks(0)).toBe(0);
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it('properly works with negative numbers', () => {
|
|
21
|
-
expect(daysToWeeks(7)).toBe(1);
|
|
22
|
-
expect(daysToWeeks(-7)).toBe(-1);
|
|
23
|
-
|
|
24
|
-
expect(daysToWeeks(14)).toBe(2);
|
|
25
|
-
expect(daysToWeeks(-14)).toBe(-2);
|
|
26
|
-
|
|
27
|
-
expect(daysToWeeks(8)).toBe(1);
|
|
28
|
-
expect(daysToWeeks(-8)).toBe(-1);
|
|
29
|
-
|
|
30
|
-
expect(daysToWeeks(6)).toBe(0);
|
|
31
|
-
expect(daysToWeeks(-6)).toBe(0);
|
|
32
|
-
|
|
33
|
-
expect(daysToWeeks(7.5)).toBe(1);
|
|
34
|
-
expect(daysToWeeks(-7.5)).toBe(-1);
|
|
35
|
-
});
|
|
36
|
-
});
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { differenceInBusinessDays } from './index';
|
|
3
|
-
|
|
4
|
-
describe('differenceInBusinessDays', () => {
|
|
5
|
-
it('returns the number of business days between the given dates, excluding weekends', () => {
|
|
6
|
-
const result = differenceInBusinessDays(new Date(2014, 6 /* Jul */, 18), new Date(2014, 0 /* Jan */, 10));
|
|
7
|
-
expect(result).toBe(135);
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
it('can handle long ranges', () => {
|
|
11
|
-
const result = differenceInBusinessDays(new Date(15000, 0 /* Jan */, 1), new Date(2014, 0 /* Jan */, 1));
|
|
12
|
-
expect(result).toBe(3387885);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('the same except given first date falls on a weekend', () => {
|
|
16
|
-
const result = differenceInBusinessDays(new Date(2019, 6 /* Jul */, 20), new Date(2019, 6 /* Jul */, 18));
|
|
17
|
-
expect(result).toBe(2);
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it('the same except given second date falls on a weekend', () => {
|
|
21
|
-
const result = differenceInBusinessDays(new Date(2019, 6 /* Jul */, 23), new Date(2019, 6 /* Jul */, 20));
|
|
22
|
-
expect(result).toBe(1);
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it('the same except both given dates fall on a weekend', () => {
|
|
26
|
-
const result = differenceInBusinessDays(new Date(2019, 6 /* Jul */, 28), new Date(2019, 6 /* Jul */, 20));
|
|
27
|
-
expect(result).toBe(5);
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it('returns a negative number if the time value of the first date is smaller', () => {
|
|
31
|
-
const result = differenceInBusinessDays(new Date(2014, 0 /* Jan */, 10), new Date(2014, 6 /* Jul */, 20));
|
|
32
|
-
expect(result).toBe(-135);
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it('accepts timestamps', () => {
|
|
36
|
-
const result = differenceInBusinessDays(new Date(2014, 6, 18).getTime(), new Date(2014, 0, 10).getTime());
|
|
37
|
-
expect(result).toBe(135);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
describe('edge cases', () => {
|
|
41
|
-
it('the difference is less than a day, but the given dates are in different calendar days', () => {
|
|
42
|
-
const result = differenceInBusinessDays(
|
|
43
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
44
|
-
new Date(2014, 8 /* Sep */, 4, 23, 59),
|
|
45
|
-
);
|
|
46
|
-
expect(result).toBe(1);
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it('the same for the swapped dates', () => {
|
|
50
|
-
const result = differenceInBusinessDays(
|
|
51
|
-
new Date(2014, 8 /* Sep */, 4, 23, 59),
|
|
52
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
53
|
-
);
|
|
54
|
-
expect(result).toBe(-1);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it('the time values of the given dates are the same', () => {
|
|
58
|
-
const result = differenceInBusinessDays(
|
|
59
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
60
|
-
new Date(2014, 8 /* Sep */, 4, 0, 0),
|
|
61
|
-
);
|
|
62
|
-
expect(result).toBe(1);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
it('the given dates are the same', () => {
|
|
66
|
-
const result = differenceInBusinessDays(
|
|
67
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
68
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
69
|
-
);
|
|
70
|
-
expect(result).toBe(0);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it('does not return -0 when the given dates are the same', () => {
|
|
74
|
-
function isNegativeZero(x: number) {
|
|
75
|
-
return x === 0 && 1 / x < 0;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const result = differenceInBusinessDays(
|
|
79
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
80
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
81
|
-
);
|
|
82
|
-
|
|
83
|
-
const resultIsNegative = isNegativeZero(result);
|
|
84
|
-
expect(resultIsNegative).toBe(false);
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
it('returns NaN if the first date is `Invalid Date`', () => {
|
|
88
|
-
const result = differenceInBusinessDays(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
|
|
89
|
-
expect(isNaN(result)).toBe(true);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it('returns NaN if the second date is `Invalid Date`', () => {
|
|
93
|
-
const result = differenceInBusinessDays(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
|
|
94
|
-
expect(isNaN(result)).toBe(true);
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
it('returns NaN if the both dates are `Invalid Date`', () => {
|
|
98
|
-
const result = differenceInBusinessDays(new Date(NaN), new Date(NaN));
|
|
99
|
-
expect(isNaN(result)).toBe(true);
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
});
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { differenceInCalendarDays } from './index';
|
|
3
|
-
import { getDstTransitions } from '../_test/dst/tzOffsetTransitions';
|
|
4
|
-
|
|
5
|
-
describe('differenceInCalendarDays', () => {
|
|
6
|
-
it('returns the number of calendar days between the given dates', () => {
|
|
7
|
-
const result = differenceInCalendarDays(
|
|
8
|
-
new Date(2012, 6 /* Jul */, 2, 18, 0),
|
|
9
|
-
new Date(2011, 6 /* Jul */, 2, 6, 0),
|
|
10
|
-
);
|
|
11
|
-
expect(result).toBe(366);
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it('returns a negative number if the time value of the first date is smaller', () => {
|
|
15
|
-
const result = differenceInCalendarDays(
|
|
16
|
-
new Date(2011, 6 /* Jul */, 2, 6, 0),
|
|
17
|
-
new Date(2012, 6 /* Jul */, 2, 18, 0),
|
|
18
|
-
);
|
|
19
|
-
expect(result).toBe(-366);
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('accepts timestamps', () => {
|
|
23
|
-
const result = differenceInCalendarDays(
|
|
24
|
-
new Date(2014, 8 /* Sep */, 5, 18, 0).getTime(),
|
|
25
|
-
new Date(2014, 8 /* Sep */, 4, 6, 0).getTime(),
|
|
26
|
-
);
|
|
27
|
-
expect(result).toBe(1);
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
describe('edge cases', () => {
|
|
31
|
-
it('the difference is less than a day, but the given dates are in different calendar days', () => {
|
|
32
|
-
const result = differenceInCalendarDays(
|
|
33
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
34
|
-
new Date(2014, 8 /* Sep */, 4, 23, 59),
|
|
35
|
-
);
|
|
36
|
-
expect(result).toBe(1);
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it('the same for the swapped dates', () => {
|
|
40
|
-
const result = differenceInCalendarDays(
|
|
41
|
-
new Date(2014, 8 /* Sep */, 4, 23, 59),
|
|
42
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
43
|
-
);
|
|
44
|
-
expect(result).toBe(-1);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it('the time values of the given the given dates are the same', () => {
|
|
48
|
-
const result = differenceInCalendarDays(
|
|
49
|
-
new Date(2014, 8 /* Sep */, 6, 0, 0),
|
|
50
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
51
|
-
);
|
|
52
|
-
expect(result).toBe(1);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
it('the given the given dates are the same', () => {
|
|
56
|
-
const result = differenceInCalendarDays(
|
|
57
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
58
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
59
|
-
);
|
|
60
|
-
expect(result).toBe(0);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
it('does not return -0 when the given dates are the same', () => {
|
|
64
|
-
function isNegativeZero(x: number): boolean {
|
|
65
|
-
return x === 0 && 1 / x < 0;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const result = differenceInCalendarDays(
|
|
69
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
70
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
71
|
-
);
|
|
72
|
-
|
|
73
|
-
const resultIsNegative = isNegativeZero(result);
|
|
74
|
-
expect(resultIsNegative).toBe(false);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
it('properly works with negative numbers', () => {
|
|
78
|
-
const a = new Date(2014, 6 /* Jul */, 1);
|
|
79
|
-
const b = new Date(2014, 6 /* Jul */, 2, 1);
|
|
80
|
-
|
|
81
|
-
expect(differenceInCalendarDays(b, a)).toBe(1);
|
|
82
|
-
expect(differenceInCalendarDays(a, b)).toBe(-1);
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
it('returns NaN if the first date is `Invalid Date`', () => {
|
|
87
|
-
const result = differenceInCalendarDays(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
|
|
88
|
-
expect(isNaN(result)).toBe(true);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
it('returns NaN if the second date is `Invalid Date`', () => {
|
|
92
|
-
const result = differenceInCalendarDays(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
|
|
93
|
-
expect(isNaN(result)).toBe(true);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
it('returns NaN if the both dates are `Invalid Date`', () => {
|
|
97
|
-
const result = differenceInCalendarDays(new Date(NaN), new Date(NaN));
|
|
98
|
-
expect(isNaN(result)).toBe(true);
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
// These tests were copy-pasted almost unchanged from DST tests for
|
|
102
|
-
// `differenceInDays`
|
|
103
|
-
const dstTransitions = getDstTransitions(2017);
|
|
104
|
-
const dstOnly = dstTransitions.start && dstTransitions.end ? it : it.skip;
|
|
105
|
-
const tz = Intl.DateTimeFormat().resolvedOptions().timeZone || process.env.tz;
|
|
106
|
-
dstOnly(`works across DST start & end in local timezone: ${tz || '(unknown)'}`, () => {
|
|
107
|
-
const { start, end } = dstTransitions;
|
|
108
|
-
const HOUR = 1000 * 60 * 60;
|
|
109
|
-
const MINUTE = 1000 * 60;
|
|
110
|
-
function sameTime(t1: Date, t2: Date): boolean {
|
|
111
|
-
return (
|
|
112
|
-
t1.getHours() === t2.getHours() &&
|
|
113
|
-
t1.getMinutes() === t2.getMinutes() &&
|
|
114
|
-
t1.getSeconds() === t2.getSeconds() &&
|
|
115
|
-
t1.getMilliseconds() === t2.getMilliseconds()
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
expect(start).not.toBe(undefined);
|
|
120
|
-
expect(end).not.toBe(undefined);
|
|
121
|
-
|
|
122
|
-
if (start === undefined || end === undefined) {
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// It's usually 1 hour, but for some timezones, e.g. Australia/Lord_Howe, it is 30 minutes
|
|
127
|
-
const dstOffset = (end.getTimezoneOffset() - start.getTimezoneOffset()) * MINUTE;
|
|
128
|
-
|
|
129
|
-
// TEST DST START (SPRING)
|
|
130
|
-
|
|
131
|
-
// anchor to one hour before the boundary
|
|
132
|
-
{
|
|
133
|
-
const a = new Date(start.getTime() - HOUR); // 1 hour before DST
|
|
134
|
-
const b = new Date(a.getTime() + 24 * HOUR - dstOffset); // 1 day later, same local time
|
|
135
|
-
const c = new Date(a.getTime() + 48 * HOUR - dstOffset); // 2 days later, same local time
|
|
136
|
-
|
|
137
|
-
expect(sameTime(a, b)).toBe(true);
|
|
138
|
-
expect(sameTime(a, c)).toBe(true);
|
|
139
|
-
expect(sameTime(b, c)).toBe(true);
|
|
140
|
-
expect(differenceInCalendarDays(c, b)).toBe(1); // normal 24-hour day
|
|
141
|
-
expect(differenceInCalendarDays(b, a)).toBe(1); // 23 hours -> 1 day
|
|
142
|
-
expect(differenceInCalendarDays(c, a)).toBe(2); // 47 hours -> 2 days
|
|
143
|
-
}
|
|
144
|
-
// anchor exactly at the boundary
|
|
145
|
-
{
|
|
146
|
-
const a = start; // exactly when DST starts
|
|
147
|
-
const b = new Date(a.getTime() + 24 * HOUR); // 1 day later, same local time
|
|
148
|
-
const c = new Date(a.getTime() + 48 * HOUR); // 2 days later, same local time
|
|
149
|
-
|
|
150
|
-
expect(sameTime(a, b)).toBe(true);
|
|
151
|
-
expect(sameTime(a, c)).toBe(true);
|
|
152
|
-
expect(sameTime(b, c)).toBe(true);
|
|
153
|
-
expect(differenceInCalendarDays(c, b)).toBe(1); // normal 24-hour day
|
|
154
|
-
expect(differenceInCalendarDays(b, a)).toBe(1); // normal 24-hour day
|
|
155
|
-
expect(differenceInCalendarDays(c, a)).toBe(2); // 2 normal 24-hour days
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// TEST DST END (FALL)
|
|
159
|
-
|
|
160
|
-
// make sure that diffs across a "fall back" DST boundary won't report a full day
|
|
161
|
-
// until 25 hours have elapsed.
|
|
162
|
-
{
|
|
163
|
-
const a = new Date(end.getTime() - HOUR / 2); // 1 hour before Standard Time starts
|
|
164
|
-
const b = new Date(a.getTime() + 24 * HOUR + dstOffset - 15 * MINUTE); // 1 day later, 15 mins earlier local time
|
|
165
|
-
const c = new Date(a.getTime() + 48 * HOUR + dstOffset - 15 * MINUTE); // 2 days later, 15 mins earlier local time
|
|
166
|
-
|
|
167
|
-
expect(differenceInCalendarDays(c, b)).toBe(1); // normal 24-hour day
|
|
168
|
-
expect(differenceInCalendarDays(b, a)).toBe(1); // 24.75 hours but 1 calendar days
|
|
169
|
-
expect(differenceInCalendarDays(c, a)).toBe(2); // 49.75 hours but 2 calendar days
|
|
170
|
-
}
|
|
171
|
-
// anchor to one hour before the boundary
|
|
172
|
-
{
|
|
173
|
-
const a = new Date(end.getTime() - HOUR); // 1 hour before Standard Time starts
|
|
174
|
-
const b = new Date(a.getTime() + 24 * HOUR + dstOffset); // 1 day later, same local time
|
|
175
|
-
const c = new Date(a.getTime() + 48 * HOUR + dstOffset); // 2 days later, same local time
|
|
176
|
-
|
|
177
|
-
expect(sameTime(a, b)).toBe(true);
|
|
178
|
-
expect(sameTime(a, c)).toBe(true);
|
|
179
|
-
expect(sameTime(b, c)).toBe(true);
|
|
180
|
-
expect(differenceInCalendarDays(c, b)).toBe(1); // normal 24-hour day
|
|
181
|
-
expect(differenceInCalendarDays(b, a)).toBe(1); // 25 hours -> 1 day
|
|
182
|
-
expect(differenceInCalendarDays(c, a)).toBe(2); // 49 hours -> 2 days
|
|
183
|
-
}
|
|
184
|
-
// anchor to one hour after the boundary
|
|
185
|
-
{
|
|
186
|
-
const a = new Date(end.getTime() + HOUR); // 1 hour after Standard Time starts
|
|
187
|
-
const b = new Date(a.getTime() + 24 * HOUR); // 1 day later, same local time
|
|
188
|
-
const c = new Date(a.getTime() + 48 * HOUR); // 2 days later, same local time
|
|
189
|
-
|
|
190
|
-
expect(sameTime(a, b)).toBe(true);
|
|
191
|
-
expect(sameTime(a, c)).toBe(true);
|
|
192
|
-
expect(sameTime(b, c)).toBe(true);
|
|
193
|
-
expect(differenceInCalendarDays(c, b)).toBe(1); // normal 24-hour day
|
|
194
|
-
expect(differenceInCalendarDays(b, a)).toBe(1); // normal 24-hour day
|
|
195
|
-
expect(differenceInCalendarDays(c, a)).toBe(2); // 2 normal 24-hour days
|
|
196
|
-
}
|
|
197
|
-
// anchor exactly at the boundary
|
|
198
|
-
{
|
|
199
|
-
const a = end; // exactly when Standard Time starts
|
|
200
|
-
const b = new Date(a.getTime() + 24 * HOUR); // 1 day later, same local time
|
|
201
|
-
const c = new Date(a.getTime() + 48 * HOUR); // 2 days later, same local time
|
|
202
|
-
expect(differenceInCalendarDays(b, a)).toBe(1); // normal 24-hour day
|
|
203
|
-
expect(differenceInCalendarDays(c, a)).toBe(2); // 2 normal 24-hour days
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
});
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { differenceInCalendarISOWeekYears } from './index';
|
|
3
|
-
|
|
4
|
-
describe('differenceInCalendarISOWeekYears', () => {
|
|
5
|
-
it('returns the number of calendar ISO week-numbering years between the given dates', () => {
|
|
6
|
-
const result = differenceInCalendarISOWeekYears(
|
|
7
|
-
new Date(2012, 6 /* Jul */, 2, 18, 0),
|
|
8
|
-
new Date(2011, 6 /* Jul */, 2, 6, 0),
|
|
9
|
-
);
|
|
10
|
-
expect(result).toBe(1);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it('returns a negative number if the time value of the first date is smaller', () => {
|
|
14
|
-
const result = differenceInCalendarISOWeekYears(
|
|
15
|
-
new Date(2011, 6 /* Jul */, 2, 6, 0),
|
|
16
|
-
new Date(2012, 6 /* Jul */, 2, 18, 0),
|
|
17
|
-
);
|
|
18
|
-
expect(result).toBe(-1);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('accepts timestamps', () => {
|
|
22
|
-
const result = differenceInCalendarISOWeekYears(
|
|
23
|
-
new Date(2014, 6 /* Jul */, 2).getTime(),
|
|
24
|
-
new Date(2010, 6 /* Jul */, 2).getTime(),
|
|
25
|
-
);
|
|
26
|
-
expect(result).toBe(4);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it('handles dates before 100 AD', () => {
|
|
30
|
-
const firstDate = new Date(0);
|
|
31
|
-
firstDate.setFullYear(14, 0 /* Jan */, 1);
|
|
32
|
-
firstDate.setHours(0, 0, 0, 0);
|
|
33
|
-
const secondDate = new Date(0);
|
|
34
|
-
secondDate.setFullYear(0, 0 /* Jan */, 1);
|
|
35
|
-
secondDate.setHours(0, 0, 0, 0);
|
|
36
|
-
const result = differenceInCalendarISOWeekYears(firstDate, secondDate);
|
|
37
|
-
expect(result).toBe(15);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
describe('edge cases', () => {
|
|
41
|
-
it('the difference is less than an ISO year, but the given dates are in different calendar ISO years', () => {
|
|
42
|
-
const result = differenceInCalendarISOWeekYears(new Date(2012, 0 /* Jan */, 2), new Date(2012, 0 /* Jan */, 1));
|
|
43
|
-
expect(result).toBe(1);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it('the same for the swapped dates', () => {
|
|
47
|
-
const result = differenceInCalendarISOWeekYears(new Date(2012, 0 /* Jan */, 1), new Date(2012, 0 /* Jan */, 2));
|
|
48
|
-
expect(result).toBe(-1);
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it('the ISO weeks and weekdays of the given dates are the same', () => {
|
|
52
|
-
const result = differenceInCalendarISOWeekYears(new Date(2013, 11 /* Dec */, 30), new Date(2012, 0 /* Jan */, 2));
|
|
53
|
-
expect(result).toBe(2);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it('the given dates are the same', () => {
|
|
57
|
-
const result = differenceInCalendarISOWeekYears(
|
|
58
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
59
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
60
|
-
);
|
|
61
|
-
expect(result).toBe(0);
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it('does not return -0 when the given dates are the same', () => {
|
|
65
|
-
function isNegativeZero(x: number): boolean {
|
|
66
|
-
return x === 0 && 1 / x < 0;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const result = differenceInCalendarISOWeekYears(
|
|
70
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
71
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
const resultIsNegative = isNegativeZero(result);
|
|
75
|
-
expect(resultIsNegative).toBe(false);
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
it('returns NaN if the first date is `Invalid Date`', () => {
|
|
80
|
-
const result = differenceInCalendarISOWeekYears(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
|
|
81
|
-
expect(isNaN(result)).toBe(true);
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
it('returns NaN if the second date is `Invalid Date`', () => {
|
|
85
|
-
const result = differenceInCalendarISOWeekYears(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
|
|
86
|
-
expect(isNaN(result)).toBe(true);
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
it('returns NaN if the both dates are `Invalid Date`', () => {
|
|
90
|
-
const result = differenceInCalendarISOWeekYears(new Date(NaN), new Date(NaN));
|
|
91
|
-
expect(isNaN(result)).toBe(true);
|
|
92
|
-
});
|
|
93
|
-
});
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { differenceInCalendarISOWeeks } from './index';
|
|
3
|
-
|
|
4
|
-
describe('differenceInCalendarISOWeeks', () => {
|
|
5
|
-
it('returns the number of calendar ISO weeks between the given dates', () => {
|
|
6
|
-
const result = differenceInCalendarISOWeeks(
|
|
7
|
-
new Date(2014, 6 /* Jul */, 8, 18, 0),
|
|
8
|
-
new Date(2014, 5 /* Jun */, 29, 6, 0),
|
|
9
|
-
);
|
|
10
|
-
expect(result).toBe(2);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it('returns a negative number if the time value of the first date is smaller', () => {
|
|
14
|
-
const result = differenceInCalendarISOWeeks(
|
|
15
|
-
new Date(2014, 5 /* Jun */, 29, 6, 0),
|
|
16
|
-
new Date(2014, 6 /* Jul */, 8, 18, 0),
|
|
17
|
-
);
|
|
18
|
-
expect(result).toBe(-2);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('accepts timestamps', () => {
|
|
22
|
-
const result = differenceInCalendarISOWeeks(
|
|
23
|
-
new Date(2014, 6 /* Jul */, 12).getTime(),
|
|
24
|
-
new Date(2014, 6 /* Jul */, 2).getTime(),
|
|
25
|
-
);
|
|
26
|
-
expect(result).toBe(1);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
describe('edge cases', () => {
|
|
30
|
-
it('the difference is less than an ISO week, but the given dates are in different calendar ISO weeks', () => {
|
|
31
|
-
const result = differenceInCalendarISOWeeks(new Date(2014, 6 /* Jul */, 7), new Date(2014, 6 /* Jul */, 6));
|
|
32
|
-
expect(result).toBe(1);
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it('the same for the swapped dates', () => {
|
|
36
|
-
const result = differenceInCalendarISOWeeks(new Date(2014, 6 /* Jul */, 6), new Date(2014, 6 /* Jul */, 7));
|
|
37
|
-
expect(result).toBe(-1);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it('the days of weeks of the given dates are the same', () => {
|
|
41
|
-
const result = differenceInCalendarISOWeeks(new Date(2014, 6 /* Jul */, 9), new Date(2014, 6 /* Jul */, 2));
|
|
42
|
-
expect(result).toBe(1);
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it('the given dates are the same', () => {
|
|
46
|
-
const result = differenceInCalendarISOWeeks(
|
|
47
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
48
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
49
|
-
);
|
|
50
|
-
expect(result).toBe(0);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it('does not return -0 when the given dates are the same', () => {
|
|
54
|
-
function isNegativeZero(x: number): boolean {
|
|
55
|
-
return x === 0 && 1 / x < 0;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const result = differenceInCalendarISOWeeks(
|
|
59
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
60
|
-
new Date(2014, 8 /* Sep */, 5, 0, 0),
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
const resultIsNegative = isNegativeZero(result);
|
|
64
|
-
expect(resultIsNegative).toBe(false);
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
it('properly works with negative numbers', () => {
|
|
68
|
-
const a = new Date(2014, 6 /* Jul */, 9);
|
|
69
|
-
const b = new Date(2014, 6 /* Jul */, 19);
|
|
70
|
-
expect(differenceInCalendarISOWeeks(b, a)).toBe(1);
|
|
71
|
-
expect(differenceInCalendarISOWeeks(a, b)).toBe(-1);
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
it('returns NaN if the first date is `Invalid Date`', () => {
|
|
76
|
-
const result = differenceInCalendarISOWeeks(new Date(NaN), new Date(2017, 0 /* Jan */, 1));
|
|
77
|
-
expect(isNaN(result)).toBe(true);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it('returns NaN if the second date is `Invalid Date`', () => {
|
|
81
|
-
const result = differenceInCalendarISOWeeks(new Date(2017, 0 /* Jan */, 1), new Date(NaN));
|
|
82
|
-
expect(isNaN(result)).toBe(true);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it('returns NaN if the both dates are `Invalid Date`', () => {
|
|
86
|
-
const result = differenceInCalendarISOWeeks(new Date(NaN), new Date(NaN));
|
|
87
|
-
expect(isNaN(result)).toBe(true);
|
|
88
|
-
});
|
|
89
|
-
});
|