forked from sindresorhus/matcher
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
275 lines (229 loc) · 9.15 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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
import test from 'ava';
import matcher from './index.js';
test('matcher()', t => {
t.deepEqual(matcher(['foo', 'bar'], ['foo']), ['foo']);
t.deepEqual(matcher(['foo', 'bar'], ['bar']), ['bar']);
t.deepEqual(matcher(['foo', 'bar'], ['fo*', 'ba*', '!bar']), ['foo']);
t.deepEqual(matcher(['foo', 'bar', 'moo'], ['!*o']), ['bar']);
t.deepEqual(matcher(['moo', 'MOO'], ['*oo'], {caseSensitive: true}), ['moo']);
t.deepEqual(matcher(['moo', 'MOO'], ['*oo'], {caseSensitive: false}), ['moo', 'MOO']);
t.notThrows(() => {
matcher([], []);
});
});
test('matcher.isMatch()', t => {
t.true(matcher.isMatch('unicorn', 'unicorn'));
t.true(matcher.isMatch('MOO', 'MOO'));
t.true(matcher.isMatch('unicorn', 'uni*'));
t.true(matcher.isMatch('UNICORN', 'unicorn', {caseSensitive: false}));
t.true(matcher.isMatch('unicorn', '*corn'));
t.true(matcher.isMatch('unicorn', 'un*rn'));
t.true(matcher.isMatch('foo unicorn bar', '*unicorn*'));
t.true(matcher.isMatch('unicorn', '*'));
t.true(matcher.isMatch('UNICORN', 'UNI*', {caseSensitive: true}));
t.false(matcher.isMatch('UNICORN', 'unicorn', {caseSensitive: true}));
t.false(matcher.isMatch('unicorn', ''));
t.false(matcher.isMatch('unicorn', '!unicorn'));
t.false(matcher.isMatch('unicorn', '!uni*'));
t.false(matcher.isMatch('unicorn', 'uni\\*'));
t.true(matcher.isMatch('unicorn', '!tricorn'));
t.true(matcher.isMatch('unicorn', '!tri*'));
t.true(matcher.isMatch(['foo', 'bar', 'moo'], '*oo'));
t.true(matcher.isMatch(['foo', 'bar', 'moo'], ['*oo', '!f*']));
t.true(matcher.isMatch('moo', ['*oo', '!f*']));
t.true(matcher.isMatch('UNICORN', ['!*oo', 'UNI*'], {caseSensitive: true}));
t.false(matcher.isMatch(['unicorn', 'bar', 'wizard'], '*oo'));
t.false(matcher.isMatch(['foo', 'bar', 'unicorn'], ['*horn', '!b*']));
t.false(matcher.isMatch('moo', ['*oo', '!m*']));
t.false(matcher.isMatch('UNICORN', ['!*oo', 'uni*'], {caseSensitive: true}));
});
test('matches across newlines', t => {
t.deepEqual(matcher(['foo\nbar'], ['foo*']), ['foo\nbar']);
t.deepEqual(matcher(['foo\nbar'], ['foo*r']), ['foo\nbar']);
t.true(matcher.isMatch(['foo\nbar'], ['foo*']));
t.true(matcher.isMatch(['foo\nbar'], ['foo*r']));
});
test('handles empty arguments consistently', t => {
t.deepEqual(matcher(['phoenix'], ['bar', '']), []);
t.deepEqual(matcher(['phoenix'], ['', 'bar']), []);
t.deepEqual(matcher(['phoenix'], ['', 'bar', '']), []);
t.deepEqual(matcher(['phoenix'], ['bar', '', 'bar']), []);
t.deepEqual(matcher(['phoenix'], [undefined, '']), []);
t.deepEqual(matcher(['phoenix'], ['', undefined]), []);
t.deepEqual(matcher(['phoenix'], ['', undefined, '']), []);
t.deepEqual(matcher(['phoenix'], [undefined, '', undefined]), []);
t.deepEqual(matcher(['phoenix'], ['', '']), []);
t.deepEqual(matcher(['phoenix'], ['']), []);
t.deepEqual(matcher(['phoenix'], ''), []);
t.deepEqual(matcher(['phoenix'], []), []);
t.deepEqual(matcher(['phoenix'], [undefined]), []);
t.deepEqual(matcher(['phoenix'], undefined), []);
t.deepEqual(matcher(['phoenix', ''], ['bar']), []);
t.deepEqual(matcher(['', 'phoenix'], ['bar']), []);
t.deepEqual(matcher(['', 'phoenix', ''], ['bar']), []);
t.deepEqual(matcher(['phoenix', '', 'phoenix'], ['bar']), []);
t.deepEqual(matcher([undefined, ''], ['bar']), []);
t.deepEqual(matcher(['', undefined], ['bar']), []);
t.deepEqual(matcher(['', undefined, ''], ['bar']), []);
t.deepEqual(matcher([undefined, '', undefined], ['bar']), []);
t.deepEqual(matcher(['', ''], ['bar']), []);
t.deepEqual(matcher([''], ['bar']), []);
t.deepEqual(matcher('', ['bar']), []);
t.deepEqual(matcher([], ['bar']), []);
t.deepEqual(matcher([undefined], ['bar']), []);
t.deepEqual(matcher(undefined, ['bar']), []);
t.false(matcher.isMatch(['phoenix'], ['bar', '']));
t.false(matcher.isMatch(['phoenix'], ['', 'bar']));
t.false(matcher.isMatch(['phoenix'], ['', 'bar', '']));
t.false(matcher.isMatch(['phoenix'], ['bar', '', 'bar']));
t.false(matcher.isMatch(['phoenix'], [undefined, '']));
t.false(matcher.isMatch(['phoenix'], ['', undefined]));
t.false(matcher.isMatch(['phoenix'], ['', undefined, '']));
t.false(matcher.isMatch(['phoenix'], [undefined, '', undefined]));
t.false(matcher.isMatch(['phoenix'], ['', '']));
t.false(matcher.isMatch(['phoenix'], ['']));
t.false(matcher.isMatch(['phoenix'], ''));
t.false(matcher.isMatch(['phoenix'], []));
t.false(matcher.isMatch(['phoenix'], [undefined]));
t.false(matcher.isMatch(['phoenix'], undefined));
t.false(matcher.isMatch(['phoenix', ''], ['bar']));
t.false(matcher.isMatch(['', 'phoenix'], ['bar']));
t.false(matcher.isMatch(['', 'phoenix', ''], ['bar']));
t.false(matcher.isMatch(['phoenix', '', 'phoenix'], ['bar']));
t.false(matcher.isMatch([undefined, ''], ['bar']));
t.false(matcher.isMatch(['', undefined], ['bar']));
t.false(matcher.isMatch(['', undefined, ''], ['bar']));
t.false(matcher.isMatch([undefined, '', undefined], ['bar']));
t.false(matcher.isMatch(['', ''], ['bar']));
t.false(matcher.isMatch([''], ['bar']));
t.false(matcher.isMatch('', ['bar']));
t.false(matcher.isMatch([], ['bar']));
t.false(matcher.isMatch([undefined], ['bar']));
t.false(matcher.isMatch(undefined, ['bar']));
t.deepEqual(matcher([''], ['bar', '']), ['']);
t.deepEqual(matcher([''], ['', 'bar']), ['']);
t.deepEqual(matcher([''], [undefined, '']), ['']);
t.deepEqual(matcher([''], ['', undefined]), ['']);
t.deepEqual(matcher([''], ['', '']), ['']);
t.deepEqual(matcher(['phoenix', ''], ['']), ['']);
t.deepEqual(matcher(['', 'phoenix'], ['']), ['']);
t.deepEqual(matcher([undefined, ''], ['']), ['']);
t.deepEqual(matcher(['', undefined], ['']), ['']);
t.deepEqual(matcher(['', ''], ['']), ['', '']);
t.deepEqual(matcher([''], ['']), ['']);
t.deepEqual(matcher([''], ['*']), ['']);
t.deepEqual(matcher([undefined], ['bar', undefined]), []);
t.deepEqual(matcher([undefined], [undefined, 'bar']), []);
t.deepEqual(matcher([undefined], ['', undefined]), []);
t.deepEqual(matcher([undefined], [undefined, '']), []);
t.deepEqual(matcher([undefined], [undefined, undefined]), []);
t.deepEqual(matcher([undefined], [undefined]), []);
t.deepEqual(matcher([undefined], undefined), []);
t.deepEqual(matcher(['phoenix', undefined], [undefined]), []);
t.deepEqual(matcher([undefined, 'phoenix'], [undefined]), []);
t.deepEqual(matcher(['', undefined], [undefined]), []);
t.deepEqual(matcher([undefined, ''], [undefined]), []);
t.deepEqual(matcher([undefined, undefined], [undefined]), []);
t.deepEqual(matcher([undefined], [undefined]), []);
t.deepEqual(matcher(undefined, [undefined]), []);
t.deepEqual(matcher([], []), []);
t.deepEqual(matcher([], ['*']), []);
t.true(matcher.isMatch([''], [undefined, '']));
t.true(matcher.isMatch([''], ['', undefined]));
t.true(matcher.isMatch([''], ['', '']));
t.true(matcher.isMatch(['phoenix', ''], ['']));
t.true(matcher.isMatch(['', 'phoenix'], ['']));
t.true(matcher.isMatch([undefined, ''], ['']));
t.true(matcher.isMatch(['', undefined], ['']));
t.true(matcher.isMatch(['', ''], ['']));
t.true(matcher.isMatch([''], ['']));
t.true(matcher.isMatch([''], ['*']));
t.false(matcher.isMatch([undefined], ['bar', undefined]));
t.false(matcher.isMatch([undefined], [undefined, 'bar']));
t.false(matcher.isMatch([undefined], ['', undefined]));
t.false(matcher.isMatch([undefined], [undefined, '']));
t.false(matcher.isMatch([undefined], [undefined, undefined]));
t.false(matcher.isMatch([undefined], [undefined]));
t.false(matcher.isMatch([undefined], undefined));
t.false(matcher.isMatch(['phoenix', undefined], [undefined]));
t.false(matcher.isMatch([undefined, 'phoenix'], [undefined]));
t.false(matcher.isMatch(['', undefined], [undefined]));
t.false(matcher.isMatch([undefined, ''], [undefined]));
t.false(matcher.isMatch([undefined, undefined], [undefined]));
t.false(matcher.isMatch([undefined], [undefined]));
t.false(matcher.isMatch(undefined, [undefined]));
t.false(matcher.isMatch([], []));
t.false(matcher.isMatch([], ['*']));
t.throws(() => {
matcher(['phoenix'], [0]);
});
t.throws(() => {
matcher(['phoenix'], [null]);
});
t.throws(() => {
matcher(['phoenix'], [false]);
});
t.throws(() => {
matcher(['phoenix'], 0);
});
t.throws(() => {
matcher(['phoenix'], null);
});
t.throws(() => {
matcher(['phoenix'], false);
});
t.throws(() => {
matcher([0], ['bar']);
});
t.throws(() => {
matcher([null], ['bar']);
});
t.throws(() => {
matcher([false], ['bar']);
});
t.throws(() => {
matcher(0, ['bar']);
});
t.throws(() => {
matcher(null, ['bar']);
});
t.throws(() => {
matcher(false, ['bar']);
});
t.throws(() => {
matcher.isMatch(['phoenix'], [0]);
});
t.throws(() => {
matcher.isMatch(['phoenix'], [null]);
});
t.throws(() => {
matcher.isMatch(['phoenix'], [false]);
});
t.throws(() => {
matcher.isMatch(['phoenix'], 0);
});
t.throws(() => {
matcher.isMatch(['phoenix'], null);
});
t.throws(() => {
matcher.isMatch(['phoenix'], false);
});
t.throws(() => {
matcher.isMatch([0], ['bar']);
});
t.throws(() => {
matcher.isMatch([null], ['bar']);
});
t.throws(() => {
matcher.isMatch([false], ['bar']);
});
t.throws(() => {
matcher.isMatch(0, ['bar']);
});
t.throws(() => {
matcher.isMatch(null, ['bar']);
});
t.throws(() => {
matcher.isMatch(false, ['bar']);
});
});