deno.land / x / rambda@v9.1.1 / source / lensPath.spec.js

lensPath.spec.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
import { compose } from './compose.js'import { identity } from './identity.js'import { inc } from './inc.js'import { lensPath } from './lensPath.js'import { lensProp } from './lensProp.js'import { over } from './over.js'import { set } from './set.js'import { view } from './view.js'
const testObj = { a : [ { b : 1 }, { b : 2 } ], d : 3,}
test('view', () => { expect(view(lensPath('d'), testObj)).toBe(3) expect(view(lensPath('a.0.b'), testObj)).toBe(1) // this is different to ramda, as ramda will return a clone of the input object expect(view(lensPath(''), testObj)).toBeUndefined()})
test('set', () => { expect(set( lensProp('d'), 0, testObj )).toEqual({ a : [ { b : 1 }, { b : 2 } ], d : 0, }) expect(set( lensPath('a.0.b'), 0, testObj )).toEqual({ a : [ { b : 0 }, { b : 2 } ], d : 3, }) expect(set( lensPath('a.0.X'), 0, testObj )).toEqual({ a : [ { b : 1, X : 0, }, { b : 2 }, ], d : 3, }) expect(set( lensPath([]), 0, testObj )).toBe(0)})
test('over', () => { expect(over( lensPath('d'), inc, testObj )).toEqual({ a : [ { b : 1 }, { b : 2 } ], d : 4, }) expect(over( lensPath('a.1.b'), inc, testObj )).toEqual({ a : [ { b : 1 }, { b : 3 } ], d : 3, }) expect(over( lensProp('X'), identity, testObj )).toEqual({ a : [ { b : 1 }, { b : 2 } ], d : 3, X : undefined, }) expect(over( lensPath('a.0.X'), identity, testObj )).toEqual({ a : [ { b : 1, X : undefined, }, { b : 2 }, ], d : 3, })})
test('compose', () => { const composedLens = compose(lensPath('a'), lensPath('1.b')) expect(view(composedLens, testObj)).toBe(2)})
test('set s (get s) === s', () => { expect(set( lensPath([ 'd' ]), view(lensPath([ 'd' ]), testObj), testObj )).toEqual(testObj) expect(set( lensPath([ 'a', 0, 'b' ]), view(lensPath([ 'a', 0, 'b' ]), testObj), testObj )).toEqual(testObj)})
test('get (set s v) === v', () => { expect(view(lensPath([ 'd' ]), set( lensPath([ 'd' ]), 0, testObj ))).toBe(0) expect(view(lensPath([ 'a', 0, 'b' ]), set( lensPath([ 'a', 0, 'b' ]), 0, testObj ))).toBe(0)})
test('get (set(set s v1) v2) === v2', () => { const p = [ 'd' ] const q = [ 'a', 0, 'b' ] expect(view(lensPath(p), set( lensPath(p), 11, set( lensPath(p), 10, testObj ) ))).toBe(11) expect(view(lensPath(q), set( lensPath(q), 11, set( lensPath(q), 10, testObj ) ))).toBe(11)})
rambda

Version Info

Tagged at
2 months ago