forked from ramda/ramda
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathall.js
62 lines (49 loc) · 1.87 KB
/
all.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
var listXf = require('./helpers/listXf.js');
var R = require('../source/index.js');
var eq = require('./shared/eq.js');
describe('all', function() {
var even = function(n) {return n % 2 === 0;};
var T = function() {return true;};
var isFalse = function(x) { return x === false; };
var intoArray = R.into([]);
it('returns true if all elements satisfy the predicate', function() {
eq(R.all(even, [2, 4, 6, 8, 10, 12]), true);
eq(R.all(isFalse, [false, false, false]), true);
});
it('returns false if any element fails to satisfy the predicate', function() {
eq(R.all(even, [2, 4, 6, 8, 9, 10]), false);
});
it('returns true for an empty list', function() {
eq(R.all(T, []), true);
});
it('returns true into array if all elements satisfy the predicate', function() {
eq(intoArray(R.all(even), [2, 4, 6, 8, 10, 12]), [true]);
eq(intoArray(R.all(isFalse), [false, false, false]), [true]);
});
it('returns false into array if any element fails to satisfy the predicate', function() {
eq(intoArray(R.all(even), [2, 4, 6, 8, 9, 10]), [false]);
});
it('returns true into array for an empty list', function() {
eq(intoArray(R.all(T), []), [true]);
});
it('works with more complex objects', function() {
var xs = [{x: 'abc'}, {x: 'ade'}, {x: 'fghiajk'}];
function len3(o) { return o.x.length === 3; }
function hasA(o) { return o.x.indexOf('a') > -1; }
eq(R.all(len3, xs), false);
eq(R.all(hasA, xs), true);
});
it('dispatches when given a transformer in list position', function() {
eq(R.all(even, listXf), {
all: true,
f: even,
xf: listXf
});
});
it('can act as a transducer', function() {
var input = [2, 4, 6, 8, 9, 10];
var expected = [false];
eq(R.into([], R.all(even), input), expected);
eq(R.transduce(R.all(even), R.flip(R.append), [], input), expected);
});
});