-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
/
test.js
executable file
·156 lines (139 loc) · 4.47 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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
// @flow
/* eslint-env mocha */
import assert from 'power-assert'
import eachWeekendOfInterval from '.'
describe('eachWeekendOfInterval', function() {
it('returns array length of 4', function() {
var result = eachWeekendOfInterval({
start: new Date(2018, 8 /* Sept */, 17),
end: new Date(2018, 8 /* Sept */, 30)
})
assert(result.length === 4)
})
it('returns array length of 4 with date.toISOString()', function() {
var result = eachWeekendOfInterval({
start: new Date(2018, 8 /* Sept */, 17).toISOString(),
end: new Date(2018, 8 /* Sept */, 30).toISOString()
})
assert(result.length === 4)
})
it('returns array length of 4 when date strings are used', function() {
var result = eachWeekendOfInterval({
start: new Date('September 17, 2019'),
end: new Date('September 30, 2019')
})
assert(result.length === 4)
})
it('the first Saturday returned is Sat Sep 22 2018', function() {
var result = eachWeekendOfInterval({
start: new Date(2018, 8 /* Sept */, 17),
end: new Date(2018, 8 /* Sept */, 30)
})
assert(result[0].toDateString() === 'Sat Sep 22 2018')
})
it('the first Sunday returned is Sun Sep 23 2018', function() {
var result = eachWeekendOfInterval({
start: new Date(2018, 8, 17),
end: new Date(2018, 8, 30)
})
assert(result[1].toDateString() === 'Sun Sep 23 2018')
})
it('the second Saturday returned is Sat Sep 29 2018', function() {
var result = eachWeekendOfInterval({
start: new Date(2018, 8 /* Sept */, 17),
end: new Date(2018, 8 /* Sept */, 30)
})
assert(result[2].toDateString() === 'Sat Sep 29 2018')
})
it('the second Sunday returned is Sun Sep 30 2018', function() {
var result = eachWeekendOfInterval({
start: new Date(2018, 8 /* Sept */, 17),
end: new Date(2018, 8 /* Sept */, 30)
})
assert(result[3].toDateString() === 'Sun Sep 30 2018')
})
it('returns array length of 104', function() {
var result = eachWeekendOfInterval({
start: new Date(2019, 0 /* Jan */, 1),
end: new Date(2019, 11 /* Dec */, 31)
})
assert(result.length === 104)
})
it('returns Sun Mar 17 2019', function() {
var result = eachWeekendOfInterval({
start: new Date(2019, 0 /* Jan */, 1),
end: new Date(2019, 11 /* Dec */, 31)
})
assert(result[21].toDateString() === 'Sun Mar 17 2019')
})
it('returns Sat Oct 26 2019', function() {
var result = eachWeekendOfInterval({
start: new Date(2019, 0 /* Jan */, 1),
end: new Date(2019, 11 /* Dec */, 31)
})
assert(result[84].toDateString() === 'Sat Oct 26 2019')
})
it('throws `RangeError` invalid interval start date is used', function() {
// $ExpectedMistake
var block = eachWeekendOfInterval.bind(
null,
{
start: new Date(NaN),
end: new Date(2019, 11 /* Dec */, 31)
},
{ weekStartsOn: 6 }
)
assert.throws(block, RangeError)
})
it('throws `RangeError` invalid interval end date is used', function() {
// $ExpectedMistake
var block = eachWeekendOfInterval.bind(
null,
{
start: new Date(2019, 0 /* Jan */, 1),
end: new Date(NaN)
},
{ weekStartsOn: 6 }
)
assert.throws(block, RangeError)
})
it('throws TypeError exception if passed less than 1 argument', function() {
assert.throws(eachWeekendOfInterval, TypeError)
})
it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function() {
var block = eachWeekendOfInterval.bind(
null,
// $ExpectedMistake
{
start: new Date(2018, 8 /* Sept */, 17),
end: new Date(2018, 8 /* Sept */, 30)
},
{ weekStartsOn: 9 }
)
assert.throws(block, RangeError)
})
it('throws `RangeError` if `options.weekStartsOn` when passing in invalid value', function() {
var block = eachWeekendOfInterval.bind(
null,
// $ExpectedMistake
{
start: new Date(2018, 8 /* Sept */, 17),
end: new Date(2018, 8 /* Sept */, 30)
},
{ weekStartsOn: NaN }
)
assert.throws(block, RangeError)
})
it('throws `RangeError` if start of an interval is after its end', function() {
var block = eachWeekendOfInterval.bind(
null,
// $ExpectedMistake
{
start: new Date(2018, 8 /* Sept */, 25),
end: new Date(2018, 8 /* Sept */, 6)
},
{ weekStartsOn: NaN }
)
assert.throws(block, RangeError)
})
})