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

evolve.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
import { evolve as evolveRamda } from 'ramda'
import { add } from '../rambda.js'import { compareCombinations, compareToRamda } from './_internals/testUtils.js'import { evolve } from './evolve.js'
test('happy', () => { const rules = { foo : add(1), nested : { bar : x => Object.keys(x).length }, } const input = { a : 1, foo : 2, nested : { bar : { z : 3 } }, } const result = evolve(rules, input) expect(result).toEqual({ a : 1, foo : 3, nested : { bar : 1 }, })})
test('nested rule is wrong', () => { const rules = { foo : add(1), nested : { bar : 10 }, } const input = { a : 1, foo : 2, nested : { bar : { z : 3 } }, } const result = evolve(rules)(input) expect(result).toEqual({ a : 1, foo : 3, nested : { bar : { z : 3 } }, })})
test('is recursive', () => { const rules = { nested : { second : add(-1), third : add(1), }, } const object = { first : 1, nested : { second : 2, third : 3, }, } const expected = { first : 1, nested : { second : 1, third : 4, }, } const result = evolve(rules, object) expect(result).toEqual(expected)})
test('ignores primitive values', () => { const rules = { n : 2, m : 'foo', } const object = { n : 0, m : 1, } const expected = { n : 0, m : 1, } const result = evolve(rules, object) expect(result).toEqual(expected)})
test('with array', () => { const rules = [ add(1), add(-1) ] const list = [ 100, 1400 ] const expected = [ 101, 1399 ] const result = evolve(rules, list) expect(result).toEqual(expected)})
const rulesObject = { a : add(1) }const rulesList = [ add(1) ]const possibleIterables = [ null, undefined, '', 42, [], [ 1 ], { a : 1 } ]const possibleRules = [ ...possibleIterables, rulesList, rulesObject ]
describe('brute force', () => { compareCombinations({ firstInput : possibleRules, callback : errorsCounters => { expect(errorsCounters).toMatchInlineSnapshot(` { "ERRORS_MESSAGE_MISMATCH": 0, "ERRORS_TYPE_MISMATCH": 4, "RESULTS_MISMATCH": 0, "SHOULD_NOT_THROW": 51, "SHOULD_THROW": 0, "TOTAL_TESTS": 63, } `) }, secondInput : possibleIterables, fn : evolve, fnRamda : evolveRamda, })})
rambda

Version Info

Tagged at
2 months ago