-
-
Notifications
You must be signed in to change notification settings - Fork 810
/
Copy pathtest.js
155 lines (120 loc) · 3.69 KB
/
test.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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
'use strict';
// MODULES //
var tape = require( 'tape' );
var inherit = require( '@stdlib/utils/inherit' );
var instanceOf = require( './../lib' );
// TESTS //
tape( 'main export is a function', function test( t ) {
t.ok( true, __filename );
t.strictEqual( typeof instanceOf, 'function', 'main export is a function' );
t.end();
});
tape( 'the function throws an error if provided a constructor argument which is not callable', function test( t ) {
var values;
var i;
values = [
'5',
5,
NaN,
true,
false,
null,
undefined,
[],
{}
];
for ( i = 0; i < values.length; i++ ) {
t.throws( badValue( values[i] ), TypeError, 'throws a type error when provided '+values[i] );
}
t.end();
function badValue( value ) {
return function badValue() {
instanceOf( {}, value );
};
}
});
tape( 'the function returns `true` if provided a value which is an instance of a provided constructor', function test( t ) {
var bool;
bool = instanceOf( [], Array );
t.strictEqual( bool, true, 'returns expected value' );
bool = instanceOf( [], Object );
t.strictEqual( bool, true, 'returns expected value' );
bool = instanceOf( new Object(), Object ); // eslint-disable-line no-new-object
t.strictEqual( bool, true, 'returns expected value' );
bool = instanceOf( instanceOf, Function );
t.strictEqual( bool, true, 'returns expected value' );
bool = instanceOf( new Date(), Date );
t.strictEqual( bool, true, 'returns expected value' );
bool = instanceOf( /.*/, RegExp );
t.strictEqual( bool, true, 'returns expected value' );
bool = instanceOf( new RegExp( '.*' ), RegExp );
t.strictEqual( bool, true, 'returns expected value' );
t.end();
});
tape( 'the function returns `true` when provided an object literal and the `Object` constructor (exception)', function test( t ) {
var bool = instanceOf( {}, Object );
t.strictEqual( bool, true, 'returns expected value' );
t.end();
});
tape( 'the function returns `true` if a provided a value which is an instance of a provided constructor (inheritance)', function test( t ) {
var bool;
var bar;
function Foo() {
return this;
}
function Bar() {
return this;
}
inherit( Bar, Foo );
bar = new Bar();
bool = instanceOf( bar, Foo );
t.strictEqual( bool, true, 'returns true' );
t.strictEqual( bar instanceof Bar, true, 'is instance of Bar' );
t.strictEqual( bar instanceof Foo, true, 'is instance of Foo' );
t.end();
});
tape( 'the function returns `false` if provided a test value which is not an instance of a provided constructor (primitives)', function test( t ) {
var values;
var bool;
var i;
values = [
'5',
5,
NaN,
true,
false,
null,
undefined
];
for ( i = 0; i < values.length; i++ ) {
bool = instanceOf( values[i], Object );
t.strictEqual( bool, false, 'returns false when provided '+values[i] );
}
t.end();
});
tape( 'the function returns `false` if a provided value which is not an instance of a provided constructor (inheritance)', function test( t ) {
var bool;
var bar;
function Foo() {
return this;
}
function Bar() {
return this;
}
bar = new Bar();
bool = instanceOf( bar, Foo );
t.strictEqual( bool, false, 'returns false' );
t.strictEqual( bar instanceof Bar, true, 'is instance of Bar' );
t.strictEqual( bar instanceof Foo, false, 'is not instance of Foo' );
t.end();
});
tape( 'the function returns `false` if provided primitives and their corresponding object constructors', function test( t ) {
var bool;
bool = instanceOf( true, Boolean );
t.strictEqual( bool, false, 'returns expected value' );
bool = instanceOf( 'beep', String );
t.strictEqual( bool, false, 'returns expected value' );
bool = instanceOf( 5, Number );
t.strictEqual( bool, false, 'returns expected value' );
t.end();
});