-
Notifications
You must be signed in to change notification settings - Fork 2
/
intersect.spec.ts
70 lines (41 loc) · 1.42 KB
/
intersect.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
import {intersect} from '../../src/set'
import {equal} from '../../src/comparator'
/**
* tsfun | intersect
*/
describe('intersect', () => {
it('array',() =>
expect(
intersect([1,2], [2,4]))
.toEqual([2]))
it('multiple arguments in single parameter list', () => {
expect(
intersect([1,2],[2,4],[2,3]))
.toEqual([2])
})
it('multiple parameter lists', () => {
expect(
intersect([1,2])([2,4]))
.toEqual([2])
})
it('typing', () => {
const result1: number[] = intersect([1], [2])
const result2: string[] = intersect(['1'], ['2'])
const result4: (_: number[]) => number[] = intersect([1])
const result5: (_: string[]) => string[] = intersect([''])
const result7: number[] = intersect([1])([2])
const result8: string[] = intersect(['1'])(['2'])
const result10: number[] = intersect([1], [2], [3])
const result11: string[] = intersect(['1'], ['2'], ['3'])
})
it('intersect with comparator', () =>
expect(
intersect<any>(equal, [{a: 'a'}, {c: 'c'}])([{c: 'c'}, {d: 'd'}]))
.toEqual([{c: 'c'}]))
// err cases
it('illegal arguments', () => {
expect(
() => intersect()
).toThrow('illegal argument - intersect expects at least one argument in first parameter list')
})
})