forked from ramda/ramda
-
Notifications
You must be signed in to change notification settings - Fork 0
/
is.js
79 lines (65 loc) · 2.03 KB
/
is.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
var R = require('..');
var eq = require('./shared/eq');
describe('is', function() {
it('works with built-in types', function() {
eq(R.is(Array, []), true);
eq(R.is(Boolean, new Boolean(false)), true);
eq(R.is(Date, new Date()), true);
eq(R.is(Function, function() {}), true);
eq(R.is(Number, new Number(0)), true);
eq(R.is(Object, {}), true);
eq(R.is(RegExp, /(?:)/), true);
eq(R.is(String, new String('')), true);
});
it('works with user-defined types', function() {
function Foo() {}
function Bar() {}
Bar.prototype = new Foo();
var foo = new Foo();
var bar = new Bar();
eq(R.is(Foo, foo), true);
eq(R.is(Bar, bar), true);
eq(R.is(Foo, bar), true);
eq(R.is(Bar, foo), false);
});
it('is curried', function() {
var isArray = R.is(Array);
eq(isArray([]), true);
eq(isArray({}), false);
});
it('considers almost everything an object', function() {
function Foo() {}
var foo = new Foo();
var isObject = R.is(Object);
eq(isObject(foo), true);
eq(isObject((function() { return arguments; })()), true);
eq(isObject([]), true);
eq(isObject(new Boolean(false)), true);
eq(isObject(new Date()), true);
eq(isObject(function() {}), true);
eq(isObject(new Number(0)), true);
eq(isObject(/(?:)/), true);
eq(isObject(new String('')), true);
eq(isObject(null), false);
eq(isObject(undefined), false);
});
it('does not coerce', function() {
eq(R.is(Boolean, 1), false);
eq(R.is(Number, '1'), false);
eq(R.is(Number, false), false);
});
it('recognizes primitives as their object equivalents', function() {
eq(R.is(Boolean, false), true);
eq(R.is(Number, 0), true);
eq(R.is(String, ''), true);
});
it('does not consider primitives to be instances of Object', function() {
eq(R.is(Object, false), false);
eq(R.is(Object, 0), false);
eq(R.is(Object, ''), false);
});
it('is curried', function() {
eq(typeof R.is(String), 'function');
eq(R.is(String)('s'), true);
});
});