-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdays.test.js
45 lines (41 loc) · 1.17 KB
/
days.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
const cases = require('jest-in-case')
const { identity, map, addIndex } = require('ramda')
const {
isPresent,
isValidBirthYear,
isValidHeight,
isValidPassportId,
} = require('./validator')
const day1 = require('./day1')
const day2 = require('./day2')
const day3 = require('./day3')
const day4 = require('./day4')
const day5 = require('./day5')
const day6 = require('./day6')
const mapIndexed = addIndex(map)
const caseify = mapIndexed((options, i) => ({
name: `day ${Math.floor(i / 2 + 1)} star ${(i % 2) + 1} = ${options.answer}`,
...options,
}))
cases(
'advent of code',
(opts, done) => {
return opts.task.fork(console.error, (result) => {
expect(result).toEqual(opts.answer)
done()
})
},
caseify([
{ task: day1.star1, answer: 539851 },
{ task: day1.star2, answer: 212481360 },
{ task: day2.star1, answer: 638 },
{ task: day2.star2, answer: 699 },
{ task: day3.star1, answer: 153 },
{ task: day3.star2, answer: 2421944712 },
{ task: day4.star1, answer: 206 },
{ task: day4.star2, answer: 123 },
{ task: day5.star1, answer: 832 },
{ task: day5.star2, answer: 517 },
{ task: day6.star1, answer: 6878 },
]),
)