/
test.js
138 lines (120 loc) · 4.19 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// @flow
/* eslint-env mocha */
import assert from 'power-assert'
import differenceInCalendarISOWeekYears from '.'
describe('differenceInCalendarISOWeekYears', function () {
it('returns the number of calendar ISO week-numbering years between the given dates', function () {
var result = differenceInCalendarISOWeekYears(
new Date(2012, 6 /* Jul */, 2, 18, 0),
new Date(2011, 6 /* Jul */, 2, 6, 0)
)
assert(result === 1)
})
it('returns a negative number if the time value of the first date is smaller', function () {
var result = differenceInCalendarISOWeekYears(
new Date(2011, 6 /* Jul */, 2, 6, 0),
new Date(2012, 6 /* Jul */, 2, 18, 0)
)
assert(result === -1)
})
it('accepts strings', function () {
var result = differenceInCalendarISOWeekYears(
new Date(2014, 0 /* Jan */, 1).toISOString(),
new Date(2000, 0 /* Jan */, 1).toISOString()
)
assert(result === 15)
})
it('accepts timestamps', function () {
var result = differenceInCalendarISOWeekYears(
new Date(2014, 6 /* Jul */, 2).getTime(),
new Date(2010, 6 /* Jul */, 2).getTime()
)
assert(result === 4)
})
it('handles dates before 100 AD', function () {
var firstDate = new Date(0)
firstDate.setFullYear(14, 0 /* Jan */, 1)
firstDate.setHours(0, 0, 0, 0)
var secondDate = new Date(0)
secondDate.setFullYear(0, 0 /* Jan */, 1)
secondDate.setHours(0, 0, 0, 0)
var result = differenceInCalendarISOWeekYears(firstDate, secondDate)
assert(result === 15)
})
describe('edge cases', function () {
it('the difference is less than an ISO year, but the given dates are in different calendar ISO years', function () {
var result = differenceInCalendarISOWeekYears(
new Date(2012, 0 /* Jan */, 2),
new Date(2012, 0 /* Jan */, 1)
)
assert(result === 1)
})
it('the same for the swapped dates', function () {
var result = differenceInCalendarISOWeekYears(
new Date(2012, 0 /* Jan */, 1),
new Date(2012, 0 /* Jan */, 2)
)
assert(result === -1)
})
it('the ISO weeks and weekdays of the given dates are the same', function () {
var result = differenceInCalendarISOWeekYears(
new Date(2013, 11 /* Dec */, 30),
new Date(2012, 0 /* Jan */, 2)
)
assert(result === 2)
})
it('the given dates are the same', function () {
var result = differenceInCalendarISOWeekYears(
new Date(2014, 8 /* Sep */, 5, 0, 0),
new Date(2014, 8 /* Sep */, 5, 0, 0)
)
assert(result === 0)
})
it('does not return -0 when the given dates are the same', () => {
function isNegativeZero (x) {
return x === 0 && (1 / x < 0)
}
var result = differenceInCalendarISOWeekYears(
new Date(2014, 8 /* Sep */, 5, 0, 0),
new Date(2014, 8 /* Sep */, 5, 0, 0)
)
var resultIsNegative = isNegativeZero(result)
assert(resultIsNegative === false)
})
})
it('returns NaN if the first date is `Invalid Date`', function () {
var result = differenceInCalendarISOWeekYears(
new Date(NaN),
new Date(2017, 0 /* Jan */, 1)
)
assert(isNaN(result))
})
it('returns NaN if the second date is `Invalid Date`', function () {
var result = differenceInCalendarISOWeekYears(
new Date(2017, 0 /* Jan */, 1),
new Date(NaN)
)
assert(isNaN(result))
})
it('returns NaN if the both dates are `Invalid Date`', function () {
var result = differenceInCalendarISOWeekYears(
new Date(NaN),
new Date(NaN)
)
assert(isNaN(result))
})
it('throws `RangeError` if `options.additionalDigits` is not convertable to 0, 1, 2 or undefined', function () {
var block = differenceInCalendarISOWeekYears.bind(
null,
new Date(2011, 6 /* Jul */, 2, 6, 0),
new Date(2012, 6 /* Jul */, 2, 18, 0),
// $ExpectedMistake
{additionalDigits: NaN}
)
assert.throws(block, RangeError)
})
it('throws TypeError exception if passed less than 2 arguments', function () {
assert.throws(differenceInCalendarISOWeekYears.bind(null), TypeError)
assert.throws(differenceInCalendarISOWeekYears.bind(null, 1), TypeError)
})
})