forked from ramda/ramda
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpartialObject.js
35 lines (28 loc) · 995 Bytes
/
partialObject.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
var R = require('../source/index.js');
var eq = require('./shared/eq.js');
describe('partialObject', function() {
var discriminant = function({ a, b, c }) {
return b * b - 4 * a * c;
};
it('caches the initially supplied arguments', function() {
var f = R.partialObject(discriminant, { a: 3 });
eq(f({ b: 7, c: 4 }), 1);
var g = R.partialObject(discriminant, { a: 3, b: 7 });
eq(g({ c: 4 }), 1);
});
it('works regardless of property order', function() {
var f = R.partialObject(discriminant, { b: 7 });
eq(f({ c: 4, a: 3 }), 1);
var g = R.partialObject(discriminant, { a: 3 });
var h = R.partialObject(g, { c: 4 });
eq(h({ b: 7 }), 1);
});
it('merges deeply right', function() {
var nestedDiscriminant = function({ a, c, d}) {
return d.b * d.b - 4 * a * c;
};
var f = R.partialObject(nestedDiscriminant, { a: 0, d: { b: 0 } });
var g = R.partialObject(f, { a: 3, d: { b: 7 } });
eq(g({ c: 4 }), 1);
});
});