/
test.js
109 lines (93 loc) · 3.85 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
// @flow
/* eslint-env mocha */
import assert from 'power-assert'
import setUTCWeek from '.'
describe('setUTCWeek', function () {
it('sets the local week', function () {
var result = setUTCWeek(new Date(Date.UTC(2005, 0 /* Jan */, 2)), 1)
assert.deepEqual(result, new Date(Date.UTC(2004, 11 /* Dec */, 26)))
})
it('accepts a string', function () {
var result = setUTCWeek(new Date(Date.UTC(2009, 11 /* Dec */, 2)).toISOString(), 1)
assert.deepEqual(result, new Date(Date.UTC(2008, 11 /* Dec */, 31)))
})
it('accepts a timestamp', function () {
var result = setUTCWeek(Date.UTC(2009, 11 /* Dec */, 2), 1)
assert.deepEqual(result, new Date(Date.UTC(2008, 11 /* Dec */, 31)))
})
it('converts a fractional number to an integer', function () {
var result = setUTCWeek(new Date(Date.UTC(2005, 0 /* Jan */, 2)), 1.1)
assert.deepEqual(result, new Date(Date.UTC(2004, 11 /* Dec */, 26)))
})
it('implicitly converts number arguments', function () {
var result = setUTCWeek(new Date(Date.UTC(2004, 7 /* Aug */, 7)), '53')
assert.deepEqual(result, new Date(Date.UTC(2005, 0 /* Jan */, 1)))
})
it('does not mutate the original date', function () {
var date = new Date(2014, 6 /* Jul */, 2)
setUTCWeek(date, 52)
assert.deepEqual(date, new Date(2014, 6 /* Jul */, 2))
})
it('handles dates before 100 AD', function () {
var initialDate = new Date(0)
initialDate.setUTCFullYear(4, 0 /* Jan */, 4)
initialDate.setUTCHours(0, 0, 0, 0)
var expectedResult = new Date(0)
expectedResult.setUTCFullYear(4, 11 /* Dec */, 19)
expectedResult.setUTCHours(0, 0, 0, 0)
var result = setUTCWeek(initialDate, 52)
assert.deepEqual(result, expectedResult)
})
it('returns `Invalid Date` if the given date is invalid', function () {
var result = setUTCWeek(new Date(NaN), 53)
assert(result instanceof Date && isNaN(result))
})
it('returns `Invalid Date` if the given amount is NaN', function () {
var result = setUTCWeek(new Date(2004, 7 /* Aug */, 7), NaN)
assert(result instanceof Date && isNaN(result))
})
it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in locale', function () {
var date = new Date(Date.UTC(2005, 0 /* Jan */, 2))
var result = setUTCWeek(
date,
1,
{
locale: {
options: {weekStartsOn: 1, firstWeekContainsDate: 4}
}
}
)
assert.deepEqual(result, new Date(Date.UTC(2004, 0 /* Jan */, 4)))
})
it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function () {
var date = new Date(Date.UTC(2005, 0 /* Jan */, 2))
var result = setUTCWeek(
date,
1,
{
weekStartsOn: 1,
firstWeekContainsDate: 4,
locale: {
options: {weekStartsOn: 0, firstWeekContainsDate: 1}
}
}
)
assert.deepEqual(result, new Date(Date.UTC(2004, 0 /* Jan */, 4)))
})
it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function () {
var block = setUTCWeek.bind(null, new Date(2004, 7 /* Aug */, 7), 53, {weekStartsOn: NaN})
assert.throws(block, RangeError)
})
it('throws `RangeError` if `options.firstWeekContainsDate` is not convertable to 1, 2, ..., 7 or undefined', function () {
var block = setUTCWeek.bind(null, new Date(2004, 7 /* Aug */, 7), 53, {firstWeekContainsDate: NaN})
assert.throws(block, RangeError)
})
it('throws `RangeError` if `options.additionalDigits` is not convertable to 0, 1, 2 or undefined`', function () {
var block = setUTCWeek.bind(null, new Date(2004, 7 /* Aug */, 7), 53, {additionalDigits: NaN})
assert.throws(block, RangeError)
})
it('throws TypeError exception if passed less than 2 arguments', function () {
assert.throws(setUTCWeek.bind(null), TypeError)
assert.throws(setUTCWeek.bind(null, 1), TypeError)
})
})