forked from ramda/ramda
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpickBy.js
41 lines (32 loc) · 1.13 KB
/
pickBy.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
var assert = require('assert');
var R = require('../source/index.js');
var eq = require('./shared/eq.js');
describe('pickBy', function() {
var obj = {a: 1, b: 2, c: 3, d: 4, e: 5, f: 6};
it('creates a copy of the object', function() {
assert.notStrictEqual(R.pickBy(R.always(true), obj), obj);
});
it('when returning truthy, keeps the key', function() {
eq(R.pickBy(R.T, obj), obj);
eq(R.pickBy(R.always({}), obj), obj);
eq(R.pickBy(R.always(1), obj), obj);
});
it('when returning falsy, keeps the key', function() {
eq(R.pickBy(R.always(false), obj), {});
eq(R.pickBy(R.always(0), obj), {});
eq(R.pickBy(R.always(null), obj), {});
});
it('is called with (val,key,obj)', function() {
eq(R.pickBy(function(val, key, _obj) {
eq(_obj, obj);
return key === 'd' && val === 4;
}, obj), {d: 4});
});
it('retrieves prototype properties', function() {
var F = function(param) {this.x = param;};
F.prototype.y = 40; F.prototype.z = 50;
var obj = new F(30);
obj.v = 10; obj.w = 20;
eq(R.pickBy(function(val) {return val < 45;}, obj), {v: 10, w: 20, x: 30, y: 40});
});
});