forked from eighttrigrams/tsfun
-
Notifications
You must be signed in to change notification settings - Fork 0
/
take.spec.ts
96 lines (64 loc) · 1.74 KB
/
take.spec.ts
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
import { expectType } from 'ts-expect'
import {take} from '../../src/array'
import {map} from '../../src/associative'
import { gt } from '../../src/comparator'
import { flow } from '../../src/composition'
/**
* tsfun | take
*/
describe('take', () => {
it('5', () => {
expect(take(5)([1, 2, 7, 7, 8, 9, 11])).toEqual([1, 2, 7, 7, 8])
expect(take(5, [1, 2, 7, 7, 8, 9, 11])).toEqual([1, 2, 7, 7, 8])
})
it('try to take more than items available', () =>
expect(
take(3)
([1, 2])
).toEqual([1, 2])
)
it('filter', () => {
expect(
take(3, gt(3), [1, 7, 9, 20, 3])
).toEqual([7, 9, 20])
expect(
take(3, gt(3))([1, 7, 9, 20, 3])
).toEqual([7, 9, 20])
expect(
flow([1, 7, 9, 20, 3],
take(3, gt(3)),
map(_ => _ * 2))
).toEqual([14, 18, 40])
})
it('edge cases', () => {
expect(
take(3)
([])
).toEqual([])
expect(
take(0)
([1, 2, 7, 7, 8, 9, 11])
).toEqual([])
expect(
take(-1)
([1, 2])
).toEqual([])
})
it('typing', () => {
const $1: number[] = take(5)([1, 2, 7, 7, 8, 9, 11])
expectType<Array<number>>($1)
const $2: number[] = take(5, [1, 2, 7, 7, 8, 9, 11])
expectType<Array<number>>($2)
})
it('filter - edge cases', () => {
expect(
take(0, gt(3), [1, 7, 9, 20, 3])
).toEqual([])
expect(
take(4, gt(3))([1, 7, 9, 20, 3])
).toEqual([7, 9, 20])
expect(
take(-1, gt(3), [1, 7, 9, 20, 3])
).toEqual([])
})
})