forked from ramda/ramda
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathany.js
66 lines (52 loc) · 2.14 KB
/
any.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
var listXf = require('./helpers/listXf.js');
var R = require('../source/index.js');
var eq = require('./shared/eq.js');
describe('any', function() {
var odd = function(n) {return n % 2 === 1;};
var T = function() {return true;};
var intoArray = R.into([]);
it('returns true if any element satisfies the predicate', function() {
eq(R.any(odd, [2, 4, 6, 8, 10, 11, 12]), true);
});
it('returns false if all elements fails to satisfy the predicate', function() {
eq(R.any(odd, [2, 4, 6, 8, 10, 12]), false);
});
it('returns true into array if any element satisfies the predicate', function() {
eq(intoArray(R.any(odd), [2, 4, 6, 8, 10, 11, 12]), [true]);
});
it('returns false if all elements fails to satisfy the predicate', function() {
eq(intoArray(R.any(odd), [2, 4, 6, 8, 10, 12]), [false]);
});
it('works with more complex objects', function() {
var people = [{first: 'Paul', last: 'Grenier'}, {first:'Mike', last: 'Hurley'}, {first: 'Will', last: 'Klein'}];
var alliterative = function(person) {return person.first.charAt(0) === person.last.charAt(0);};
eq(R.any(alliterative, people), false);
people.push({first: 'Scott', last: 'Sauyet'});
eq(R.any(alliterative, people), true);
});
it('can use a configurable function', function() {
var teens = [{name: 'Alice', age: 14}, {name: 'Betty', age: 18}, {name: 'Cindy', age: 17}];
var atLeast = function(age) {return function(person) {return person.age >= age;};};
eq(R.any(atLeast(16), teens), true);
eq(R.any(atLeast(21), teens), false);
});
it('returns false for an empty list', function() {
eq(R.any(T, []), false);
});
it('returns false into array for an empty list', function() {
eq(intoArray(R.any(T), []), [false]);
});
it('dispatches when given a transformer in list position', function() {
eq(R.any(odd, listXf), {
any: false,
f: odd,
xf: listXf
});
});
it('can act as a transducer', function() {
var input = [2, 4, 6, 8, 10];
var expected = [false];
eq(R.into([], R.any(odd), input), expected);
eq(R.transduce(R.any(odd), R.flip(R.append), [], input), expected);
});
});