ejv 1.1.10 → 1.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,832 +1,832 @@
1
- import { expect } from 'chai';
2
-
3
- import { commonTestRunner } from './common-test-runner';
4
-
5
- import {
6
- arrayTester,
7
- arrayTypeOfTester,
8
- booleanTester,
9
- dateFormatTester,
10
- dateTester,
11
- dateTimeFormatTester,
12
- definedTester,
13
- emailTester,
14
- enumTester,
15
- exclusiveMaxDateTester,
16
- exclusiveMaxNumberTester,
17
- exclusiveMinDateTester,
18
- exclusiveMinNumberTester,
19
- hasPropertyTester,
20
- indexTester,
21
- integerTester,
22
- lengthTester,
23
- maxDateTester,
24
- maxLengthTester,
25
- maxNumberTester,
26
- minDateTester,
27
- minLengthTester,
28
- minNumberTester,
29
- numberTester,
30
- objectTester,
31
- regExpTester,
32
- stringRegExpTester,
33
- stringTester,
34
- timeFormatTester,
35
- uniqueItemsTester
36
- } from '../src/tester';
37
- import { DataType } from '../src/constants';
38
-
39
- describe('testers', function () {
40
- describe('common', () => {
41
- describe('definedTester()', () => {
42
- it('common test', () => {
43
- expect(commonTestRunner(
44
- definedTester,
45
- true,
46
- false,
47
- true,
48
- true,
49
- true,
50
- true,
51
- true
52
- )).to.be.true;
53
- });
54
- });
55
-
56
- describe('enumTester()', () => {
57
- it('logic test', () => {
58
- expect(enumTester('a', ['a', 'b', 'c'])).to.be.true;
59
- expect(enumTester('a', ['b', 'c'])).to.be.false;
60
-
61
- expect(enumTester(1, [1, 2, 3])).to.be.true;
62
- expect(enumTester(1, [2, 3])).to.be.false;
63
- });
64
- });
65
-
66
- describe('lengthTester()', () => {
67
- it('logic test', () => {
68
- expect(lengthTester('abcd', 3)).to.be.false;
69
- expect(lengthTester('abcd', 4)).to.be.true;
70
- expect(lengthTester('abcd', 5)).to.be.false;
71
-
72
- expect(lengthTester([1, 2, 3, 4], 3)).to.be.false;
73
- expect(lengthTester([1, 2, 3, 4], 4)).to.be.true;
74
- expect(lengthTester([1, 2, 3, 4], 5)).to.be.false;
75
- });
76
- });
77
-
78
- describe('minLengthTester()', () => {
79
- it('logic test', () => {
80
- expect(minLengthTester('abcd', 3)).to.be.true;
81
- expect(minLengthTester('abcd', 4)).to.be.true;
82
- expect(minLengthTester('abcd', 5)).to.be.false;
83
-
84
- expect(minLengthTester([1, 2, 3, 4], 3)).to.be.true;
85
- expect(minLengthTester([1, 2, 3, 4], 4)).to.be.true;
86
- expect(minLengthTester([1, 2, 3, 4], 5)).to.be.false;
87
- });
88
- });
89
-
90
- describe('maxLengthTester()', () => {
91
- it('logic test', () => {
92
- expect(maxLengthTester('abcd', 3)).to.be.false;
93
- expect(maxLengthTester('abcd', 4)).to.be.true;
94
- expect(maxLengthTester('abcd', 5)).to.be.true;
95
-
96
- expect(maxLengthTester([1, 2, 3, 4], 3)).to.be.false;
97
- expect(maxLengthTester([1, 2, 3, 4], 4)).to.be.true;
98
- expect(maxLengthTester([1, 2, 3, 4], 5)).to.be.true;
99
- });
100
- });
101
- });
102
-
103
- describe('boolean', () => {
104
- describe('booleanTester()', () => {
105
- it('common test', () => {
106
- expect(commonTestRunner(
107
- booleanTester,
108
- false,
109
- false,
110
- true,
111
- false,
112
- false,
113
- false,
114
- false
115
- )).to.be.true;
116
- });
117
-
118
- it('logic test', () => {
119
- expect(booleanTester(true)).to.be.true;
120
- expect(booleanTester(false)).to.be.true;
121
-
122
- expect(booleanTester('true')).to.be.false;
123
- expect(booleanTester('false')).to.be.false;
124
-
125
- expect(booleanTester(1)).to.be.false;
126
- expect(booleanTester(0)).to.be.false;
127
- });
128
- });
129
- });
130
-
131
- describe('number', () => {
132
- describe('numberTester()', () => {
133
- it('common test', () => {
134
- expect(commonTestRunner(
135
- numberTester,
136
- false,
137
- false,
138
- false,
139
- true,
140
- false,
141
- false,
142
- false
143
- )).to.be.true;
144
- });
145
-
146
- it('logic test', () => {
147
- expect(numberTester(true)).to.be.false;
148
- expect(numberTester(null)).to.be.false;
149
-
150
- expect(numberTester(-10.6)).to.be.true;
151
- expect(numberTester(-1)).to.be.true;
152
- expect(numberTester(0)).to.be.true;
153
- expect(numberTester(5)).to.be.true;
154
- expect(numberTester(5.5)).to.be.true;
155
-
156
- expect(numberTester('8')).to.be.false;
157
- expect(numberTester('8.5')).to.be.false;
158
-
159
- expect(numberTester(NaN)).to.be.false;
160
- });
161
- });
162
-
163
- describe('integerTester()', () => {
164
- it('logic test', () => {
165
- expect(integerTester(-10.6)).to.be.false;
166
- expect(integerTester(-1)).to.be.true;
167
- expect(integerTester(0)).to.be.true;
168
- expect(integerTester(5)).to.be.true;
169
- expect(integerTester(5.5)).to.be.false;
170
- });
171
- });
172
-
173
- describe('indexTester()', () => {
174
- it('logic test', () => {
175
- expect(indexTester(-10.6)).to.be.false;
176
- expect(indexTester(-1)).to.be.false;
177
- expect(indexTester(0)).to.be.true;
178
- expect(indexTester(5)).to.be.true;
179
- expect(indexTester(5.5)).to.be.false;
180
- });
181
- });
182
-
183
- describe('minNumberTester()', () => {
184
- it('logic test', () => {
185
- expect(minNumberTester(-11, -12)).to.be.true;
186
- expect(minNumberTester(-11, -11)).to.be.true;
187
- expect(minNumberTester(-11, -10)).to.be.false;
188
-
189
- expect(minNumberTester(0, -1)).to.be.true;
190
- expect(minNumberTester(0, 0)).to.be.true;
191
- expect(minNumberTester(0, 1)).to.be.false;
192
-
193
- expect(minNumberTester(50, 49.9)).to.be.true;
194
- expect(minNumberTester(50, 50)).to.be.true;
195
- expect(minNumberTester(50, 50.1)).to.be.false;
196
- });
197
- });
198
-
199
- describe('exclusiveMinNumberTester()', () => {
200
- it('logic test', () => {
201
- expect(exclusiveMinNumberTester(-11, -12)).to.be.true;
202
- expect(exclusiveMinNumberTester(-11, -11)).to.be.false;
203
- expect(exclusiveMinNumberTester(-11, -10)).to.be.false;
204
-
205
- expect(exclusiveMinNumberTester(0, -1)).to.be.true;
206
- expect(exclusiveMinNumberTester(0, 0)).to.be.false;
207
- expect(exclusiveMinNumberTester(0, 1)).to.be.false;
208
-
209
- expect(exclusiveMinNumberTester(50, 49.9)).to.be.true;
210
- expect(exclusiveMinNumberTester(50, 50)).to.be.false;
211
- expect(exclusiveMinNumberTester(50, 50.1)).to.be.false;
212
- });
213
- });
214
-
215
- describe('maxNumberTester()', () => {
216
- it('logic test', () => {
217
- expect(maxNumberTester(-11, -12)).to.be.false;
218
- expect(maxNumberTester(-11, -11)).to.be.true;
219
- expect(maxNumberTester(-11, -10)).to.be.true;
220
-
221
- expect(maxNumberTester(0, -1)).to.be.false;
222
- expect(maxNumberTester(0, 0)).to.be.true;
223
- expect(maxNumberTester(0, 1)).to.be.true;
224
-
225
- expect(maxNumberTester(50, 49.9)).to.be.false;
226
- expect(maxNumberTester(50, 50)).to.be.true;
227
- expect(maxNumberTester(50, 50.1)).to.be.true;
228
- });
229
- });
230
-
231
- describe('exclusiveMaxNumberTester()', () => {
232
- it('logic test', () => {
233
- expect(exclusiveMaxNumberTester(-11, -12)).to.be.false;
234
- expect(exclusiveMaxNumberTester(-11, -11)).to.be.false;
235
- expect(exclusiveMaxNumberTester(-11, -10)).to.be.true;
236
-
237
- expect(exclusiveMaxNumberTester(0, -1)).to.be.false;
238
- expect(exclusiveMaxNumberTester(0, 0)).to.be.false;
239
- expect(exclusiveMaxNumberTester(0, 1)).to.be.true;
240
-
241
- expect(exclusiveMaxNumberTester(50, 49.9)).to.be.false;
242
- expect(exclusiveMaxNumberTester(50, 50)).to.be.false;
243
- expect(exclusiveMaxNumberTester(50, 50.1)).to.be.true;
244
- });
245
- });
246
- });
247
-
248
- describe('string', () => {
249
- describe('stringTester()', () => {
250
- it('common test', () => {
251
- expect(commonTestRunner(
252
- stringTester,
253
- false,
254
- false,
255
- false,
256
- false,
257
- true,
258
- false,
259
- false
260
- )).to.be.true;
261
- });
262
-
263
- it('logic test', () => {
264
- expect(stringTester('')).to.be.true;
265
- expect(stringTester(' ')).to.be.true;
266
- expect(stringTester('hello')).to.be.true;
267
- });
268
- });
269
-
270
- describe('stringRegExpTester()', () => {
271
- it('logic test', () => {
272
- expect(stringRegExpTester('abc', /abc/)).to.be.true;
273
- expect(stringRegExpTester('abc', /abcd/)).to.be.false;
274
-
275
- expect(stringRegExpTester('abc', new RegExp('abc'))).to.be.true;
276
- expect(stringRegExpTester('abc', new RegExp('abcd'))).to.be.false;
277
- });
278
- });
279
-
280
- describe('emailTester()', () => {
281
- it('logic test', () => {
282
- expect(emailTester('')).to.be.false;
283
- expect(emailTester(' ')).to.be.false;
284
- expect(emailTester('hello')).to.be.false;
285
- expect(emailTester('hello@')).to.be.false;
286
- expect(emailTester('hello@domain')).to.be.true;
287
- expect(emailTester('hello@domain.')).to.be.false;
288
- expect(emailTester('hello@domain.com')).to.be.true;
289
- expect(emailTester('hello@domain.com.')).to.be.false;
290
- expect(emailTester('hello@domain.com.another')).to.be.true;
291
-
292
- expect(emailTester('prettyandsimple@example.com')).to.be.true;
293
- expect(emailTester('very.common@example.com')).to.be.true;
294
- expect(emailTester('disposable.style.email.with+symbol@example.com')).to.be.true;
295
- expect(emailTester('other.email-with-dash@example.com')).to.be.true;
296
- expect(emailTester('x@example.com')).to.be.true;
297
- expect(emailTester('"much.more unusual"@example.com')).to.be.true;
298
- expect(emailTester('"very.unusual.@.unusual.com"@example.com')).to.be.true;
299
- expect(emailTester('example-indeed@strange-example.com')).to.be.true;
300
- expect(emailTester('admin@mailserver1')).to.be.true;
301
- expect(emailTester('#!$%&\'*+-/=?^_`{}|~@example.org')).to.be.true;
302
- expect(emailTester('"()<>[]:,;@\\\\\\"!#$%&\'-/=?^_`{}| ~.a"@example.org')).to.be.true;
303
- expect(emailTester('" "@example.org')).to.be.true;
304
- expect(emailTester('example@localhost')).to.be.true;
305
- expect(emailTester('example@s.solutions')).to.be.true;
306
- expect(emailTester('user@localserver')).to.be.true;
307
- expect(emailTester('user@tt')).to.be.true;
308
- expect(emailTester('user@[IPv6:2001:DB8::1]')).to.be.true;
309
-
310
- expect(emailTester('Abc.example.com')).to.be.false;
311
- expect(emailTester('A@b@c@example.com')).to.be.false;
312
- expect(emailTester('"A@b@c"@example.com')).to.be.true;
313
-
314
- expect(emailTester('a"b(c)d,e:f;g<h>i[j\\k]l@example.com')).to.be.false;
315
- expect(emailTester('just"not"right@example.com')).to.be.false;
316
- expect(emailTester('this is"not\allowed@example.com')).to.be.false;
317
- expect(emailTester('this\ still\"not\\allowed@example.com')).to.be.false;
318
- expect(emailTester('1234567890123456789012345678901234567890123456789012345678901234+x@example.com')).to.be.false;
319
- expect(emailTester('john..doe@example.com')).to.be.false;
320
- expect(emailTester('john.doe@example..com')).to.be.false;
321
-
322
- expect(emailTester(' ejv@ejv.com')).to.be.false;
323
- expect(emailTester('ejv@ejv.com ')).to.be.false;
324
- });
325
- });
326
-
327
- describe('dateFormatTester()', () => {
328
- it('logic test', () => {
329
- //// ISO 8601
330
- // year
331
- expect(dateFormatTester('100')).to.be.false;
332
- expect(dateFormatTester('1000')).to.be.true;
333
- expect(dateFormatTester('+2000')).to.be.true;
334
- expect(dateFormatTester('-2000')).to.be.true;
335
-
336
- // calendar date
337
- expect(dateFormatTester('2018-1-17')).to.be.false;
338
- expect(dateFormatTester('2018-12-32')).to.be.false;
339
- expect(dateFormatTester('2018-12-17')).to.be.true;
340
- expect(dateFormatTester('2018-13-17')).to.be.false;
341
- expect(dateFormatTester('2018-12-7')).to.be.false;
342
-
343
- // expect(dateFormatTester('2018117')).to.be.false; // matching for ordinal dates
344
- expect(dateFormatTester('20181217')).to.be.true;
345
- expect(dateFormatTester('20181317')).to.be.false;
346
- expect(dateFormatTester('20181232')).to.be.false;
347
-
348
- expect(dateFormatTester('2018-1')).to.be.false;
349
- expect(dateFormatTester('2018-12')).to.be.true;
350
- expect(dateFormatTester('2018-13')).to.be.false;
351
-
352
- expect(dateFormatTester('--1-17')).to.be.false;
353
- expect(dateFormatTester('--12-1')).to.be.false;
354
- expect(dateFormatTester('--12-17')).to.be.true;
355
- expect(dateFormatTester('--13-17')).to.be.false;
356
- expect(dateFormatTester('--12-32')).to.be.false;
357
-
358
- expect(dateFormatTester('--117')).to.be.false;
359
- expect(dateFormatTester('--1317')).to.be.false;
360
- expect(dateFormatTester('--1232')).to.be.false;
361
- expect(dateFormatTester('--1217')).to.be.true;
362
-
363
- // week dates
364
- expect(dateFormatTester('2018-W01')).to.be.true;
365
- expect(dateFormatTester('2018-W53')).to.be.true;
366
-
367
- expect(dateFormatTester('2018-W00')).to.be.false;
368
- expect(dateFormatTester('2018-W54')).to.be.false;
369
-
370
- expect(dateFormatTester('2018-W01-3')).to.be.true;
371
- expect(dateFormatTester('2018-W53-7')).to.be.true;
372
-
373
- expect(dateFormatTester('2018-W01-0')).to.be.false;
374
- expect(dateFormatTester('2018-W53-8')).to.be.false;
375
-
376
- expect(dateFormatTester('2018W01')).to.be.true;
377
- expect(dateFormatTester('2018W53')).to.be.true;
378
-
379
- expect(dateFormatTester('2018W00')).to.be.false;
380
- expect(dateFormatTester('2018W54')).to.be.false;
381
-
382
- expect(dateFormatTester('2018W010')).to.be.false;
383
- expect(dateFormatTester('2018W538')).to.be.false;
384
-
385
- // ordinal dates
386
- expect(dateFormatTester('2018-052')).to.be.true;
387
-
388
- expect(dateFormatTester('2018-000')).to.be.false;
389
- expect(dateFormatTester('2018-367')).to.be.false;
390
-
391
- expect(dateFormatTester('2018052')).to.be.true;
392
-
393
- expect(dateFormatTester('2018000')).to.be.false;
394
- expect(dateFormatTester('2018367')).to.be.false;
395
- });
396
- });
397
-
398
- describe('timeFormatTester()', () => {
399
- it('logic test', () => {
400
- // hh:mm:ss.sss, hh:mm:ss
401
- expect(timeFormatTester('23:35:12.123')).to.be.true;
402
- expect(timeFormatTester('24:00:00')).to.be.true;
403
- expect(timeFormatTester('24:00:00.000')).to.be.true;
404
-
405
- expect(timeFormatTester('3:35:12.123')).to.be.false;
406
- expect(timeFormatTester('24:35:12.123')).to.be.false;
407
- expect(timeFormatTester('25:35:12.123')).to.be.false;
408
-
409
- expect(timeFormatTester('23:0:12.123')).to.be.false;
410
- expect(timeFormatTester('23:60:12.123')).to.be.false;
411
-
412
- expect(timeFormatTester('23:35:2.123')).to.be.false;
413
- expect(timeFormatTester('23:35:60.123')).to.be.true; // leap second
414
- expect(timeFormatTester('23:35:61.123')).to.be.false;
415
-
416
- expect(timeFormatTester('23:35:12')).to.be.true;
417
- expect(timeFormatTester('23:35:12.1')).to.be.true;
418
- expect(timeFormatTester('23:35:12.12')).to.be.true;
419
- expect(timeFormatTester('23:35:12.123')).to.be.true;
420
- expect(timeFormatTester('23:35:12.1234')).to.be.true;
421
- expect(timeFormatTester('23:35:12.12356789')).to.be.true;
422
-
423
- // hh:mm
424
- expect(timeFormatTester('23:52')).to.be.true;
425
- expect(timeFormatTester('24:00')).to.be.true;
426
-
427
- expect(timeFormatTester('2:52')).to.be.false;
428
- expect(timeFormatTester('24:52')).to.be.false;
429
-
430
- expect(timeFormatTester('23:2')).to.be.false;
431
- expect(timeFormatTester('23:60')).to.be.false;
432
-
433
- // hhmmss.sss, hhmmss
434
- expect(timeFormatTester('233512.123')).to.be.true;
435
- expect(timeFormatTester('240000')).to.be.true;
436
- expect(timeFormatTester('240000.000')).to.be.true;
437
-
438
- expect(timeFormatTester('33512.123')).to.be.false;
439
- expect(timeFormatTester('243512.123')).to.be.false;
440
- expect(timeFormatTester('253512.123')).to.be.false;
441
-
442
- expect(timeFormatTester('23012.123')).to.be.false;
443
- expect(timeFormatTester('236012.123')).to.be.false;
444
-
445
- expect(timeFormatTester('23352.123')).to.be.false;
446
- expect(timeFormatTester('233560.123')).to.be.true; // leap second
447
- expect(timeFormatTester('233561.123')).to.be.false;
448
-
449
- expect(timeFormatTester('233512')).to.be.true;
450
- expect(timeFormatTester('233512.1')).to.be.true;
451
- expect(timeFormatTester('233512.12')).to.be.true;
452
- expect(timeFormatTester('233512.123')).to.be.true;
453
- expect(timeFormatTester('233512.1234')).to.be.true;
454
- expect(timeFormatTester('233512.12356789')).to.be.true;
455
-
456
- // hhmm
457
- expect(timeFormatTester('2352')).to.be.true;
458
- expect(timeFormatTester('2400')).to.be.true;
459
-
460
- expect(timeFormatTester('252')).to.be.false;
461
- expect(timeFormatTester('2452')).to.be.false;
462
-
463
- expect(timeFormatTester('2360')).to.be.false;
464
-
465
- // hh
466
- expect(timeFormatTester('00')).to.be.true;
467
- expect(timeFormatTester('05')).to.be.true;
468
- expect(timeFormatTester('24')).to.be.true;
469
-
470
- expect(timeFormatTester('25')).to.be.false;
471
- });
472
- });
473
-
474
- describe('dateTimeFormatTester()', () => {
475
- it('logic test', () => {
476
- // RFC 3339
477
- expect(dateTimeFormatTester('2018-12-16T05:04:05')).to.be.true;
478
- expect(dateTimeFormatTester('2018-12-16T05:04:05.51')).to.be.true;
479
- expect(dateTimeFormatTester('2018-12-16T05:04:05.51Z')).to.be.true;
480
- expect(dateTimeFormatTester('2018-12-16T05:04:05+09:00')).to.be.true;
481
-
482
- expect(dateTimeFormatTester('2018-12-16T03:34:21')).to.be.true;
483
- expect(dateTimeFormatTester('2018-12-16T03:34:21Z')).to.be.true;
484
- expect(dateTimeFormatTester('2018-12-16T03:34:21.000')).to.be.true;
485
- expect(dateTimeFormatTester('2018-12-16T03:34:21.000Z')).to.be.true;
486
- expect(dateTimeFormatTester('2018-12-16T03:34:21.000+09:00')).to.be.true;
487
- expect(dateTimeFormatTester('2018-12-16T03:34:21.000-08:00')).to.be.true;
488
-
489
- expect(dateTimeFormatTester('2018-00-16T03:34:21')).to.be.false;
490
- expect(dateTimeFormatTester('2018-13-16T03:34:21')).to.be.false;
491
- expect(dateTimeFormatTester('2018-1-16T03:34:21')).to.be.false;
492
- expect(dateTimeFormatTester('2018-12-6T03:34:21')).to.be.false;
493
- expect(dateTimeFormatTester('2018-12-32T03:34:21')).to.be.false;
494
- expect(dateTimeFormatTester('2018-12-16T0:34:21')).to.be.false;
495
- expect(dateTimeFormatTester('2018-12-16T24:34:21')).to.be.false;
496
- expect(dateTimeFormatTester('2018-12-16T03:4:21')).to.be.false;
497
- expect(dateTimeFormatTester('2018-12-16T03:60:21')).to.be.false;
498
- expect(dateTimeFormatTester('2018-12-16T03:34:1')).to.be.false;
499
- expect(dateTimeFormatTester('2018-12-16T03:34:60')).to.be.false;
500
- expect(dateTimeFormatTester('2018-12-16T03:34:21.')).to.be.false;
501
-
502
- // // leap second inserted
503
- // expect(dateTimeFormatTester('1990-12-31T23:59:60Z')).to.be.true;
504
- // expect(dateTimeFormatTester('1990-12-31T15:59:60-08:00')).to.be.true;
505
-
506
- // ISO 8601
507
- expect(dateTimeFormatTester('20181219T00:38:05Z')).to.be.true;
508
- expect(dateTimeFormatTester('20181219T00:38:05+00:00')).to.be.true;
509
- });
510
- });
511
- });
512
-
513
- // describe('urlTester()', () => {
514
- // it('common test', () => {
515
- // expect(commonTestRunner(
516
- // urlTester,
517
- // false,
518
- // false,
519
- // false,
520
- // false,
521
- // false,
522
- // false,
523
- // false
524
- // )).to.be.true;
525
- // });
526
- //
527
- // it('logic test', () => {
528
- // expect(urlTester('')).to.be.false;
529
- // expect(urlTester(' ')).to.be.false;
530
- // expect(urlTester('hello')).to.be.false;
531
- // expect(urlTester('http://hello')).to.be.false;
532
- // expect(urlTester('https://hello')).to.be.false;
533
- // expect(urlTester('http://hello.com')).to.be.true;
534
- // expect(urlTester('http://hello.com/')).to.be.true;
535
- // expect(urlTester('http://hello.com/#1')).to.be.true;
536
- // expect(urlTester('http://hello.com/child')).to.be.true;
537
- // expect(urlTester('http://hello.com/child/grand')).to.be.true;
538
- // expect(urlTester('http://hello.com/child/grand?query=some')).to.be.true;
539
- // expect(urlTester('http://hello.com/child/grand(some:angular)')).to.be.true;
540
- // });
541
- // });
542
- //
543
- // describe('ipv4Tester()', () => {
544
- // it('common test', () => {
545
- // expect(commonTestRunner(
546
- // ipv4Tester,
547
- // false,
548
- // false,
549
- // false,
550
- // false,
551
- // false,
552
- // false,
553
- // false
554
- // )).to.be.true;
555
- // });
556
- //
557
- // it('logic test', () => {
558
- // expect(ipv4Tester('')).to.be.false;
559
- // expect(ipv4Tester(' ')).to.be.false;
560
- // expect(ipv4Tester('127.0.0')).to.be.false;
561
- // expect(ipv4Tester('127.0.0.1')).to.be.true;
562
- // expect(ipv4Tester('256.0.0.1')).to.be.false;
563
- // expect(ipv4Tester('255.-1.0.1')).to.be.false;
564
- // expect(ipv4Tester('255.256.267.1')).to.be.false;
565
- // expect(ipv4Tester('255.255.255.0')).to.be.true;
566
- // expect(ipv4Tester('255.255.255.0.5')).to.be.false;
567
- // });
568
- // });
569
- //
570
- // describe('ipv6Tester()', () => {
571
- // it('common test', () => {
572
- // expect(commonTestRunner(
573
- // ipv6Tester,
574
- // false,
575
- // false,
576
- // false,
577
- // false,
578
- // false,
579
- // false,
580
- // false
581
- // )).to.be.true;
582
- // });
583
- //
584
- // it('logic test', () => {
585
- // expect(ipv6Tester('')).to.be.false;
586
- // expect(ipv6Tester(' ')).to.be.false;
587
- // expect(ipv6Tester('127.0.0')).to.be.false;
588
- // // expect(ipv6Tester('1762:0:0:0:0:B03:1:AF18')).to.be.true;
589
- // // expect(ipv6Tester('fe80:0000:0000:0000:0204:61ff:fe9d:f156/1')).to.be.true;
590
- // expect(ipv6Tester('1200:0000:AB00:1234:O000:2552:7777:1313')).to.be.false; // has invalid character
591
- // });
592
- // });
593
-
594
- describe('object', () => {
595
- describe('objectTester()', () => {
596
- it('common test', () => {
597
- expect(commonTestRunner(
598
- objectTester,
599
- true, // null is object
600
- false,
601
- false,
602
- false,
603
- false,
604
- true, // array is object
605
- true
606
- )).to.be.true;
607
- });
608
-
609
- it('logic test', () => {
610
- expect(objectTester(null)).to.be.true;
611
- expect(objectTester({})).to.be.true;
612
- expect(objectTester({ a : 1 })).to.be.true;
613
- });
614
- });
615
-
616
- describe('hasPropertyTester()', () => {
617
- it('logic test', () => {
618
- expect(hasPropertyTester({})).to.be.false;
619
- expect(hasPropertyTester({ a : 1 })).to.be.true;
620
- });
621
- });
622
- });
623
-
624
- describe('date', () => {
625
- const now : Date = new Date();
626
-
627
- const year : number = now.getFullYear();
628
- const month : number = now.getMonth();
629
- const date : number = now.getDate();
630
-
631
- const hours : number = now.getHours();
632
- const minutes : number = now.getMinutes();
633
- const seconds : number = now.getSeconds();
634
- const ms : number = now.getMilliseconds();
635
-
636
- describe('dateTester()', () => {
637
- it('common test', () => {
638
- expect(commonTestRunner(
639
- dateTester,
640
- false,
641
- false,
642
- false,
643
- false,
644
- false,
645
- false,
646
- false
647
- )).to.be.true;
648
- });
649
-
650
- it('logic test', () => {
651
- expect(dateTester(new Date)).to.be.true;
652
- expect(dateTester((new Date).toISOString())).to.be.false;
653
- });
654
- });
655
-
656
- it('minDateTester()', () => {
657
- expect(minDateTester(
658
- new Date(year, month, date),
659
- new Date(year, month, date - 1)
660
- )).to.be.true;
661
- expect(minDateTester(
662
- new Date(year, month, date),
663
- new Date(year, month, date)
664
- )).to.be.true;
665
- expect(minDateTester(
666
- new Date(year, month, date),
667
- new Date(year, month, date + 1)
668
- )).to.be.false;
669
-
670
- expect(minDateTester(
671
- new Date(year, month, date, hours, minutes, seconds, ms),
672
- new Date(year, month, date, hours, minutes, seconds, ms - 1)
673
- )).to.be.true;
674
- expect(minDateTester(
675
- new Date(year, month, date, hours, minutes, seconds, ms),
676
- new Date(year, month, date, hours, minutes, seconds, ms)
677
- )).to.be.true;
678
- expect(minDateTester(
679
- new Date(year, month, date, hours, minutes, seconds, ms),
680
- new Date(year, month, date, hours, minutes, seconds, ms + 1)
681
- )).to.be.false;
682
- });
683
-
684
- it('exclusiveMinDateTester()', () => {
685
- expect(exclusiveMinDateTester(
686
- new Date(year, month, date),
687
- new Date(year, month, date - 1)
688
- )).to.be.true;
689
- expect(exclusiveMinDateTester(
690
- new Date(year, month, date),
691
- new Date(year, month, date)
692
- )).to.be.false;
693
- expect(exclusiveMinDateTester(
694
- new Date(year, month, date),
695
- new Date(year, month, date + 1)
696
- )).to.be.false;
697
-
698
- expect(exclusiveMinDateTester(
699
- new Date(year, month, date, hours, minutes, seconds, ms),
700
- new Date(year, month, date, hours, minutes, seconds, ms - 1)
701
- )).to.be.true;
702
- expect(exclusiveMinDateTester(
703
- new Date(year, month, date, hours, minutes, seconds, ms),
704
- new Date(year, month, date, hours, minutes, seconds, ms)
705
- )).to.be.false;
706
- expect(exclusiveMinDateTester(
707
- new Date(year, month, date, hours, minutes, seconds, ms),
708
- new Date(year, month, date, hours, minutes, seconds, ms + 1)
709
- )).to.be.false;
710
- });
711
-
712
- it('maxDateTester()', () => {
713
- expect(maxDateTester(
714
- new Date(year, month, date),
715
- new Date(year, month, date - 1)
716
- )).to.be.false;
717
- expect(maxDateTester(
718
- new Date(year, month, date),
719
- new Date(year, month, date)
720
- )).to.be.true;
721
- expect(maxDateTester(
722
- new Date(year, month, date),
723
- new Date(year, month, date + 1)
724
- )).to.be.true;
725
-
726
- expect(maxDateTester(
727
- new Date(year, month, date, hours, minutes, seconds, ms),
728
- new Date(year, month, date, hours, minutes, seconds, ms - 1)
729
- )).to.be.false;
730
- expect(maxDateTester(
731
- new Date(year, month, date, hours, minutes, seconds, ms),
732
- new Date(year, month, date, hours, minutes, seconds, ms)
733
- )).to.be.true;
734
- expect(maxDateTester(
735
- new Date(year, month, date, hours, minutes, seconds, ms),
736
- new Date(year, month, date, hours, minutes, seconds, ms + 1)
737
- )).to.be.true;
738
- });
739
-
740
- it('exclusiveMaxDateTester()', () => {
741
- expect(exclusiveMaxDateTester(
742
- new Date(year, month, date),
743
- new Date(year, month, date - 1)
744
- )).to.be.false;
745
- expect(exclusiveMaxDateTester(
746
- new Date(year, month, date),
747
- new Date(year, month, date)
748
- )).to.be.false;
749
- expect(exclusiveMaxDateTester(
750
- new Date(year, month, date),
751
- new Date(year, month, date + 1)
752
- )).to.be.true;
753
-
754
- expect(exclusiveMaxDateTester(
755
- new Date(year, month, date, hours, minutes, seconds, ms),
756
- new Date(year, month, date, hours, minutes, seconds, ms - 1)
757
- )).to.be.false;
758
- expect(exclusiveMaxDateTester(
759
- new Date(year, month, date, hours, minutes, seconds, ms),
760
- new Date(year, month, date, hours, minutes, seconds, ms)
761
- )).to.be.false;
762
- expect(exclusiveMaxDateTester(
763
- new Date(year, month, date, hours, minutes, seconds, ms),
764
- new Date(year, month, date, hours, minutes, seconds, ms + 1)
765
- )).to.be.true;
766
- });
767
- });
768
-
769
- describe('array', () => {
770
- describe('arrayTester()', () => {
771
- it('common test', () => {
772
- expect(commonTestRunner(
773
- arrayTester,
774
- false,
775
- false,
776
- false,
777
- false,
778
- false,
779
- true,
780
- false
781
- )).to.be.true;
782
- });
783
-
784
- it('logic test', () => {
785
- expect(arrayTester([])).to.be.true;
786
- expect(arrayTester('not_array')).to.be.false;
787
- });
788
- });
789
-
790
- describe('arrayTypeOfTester()', () => {
791
- it('logic test', () => {
792
- expect(arrayTypeOfTester([], DataType.NUMBER)).to.be.true;
793
- expect(arrayTypeOfTester([1, 2], DataType.NUMBER)).to.be.true;
794
- expect(arrayTypeOfTester([1, 2, '3'], DataType.NUMBER)).to.be.false;
795
-
796
- expect(arrayTypeOfTester([new Date, new Date, new Date], DataType.DATE)).to.be.true;
797
- });
798
- });
799
-
800
- describe('uniqueItemsTester()', () => {
801
- it('logic test', () => {
802
- expect(uniqueItemsTester([])).to.be.true;
803
- expect(uniqueItemsTester([1, 2])).to.be.true;
804
- expect(uniqueItemsTester([1, 2, 2])).to.be.false;
805
- });
806
- });
807
- });
808
-
809
- describe('regexp', () => {
810
- describe('regExpTester()', () => {
811
- it('common test', () => {
812
- expect(commonTestRunner(
813
- regExpTester,
814
- false,
815
- false,
816
- false,
817
- false,
818
- false,
819
- false,
820
- false
821
- )).to.be.true;
822
- });
823
-
824
- it('logic test', () => {
825
- expect(regExpTester(/\d/)).to.be.true;
826
- expect(regExpTester(new RegExp('\d'))).to.be.true;
827
-
828
- expect(regExpTester('\d')).to.be.false;
829
- });
830
- });
831
- });
832
- });
1
+ import { expect } from 'chai';
2
+
3
+ import { commonTestRunner } from './common-test-runner';
4
+
5
+ import {
6
+ arrayTester,
7
+ arrayTypeOfTester,
8
+ booleanTester,
9
+ dateFormatTester,
10
+ dateTester,
11
+ dateTimeFormatTester,
12
+ definedTester,
13
+ emailTester,
14
+ enumTester,
15
+ exclusiveMaxDateTester,
16
+ exclusiveMaxNumberTester,
17
+ exclusiveMinDateTester,
18
+ exclusiveMinNumberTester,
19
+ hasPropertyTester,
20
+ indexTester,
21
+ integerTester,
22
+ lengthTester,
23
+ maxDateTester,
24
+ maxLengthTester,
25
+ maxNumberTester,
26
+ minDateTester,
27
+ minLengthTester,
28
+ minNumberTester,
29
+ numberTester,
30
+ objectTester,
31
+ regExpTester,
32
+ stringRegExpTester,
33
+ stringTester,
34
+ timeFormatTester,
35
+ uniqueItemsTester
36
+ } from '../src/tester';
37
+ import { DataType } from '../src/constants';
38
+
39
+ describe('testers', function () {
40
+ describe('common', () => {
41
+ describe('definedTester()', () => {
42
+ it('common test', () => {
43
+ expect(commonTestRunner(
44
+ definedTester,
45
+ true,
46
+ false,
47
+ true,
48
+ true,
49
+ true,
50
+ true,
51
+ true
52
+ )).to.be.true;
53
+ });
54
+ });
55
+
56
+ describe('enumTester()', () => {
57
+ it('logic test', () => {
58
+ expect(enumTester('a', ['a', 'b', 'c'])).to.be.true;
59
+ expect(enumTester('a', ['b', 'c'])).to.be.false;
60
+
61
+ expect(enumTester(1, [1, 2, 3])).to.be.true;
62
+ expect(enumTester(1, [2, 3])).to.be.false;
63
+ });
64
+ });
65
+
66
+ describe('lengthTester()', () => {
67
+ it('logic test', () => {
68
+ expect(lengthTester('abcd', 3)).to.be.false;
69
+ expect(lengthTester('abcd', 4)).to.be.true;
70
+ expect(lengthTester('abcd', 5)).to.be.false;
71
+
72
+ expect(lengthTester([1, 2, 3, 4], 3)).to.be.false;
73
+ expect(lengthTester([1, 2, 3, 4], 4)).to.be.true;
74
+ expect(lengthTester([1, 2, 3, 4], 5)).to.be.false;
75
+ });
76
+ });
77
+
78
+ describe('minLengthTester()', () => {
79
+ it('logic test', () => {
80
+ expect(minLengthTester('abcd', 3)).to.be.true;
81
+ expect(minLengthTester('abcd', 4)).to.be.true;
82
+ expect(minLengthTester('abcd', 5)).to.be.false;
83
+
84
+ expect(minLengthTester([1, 2, 3, 4], 3)).to.be.true;
85
+ expect(minLengthTester([1, 2, 3, 4], 4)).to.be.true;
86
+ expect(minLengthTester([1, 2, 3, 4], 5)).to.be.false;
87
+ });
88
+ });
89
+
90
+ describe('maxLengthTester()', () => {
91
+ it('logic test', () => {
92
+ expect(maxLengthTester('abcd', 3)).to.be.false;
93
+ expect(maxLengthTester('abcd', 4)).to.be.true;
94
+ expect(maxLengthTester('abcd', 5)).to.be.true;
95
+
96
+ expect(maxLengthTester([1, 2, 3, 4], 3)).to.be.false;
97
+ expect(maxLengthTester([1, 2, 3, 4], 4)).to.be.true;
98
+ expect(maxLengthTester([1, 2, 3, 4], 5)).to.be.true;
99
+ });
100
+ });
101
+ });
102
+
103
+ describe('boolean', () => {
104
+ describe('booleanTester()', () => {
105
+ it('common test', () => {
106
+ expect(commonTestRunner(
107
+ booleanTester,
108
+ false,
109
+ false,
110
+ true,
111
+ false,
112
+ false,
113
+ false,
114
+ false
115
+ )).to.be.true;
116
+ });
117
+
118
+ it('logic test', () => {
119
+ expect(booleanTester(true)).to.be.true;
120
+ expect(booleanTester(false)).to.be.true;
121
+
122
+ expect(booleanTester('true')).to.be.false;
123
+ expect(booleanTester('false')).to.be.false;
124
+
125
+ expect(booleanTester(1)).to.be.false;
126
+ expect(booleanTester(0)).to.be.false;
127
+ });
128
+ });
129
+ });
130
+
131
+ describe('number', () => {
132
+ describe('numberTester()', () => {
133
+ it('common test', () => {
134
+ expect(commonTestRunner(
135
+ numberTester,
136
+ false,
137
+ false,
138
+ false,
139
+ true,
140
+ false,
141
+ false,
142
+ false
143
+ )).to.be.true;
144
+ });
145
+
146
+ it('logic test', () => {
147
+ expect(numberTester(true)).to.be.false;
148
+ expect(numberTester(null)).to.be.false;
149
+
150
+ expect(numberTester(-10.6)).to.be.true;
151
+ expect(numberTester(-1)).to.be.true;
152
+ expect(numberTester(0)).to.be.true;
153
+ expect(numberTester(5)).to.be.true;
154
+ expect(numberTester(5.5)).to.be.true;
155
+
156
+ expect(numberTester('8')).to.be.false;
157
+ expect(numberTester('8.5')).to.be.false;
158
+
159
+ expect(numberTester(NaN)).to.be.false;
160
+ });
161
+ });
162
+
163
+ describe('integerTester()', () => {
164
+ it('logic test', () => {
165
+ expect(integerTester(-10.6)).to.be.false;
166
+ expect(integerTester(-1)).to.be.true;
167
+ expect(integerTester(0)).to.be.true;
168
+ expect(integerTester(5)).to.be.true;
169
+ expect(integerTester(5.5)).to.be.false;
170
+ });
171
+ });
172
+
173
+ describe('indexTester()', () => {
174
+ it('logic test', () => {
175
+ expect(indexTester(-10.6)).to.be.false;
176
+ expect(indexTester(-1)).to.be.false;
177
+ expect(indexTester(0)).to.be.true;
178
+ expect(indexTester(5)).to.be.true;
179
+ expect(indexTester(5.5)).to.be.false;
180
+ });
181
+ });
182
+
183
+ describe('minNumberTester()', () => {
184
+ it('logic test', () => {
185
+ expect(minNumberTester(-11, -12)).to.be.true;
186
+ expect(minNumberTester(-11, -11)).to.be.true;
187
+ expect(minNumberTester(-11, -10)).to.be.false;
188
+
189
+ expect(minNumberTester(0, -1)).to.be.true;
190
+ expect(minNumberTester(0, 0)).to.be.true;
191
+ expect(minNumberTester(0, 1)).to.be.false;
192
+
193
+ expect(minNumberTester(50, 49.9)).to.be.true;
194
+ expect(minNumberTester(50, 50)).to.be.true;
195
+ expect(minNumberTester(50, 50.1)).to.be.false;
196
+ });
197
+ });
198
+
199
+ describe('exclusiveMinNumberTester()', () => {
200
+ it('logic test', () => {
201
+ expect(exclusiveMinNumberTester(-11, -12)).to.be.true;
202
+ expect(exclusiveMinNumberTester(-11, -11)).to.be.false;
203
+ expect(exclusiveMinNumberTester(-11, -10)).to.be.false;
204
+
205
+ expect(exclusiveMinNumberTester(0, -1)).to.be.true;
206
+ expect(exclusiveMinNumberTester(0, 0)).to.be.false;
207
+ expect(exclusiveMinNumberTester(0, 1)).to.be.false;
208
+
209
+ expect(exclusiveMinNumberTester(50, 49.9)).to.be.true;
210
+ expect(exclusiveMinNumberTester(50, 50)).to.be.false;
211
+ expect(exclusiveMinNumberTester(50, 50.1)).to.be.false;
212
+ });
213
+ });
214
+
215
+ describe('maxNumberTester()', () => {
216
+ it('logic test', () => {
217
+ expect(maxNumberTester(-11, -12)).to.be.false;
218
+ expect(maxNumberTester(-11, -11)).to.be.true;
219
+ expect(maxNumberTester(-11, -10)).to.be.true;
220
+
221
+ expect(maxNumberTester(0, -1)).to.be.false;
222
+ expect(maxNumberTester(0, 0)).to.be.true;
223
+ expect(maxNumberTester(0, 1)).to.be.true;
224
+
225
+ expect(maxNumberTester(50, 49.9)).to.be.false;
226
+ expect(maxNumberTester(50, 50)).to.be.true;
227
+ expect(maxNumberTester(50, 50.1)).to.be.true;
228
+ });
229
+ });
230
+
231
+ describe('exclusiveMaxNumberTester()', () => {
232
+ it('logic test', () => {
233
+ expect(exclusiveMaxNumberTester(-11, -12)).to.be.false;
234
+ expect(exclusiveMaxNumberTester(-11, -11)).to.be.false;
235
+ expect(exclusiveMaxNumberTester(-11, -10)).to.be.true;
236
+
237
+ expect(exclusiveMaxNumberTester(0, -1)).to.be.false;
238
+ expect(exclusiveMaxNumberTester(0, 0)).to.be.false;
239
+ expect(exclusiveMaxNumberTester(0, 1)).to.be.true;
240
+
241
+ expect(exclusiveMaxNumberTester(50, 49.9)).to.be.false;
242
+ expect(exclusiveMaxNumberTester(50, 50)).to.be.false;
243
+ expect(exclusiveMaxNumberTester(50, 50.1)).to.be.true;
244
+ });
245
+ });
246
+ });
247
+
248
+ describe('string', () => {
249
+ describe('stringTester()', () => {
250
+ it('common test', () => {
251
+ expect(commonTestRunner(
252
+ stringTester,
253
+ false,
254
+ false,
255
+ false,
256
+ false,
257
+ true,
258
+ false,
259
+ false
260
+ )).to.be.true;
261
+ });
262
+
263
+ it('logic test', () => {
264
+ expect(stringTester('')).to.be.true;
265
+ expect(stringTester(' ')).to.be.true;
266
+ expect(stringTester('hello')).to.be.true;
267
+ });
268
+ });
269
+
270
+ describe('stringRegExpTester()', () => {
271
+ it('logic test', () => {
272
+ expect(stringRegExpTester('abc', /abc/)).to.be.true;
273
+ expect(stringRegExpTester('abc', /abcd/)).to.be.false;
274
+
275
+ expect(stringRegExpTester('abc', new RegExp('abc'))).to.be.true;
276
+ expect(stringRegExpTester('abc', new RegExp('abcd'))).to.be.false;
277
+ });
278
+ });
279
+
280
+ describe('emailTester()', () => {
281
+ it('logic test', () => {
282
+ expect(emailTester('')).to.be.false;
283
+ expect(emailTester(' ')).to.be.false;
284
+ expect(emailTester('hello')).to.be.false;
285
+ expect(emailTester('hello@')).to.be.false;
286
+ expect(emailTester('hello@domain')).to.be.true;
287
+ expect(emailTester('hello@domain.')).to.be.false;
288
+ expect(emailTester('hello@domain.com')).to.be.true;
289
+ expect(emailTester('hello@domain.com.')).to.be.false;
290
+ expect(emailTester('hello@domain.com.another')).to.be.true;
291
+
292
+ expect(emailTester('prettyandsimple@example.com')).to.be.true;
293
+ expect(emailTester('very.common@example.com')).to.be.true;
294
+ expect(emailTester('disposable.style.email.with+symbol@example.com')).to.be.true;
295
+ expect(emailTester('other.email-with-dash@example.com')).to.be.true;
296
+ expect(emailTester('x@example.com')).to.be.true;
297
+ expect(emailTester('"much.more unusual"@example.com')).to.be.true;
298
+ expect(emailTester('"very.unusual.@.unusual.com"@example.com')).to.be.true;
299
+ expect(emailTester('example-indeed@strange-example.com')).to.be.true;
300
+ expect(emailTester('admin@mailserver1')).to.be.true;
301
+ expect(emailTester('#!$%&\'*+-/=?^_`{}|~@example.org')).to.be.true;
302
+ expect(emailTester('"()<>[]:,;@\\\\\\"!#$%&\'-/=?^_`{}| ~.a"@example.org')).to.be.true;
303
+ expect(emailTester('" "@example.org')).to.be.true;
304
+ expect(emailTester('example@localhost')).to.be.true;
305
+ expect(emailTester('example@s.solutions')).to.be.true;
306
+ expect(emailTester('user@localserver')).to.be.true;
307
+ expect(emailTester('user@tt')).to.be.true;
308
+ expect(emailTester('user@[IPv6:2001:DB8::1]')).to.be.true;
309
+
310
+ expect(emailTester('Abc.example.com')).to.be.false;
311
+ expect(emailTester('A@b@c@example.com')).to.be.false;
312
+ expect(emailTester('"A@b@c"@example.com')).to.be.true;
313
+
314
+ expect(emailTester('a"b(c)d,e:f;g<h>i[j\\k]l@example.com')).to.be.false;
315
+ expect(emailTester('just"not"right@example.com')).to.be.false;
316
+ expect(emailTester('this is"not\allowed@example.com')).to.be.false;
317
+ expect(emailTester('this\ still\"not\\allowed@example.com')).to.be.false;
318
+ expect(emailTester('1234567890123456789012345678901234567890123456789012345678901234+x@example.com')).to.be.false;
319
+ expect(emailTester('john..doe@example.com')).to.be.false;
320
+ expect(emailTester('john.doe@example..com')).to.be.false;
321
+
322
+ expect(emailTester(' ejv@ejv.com')).to.be.false;
323
+ expect(emailTester('ejv@ejv.com ')).to.be.false;
324
+ });
325
+ });
326
+
327
+ describe('dateFormatTester()', () => {
328
+ it('logic test', () => {
329
+ //// ISO 8601
330
+ // year
331
+ expect(dateFormatTester('100')).to.be.false;
332
+ expect(dateFormatTester('1000')).to.be.true;
333
+ expect(dateFormatTester('+2000')).to.be.true;
334
+ expect(dateFormatTester('-2000')).to.be.true;
335
+
336
+ // calendar date
337
+ expect(dateFormatTester('2018-1-17')).to.be.false;
338
+ expect(dateFormatTester('2018-12-32')).to.be.false;
339
+ expect(dateFormatTester('2018-12-17')).to.be.true;
340
+ expect(dateFormatTester('2018-13-17')).to.be.false;
341
+ expect(dateFormatTester('2018-12-7')).to.be.false;
342
+
343
+ // expect(dateFormatTester('2018117')).to.be.false; // matching for ordinal dates
344
+ expect(dateFormatTester('20181217')).to.be.true;
345
+ expect(dateFormatTester('20181317')).to.be.false;
346
+ expect(dateFormatTester('20181232')).to.be.false;
347
+
348
+ expect(dateFormatTester('2018-1')).to.be.false;
349
+ expect(dateFormatTester('2018-12')).to.be.true;
350
+ expect(dateFormatTester('2018-13')).to.be.false;
351
+
352
+ expect(dateFormatTester('--1-17')).to.be.false;
353
+ expect(dateFormatTester('--12-1')).to.be.false;
354
+ expect(dateFormatTester('--12-17')).to.be.true;
355
+ expect(dateFormatTester('--13-17')).to.be.false;
356
+ expect(dateFormatTester('--12-32')).to.be.false;
357
+
358
+ expect(dateFormatTester('--117')).to.be.false;
359
+ expect(dateFormatTester('--1317')).to.be.false;
360
+ expect(dateFormatTester('--1232')).to.be.false;
361
+ expect(dateFormatTester('--1217')).to.be.true;
362
+
363
+ // week dates
364
+ expect(dateFormatTester('2018-W01')).to.be.true;
365
+ expect(dateFormatTester('2018-W53')).to.be.true;
366
+
367
+ expect(dateFormatTester('2018-W00')).to.be.false;
368
+ expect(dateFormatTester('2018-W54')).to.be.false;
369
+
370
+ expect(dateFormatTester('2018-W01-3')).to.be.true;
371
+ expect(dateFormatTester('2018-W53-7')).to.be.true;
372
+
373
+ expect(dateFormatTester('2018-W01-0')).to.be.false;
374
+ expect(dateFormatTester('2018-W53-8')).to.be.false;
375
+
376
+ expect(dateFormatTester('2018W01')).to.be.true;
377
+ expect(dateFormatTester('2018W53')).to.be.true;
378
+
379
+ expect(dateFormatTester('2018W00')).to.be.false;
380
+ expect(dateFormatTester('2018W54')).to.be.false;
381
+
382
+ expect(dateFormatTester('2018W010')).to.be.false;
383
+ expect(dateFormatTester('2018W538')).to.be.false;
384
+
385
+ // ordinal dates
386
+ expect(dateFormatTester('2018-052')).to.be.true;
387
+
388
+ expect(dateFormatTester('2018-000')).to.be.false;
389
+ expect(dateFormatTester('2018-367')).to.be.false;
390
+
391
+ expect(dateFormatTester('2018052')).to.be.true;
392
+
393
+ expect(dateFormatTester('2018000')).to.be.false;
394
+ expect(dateFormatTester('2018367')).to.be.false;
395
+ });
396
+ });
397
+
398
+ describe('timeFormatTester()', () => {
399
+ it('logic test', () => {
400
+ // hh:mm:ss.sss, hh:mm:ss
401
+ expect(timeFormatTester('23:35:12.123')).to.be.true;
402
+ expect(timeFormatTester('24:00:00')).to.be.true;
403
+ expect(timeFormatTester('24:00:00.000')).to.be.true;
404
+
405
+ expect(timeFormatTester('3:35:12.123')).to.be.false;
406
+ expect(timeFormatTester('24:35:12.123')).to.be.false;
407
+ expect(timeFormatTester('25:35:12.123')).to.be.false;
408
+
409
+ expect(timeFormatTester('23:0:12.123')).to.be.false;
410
+ expect(timeFormatTester('23:60:12.123')).to.be.false;
411
+
412
+ expect(timeFormatTester('23:35:2.123')).to.be.false;
413
+ expect(timeFormatTester('23:35:60.123')).to.be.true; // leap second
414
+ expect(timeFormatTester('23:35:61.123')).to.be.false;
415
+
416
+ expect(timeFormatTester('23:35:12')).to.be.true;
417
+ expect(timeFormatTester('23:35:12.1')).to.be.true;
418
+ expect(timeFormatTester('23:35:12.12')).to.be.true;
419
+ expect(timeFormatTester('23:35:12.123')).to.be.true;
420
+ expect(timeFormatTester('23:35:12.1234')).to.be.true;
421
+ expect(timeFormatTester('23:35:12.12356789')).to.be.true;
422
+
423
+ // hh:mm
424
+ expect(timeFormatTester('23:52')).to.be.true;
425
+ expect(timeFormatTester('24:00')).to.be.true;
426
+
427
+ expect(timeFormatTester('2:52')).to.be.false;
428
+ expect(timeFormatTester('24:52')).to.be.false;
429
+
430
+ expect(timeFormatTester('23:2')).to.be.false;
431
+ expect(timeFormatTester('23:60')).to.be.false;
432
+
433
+ // hhmmss.sss, hhmmss
434
+ expect(timeFormatTester('233512.123')).to.be.true;
435
+ expect(timeFormatTester('240000')).to.be.true;
436
+ expect(timeFormatTester('240000.000')).to.be.true;
437
+
438
+ expect(timeFormatTester('33512.123')).to.be.false;
439
+ expect(timeFormatTester('243512.123')).to.be.false;
440
+ expect(timeFormatTester('253512.123')).to.be.false;
441
+
442
+ expect(timeFormatTester('23012.123')).to.be.false;
443
+ expect(timeFormatTester('236012.123')).to.be.false;
444
+
445
+ expect(timeFormatTester('23352.123')).to.be.false;
446
+ expect(timeFormatTester('233560.123')).to.be.true; // leap second
447
+ expect(timeFormatTester('233561.123')).to.be.false;
448
+
449
+ expect(timeFormatTester('233512')).to.be.true;
450
+ expect(timeFormatTester('233512.1')).to.be.true;
451
+ expect(timeFormatTester('233512.12')).to.be.true;
452
+ expect(timeFormatTester('233512.123')).to.be.true;
453
+ expect(timeFormatTester('233512.1234')).to.be.true;
454
+ expect(timeFormatTester('233512.12356789')).to.be.true;
455
+
456
+ // hhmm
457
+ expect(timeFormatTester('2352')).to.be.true;
458
+ expect(timeFormatTester('2400')).to.be.true;
459
+
460
+ expect(timeFormatTester('252')).to.be.false;
461
+ expect(timeFormatTester('2452')).to.be.false;
462
+
463
+ expect(timeFormatTester('2360')).to.be.false;
464
+
465
+ // hh
466
+ expect(timeFormatTester('00')).to.be.true;
467
+ expect(timeFormatTester('05')).to.be.true;
468
+ expect(timeFormatTester('24')).to.be.true;
469
+
470
+ expect(timeFormatTester('25')).to.be.false;
471
+ });
472
+ });
473
+
474
+ describe('dateTimeFormatTester()', () => {
475
+ it('logic test', () => {
476
+ // RFC 3339
477
+ expect(dateTimeFormatTester('2018-12-16T05:04:05')).to.be.true;
478
+ expect(dateTimeFormatTester('2018-12-16T05:04:05.51')).to.be.true;
479
+ expect(dateTimeFormatTester('2018-12-16T05:04:05.51Z')).to.be.true;
480
+ expect(dateTimeFormatTester('2018-12-16T05:04:05+09:00')).to.be.true;
481
+
482
+ expect(dateTimeFormatTester('2018-12-16T03:34:21')).to.be.true;
483
+ expect(dateTimeFormatTester('2018-12-16T03:34:21Z')).to.be.true;
484
+ expect(dateTimeFormatTester('2018-12-16T03:34:21.000')).to.be.true;
485
+ expect(dateTimeFormatTester('2018-12-16T03:34:21.000Z')).to.be.true;
486
+ expect(dateTimeFormatTester('2018-12-16T03:34:21.000+09:00')).to.be.true;
487
+ expect(dateTimeFormatTester('2018-12-16T03:34:21.000-08:00')).to.be.true;
488
+
489
+ expect(dateTimeFormatTester('2018-00-16T03:34:21')).to.be.false;
490
+ expect(dateTimeFormatTester('2018-13-16T03:34:21')).to.be.false;
491
+ expect(dateTimeFormatTester('2018-1-16T03:34:21')).to.be.false;
492
+ expect(dateTimeFormatTester('2018-12-6T03:34:21')).to.be.false;
493
+ expect(dateTimeFormatTester('2018-12-32T03:34:21')).to.be.false;
494
+ expect(dateTimeFormatTester('2018-12-16T0:34:21')).to.be.false;
495
+ expect(dateTimeFormatTester('2018-12-16T24:34:21')).to.be.false;
496
+ expect(dateTimeFormatTester('2018-12-16T03:4:21')).to.be.false;
497
+ expect(dateTimeFormatTester('2018-12-16T03:60:21')).to.be.false;
498
+ expect(dateTimeFormatTester('2018-12-16T03:34:1')).to.be.false;
499
+ expect(dateTimeFormatTester('2018-12-16T03:34:60')).to.be.false;
500
+ expect(dateTimeFormatTester('2018-12-16T03:34:21.')).to.be.false;
501
+
502
+ // // leap second inserted
503
+ // expect(dateTimeFormatTester('1990-12-31T23:59:60Z')).to.be.true;
504
+ // expect(dateTimeFormatTester('1990-12-31T15:59:60-08:00')).to.be.true;
505
+
506
+ // ISO 8601
507
+ expect(dateTimeFormatTester('20181219T00:38:05Z')).to.be.true;
508
+ expect(dateTimeFormatTester('20181219T00:38:05+00:00')).to.be.true;
509
+ });
510
+ });
511
+ });
512
+
513
+ // describe('urlTester()', () => {
514
+ // it('common test', () => {
515
+ // expect(commonTestRunner(
516
+ // urlTester,
517
+ // false,
518
+ // false,
519
+ // false,
520
+ // false,
521
+ // false,
522
+ // false,
523
+ // false
524
+ // )).to.be.true;
525
+ // });
526
+ //
527
+ // it('logic test', () => {
528
+ // expect(urlTester('')).to.be.false;
529
+ // expect(urlTester(' ')).to.be.false;
530
+ // expect(urlTester('hello')).to.be.false;
531
+ // expect(urlTester('http://hello')).to.be.false;
532
+ // expect(urlTester('https://hello')).to.be.false;
533
+ // expect(urlTester('http://hello.com')).to.be.true;
534
+ // expect(urlTester('http://hello.com/')).to.be.true;
535
+ // expect(urlTester('http://hello.com/#1')).to.be.true;
536
+ // expect(urlTester('http://hello.com/child')).to.be.true;
537
+ // expect(urlTester('http://hello.com/child/grand')).to.be.true;
538
+ // expect(urlTester('http://hello.com/child/grand?query=some')).to.be.true;
539
+ // expect(urlTester('http://hello.com/child/grand(some:angular)')).to.be.true;
540
+ // });
541
+ // });
542
+ //
543
+ // describe('ipv4Tester()', () => {
544
+ // it('common test', () => {
545
+ // expect(commonTestRunner(
546
+ // ipv4Tester,
547
+ // false,
548
+ // false,
549
+ // false,
550
+ // false,
551
+ // false,
552
+ // false,
553
+ // false
554
+ // )).to.be.true;
555
+ // });
556
+ //
557
+ // it('logic test', () => {
558
+ // expect(ipv4Tester('')).to.be.false;
559
+ // expect(ipv4Tester(' ')).to.be.false;
560
+ // expect(ipv4Tester('127.0.0')).to.be.false;
561
+ // expect(ipv4Tester('127.0.0.1')).to.be.true;
562
+ // expect(ipv4Tester('256.0.0.1')).to.be.false;
563
+ // expect(ipv4Tester('255.-1.0.1')).to.be.false;
564
+ // expect(ipv4Tester('255.256.267.1')).to.be.false;
565
+ // expect(ipv4Tester('255.255.255.0')).to.be.true;
566
+ // expect(ipv4Tester('255.255.255.0.5')).to.be.false;
567
+ // });
568
+ // });
569
+ //
570
+ // describe('ipv6Tester()', () => {
571
+ // it('common test', () => {
572
+ // expect(commonTestRunner(
573
+ // ipv6Tester,
574
+ // false,
575
+ // false,
576
+ // false,
577
+ // false,
578
+ // false,
579
+ // false,
580
+ // false
581
+ // )).to.be.true;
582
+ // });
583
+ //
584
+ // it('logic test', () => {
585
+ // expect(ipv6Tester('')).to.be.false;
586
+ // expect(ipv6Tester(' ')).to.be.false;
587
+ // expect(ipv6Tester('127.0.0')).to.be.false;
588
+ // // expect(ipv6Tester('1762:0:0:0:0:B03:1:AF18')).to.be.true;
589
+ // // expect(ipv6Tester('fe80:0000:0000:0000:0204:61ff:fe9d:f156/1')).to.be.true;
590
+ // expect(ipv6Tester('1200:0000:AB00:1234:O000:2552:7777:1313')).to.be.false; // has invalid character
591
+ // });
592
+ // });
593
+
594
+ describe('object', () => {
595
+ describe('objectTester()', () => {
596
+ it('common test', () => {
597
+ expect(commonTestRunner(
598
+ objectTester,
599
+ true, // null is object
600
+ false,
601
+ false,
602
+ false,
603
+ false,
604
+ true, // array is object
605
+ true
606
+ )).to.be.true;
607
+ });
608
+
609
+ it('logic test', () => {
610
+ expect(objectTester(null)).to.be.true;
611
+ expect(objectTester({})).to.be.true;
612
+ expect(objectTester({ a : 1 })).to.be.true;
613
+ });
614
+ });
615
+
616
+ describe('hasPropertyTester()', () => {
617
+ it('logic test', () => {
618
+ expect(hasPropertyTester({})).to.be.false;
619
+ expect(hasPropertyTester({ a : 1 })).to.be.true;
620
+ });
621
+ });
622
+ });
623
+
624
+ describe('date', () => {
625
+ const now : Date = new Date();
626
+
627
+ const year : number = now.getFullYear();
628
+ const month : number = now.getMonth();
629
+ const date : number = now.getDate();
630
+
631
+ const hours : number = now.getHours();
632
+ const minutes : number = now.getMinutes();
633
+ const seconds : number = now.getSeconds();
634
+ const ms : number = now.getMilliseconds();
635
+
636
+ describe('dateTester()', () => {
637
+ it('common test', () => {
638
+ expect(commonTestRunner(
639
+ dateTester,
640
+ false,
641
+ false,
642
+ false,
643
+ false,
644
+ false,
645
+ false,
646
+ false
647
+ )).to.be.true;
648
+ });
649
+
650
+ it('logic test', () => {
651
+ expect(dateTester(new Date)).to.be.true;
652
+ expect(dateTester((new Date).toISOString())).to.be.false;
653
+ });
654
+ });
655
+
656
+ it('minDateTester()', () => {
657
+ expect(minDateTester(
658
+ new Date(year, month, date),
659
+ new Date(year, month, date - 1)
660
+ )).to.be.true;
661
+ expect(minDateTester(
662
+ new Date(year, month, date),
663
+ new Date(year, month, date)
664
+ )).to.be.true;
665
+ expect(minDateTester(
666
+ new Date(year, month, date),
667
+ new Date(year, month, date + 1)
668
+ )).to.be.false;
669
+
670
+ expect(minDateTester(
671
+ new Date(year, month, date, hours, minutes, seconds, ms),
672
+ new Date(year, month, date, hours, minutes, seconds, ms - 1)
673
+ )).to.be.true;
674
+ expect(minDateTester(
675
+ new Date(year, month, date, hours, minutes, seconds, ms),
676
+ new Date(year, month, date, hours, minutes, seconds, ms)
677
+ )).to.be.true;
678
+ expect(minDateTester(
679
+ new Date(year, month, date, hours, minutes, seconds, ms),
680
+ new Date(year, month, date, hours, minutes, seconds, ms + 1)
681
+ )).to.be.false;
682
+ });
683
+
684
+ it('exclusiveMinDateTester()', () => {
685
+ expect(exclusiveMinDateTester(
686
+ new Date(year, month, date),
687
+ new Date(year, month, date - 1)
688
+ )).to.be.true;
689
+ expect(exclusiveMinDateTester(
690
+ new Date(year, month, date),
691
+ new Date(year, month, date)
692
+ )).to.be.false;
693
+ expect(exclusiveMinDateTester(
694
+ new Date(year, month, date),
695
+ new Date(year, month, date + 1)
696
+ )).to.be.false;
697
+
698
+ expect(exclusiveMinDateTester(
699
+ new Date(year, month, date, hours, minutes, seconds, ms),
700
+ new Date(year, month, date, hours, minutes, seconds, ms - 1)
701
+ )).to.be.true;
702
+ expect(exclusiveMinDateTester(
703
+ new Date(year, month, date, hours, minutes, seconds, ms),
704
+ new Date(year, month, date, hours, minutes, seconds, ms)
705
+ )).to.be.false;
706
+ expect(exclusiveMinDateTester(
707
+ new Date(year, month, date, hours, minutes, seconds, ms),
708
+ new Date(year, month, date, hours, minutes, seconds, ms + 1)
709
+ )).to.be.false;
710
+ });
711
+
712
+ it('maxDateTester()', () => {
713
+ expect(maxDateTester(
714
+ new Date(year, month, date),
715
+ new Date(year, month, date - 1)
716
+ )).to.be.false;
717
+ expect(maxDateTester(
718
+ new Date(year, month, date),
719
+ new Date(year, month, date)
720
+ )).to.be.true;
721
+ expect(maxDateTester(
722
+ new Date(year, month, date),
723
+ new Date(year, month, date + 1)
724
+ )).to.be.true;
725
+
726
+ expect(maxDateTester(
727
+ new Date(year, month, date, hours, minutes, seconds, ms),
728
+ new Date(year, month, date, hours, minutes, seconds, ms - 1)
729
+ )).to.be.false;
730
+ expect(maxDateTester(
731
+ new Date(year, month, date, hours, minutes, seconds, ms),
732
+ new Date(year, month, date, hours, minutes, seconds, ms)
733
+ )).to.be.true;
734
+ expect(maxDateTester(
735
+ new Date(year, month, date, hours, minutes, seconds, ms),
736
+ new Date(year, month, date, hours, minutes, seconds, ms + 1)
737
+ )).to.be.true;
738
+ });
739
+
740
+ it('exclusiveMaxDateTester()', () => {
741
+ expect(exclusiveMaxDateTester(
742
+ new Date(year, month, date),
743
+ new Date(year, month, date - 1)
744
+ )).to.be.false;
745
+ expect(exclusiveMaxDateTester(
746
+ new Date(year, month, date),
747
+ new Date(year, month, date)
748
+ )).to.be.false;
749
+ expect(exclusiveMaxDateTester(
750
+ new Date(year, month, date),
751
+ new Date(year, month, date + 1)
752
+ )).to.be.true;
753
+
754
+ expect(exclusiveMaxDateTester(
755
+ new Date(year, month, date, hours, minutes, seconds, ms),
756
+ new Date(year, month, date, hours, minutes, seconds, ms - 1)
757
+ )).to.be.false;
758
+ expect(exclusiveMaxDateTester(
759
+ new Date(year, month, date, hours, minutes, seconds, ms),
760
+ new Date(year, month, date, hours, minutes, seconds, ms)
761
+ )).to.be.false;
762
+ expect(exclusiveMaxDateTester(
763
+ new Date(year, month, date, hours, minutes, seconds, ms),
764
+ new Date(year, month, date, hours, minutes, seconds, ms + 1)
765
+ )).to.be.true;
766
+ });
767
+ });
768
+
769
+ describe('array', () => {
770
+ describe('arrayTester()', () => {
771
+ it('common test', () => {
772
+ expect(commonTestRunner(
773
+ arrayTester,
774
+ false,
775
+ false,
776
+ false,
777
+ false,
778
+ false,
779
+ true,
780
+ false
781
+ )).to.be.true;
782
+ });
783
+
784
+ it('logic test', () => {
785
+ expect(arrayTester([])).to.be.true;
786
+ expect(arrayTester('not_array')).to.be.false;
787
+ });
788
+ });
789
+
790
+ describe('arrayTypeOfTester()', () => {
791
+ it('logic test', () => {
792
+ expect(arrayTypeOfTester([], DataType.NUMBER)).to.be.true;
793
+ expect(arrayTypeOfTester([1, 2], DataType.NUMBER)).to.be.true;
794
+ expect(arrayTypeOfTester([1, 2, '3'], DataType.NUMBER)).to.be.false;
795
+
796
+ expect(arrayTypeOfTester([new Date, new Date, new Date], DataType.DATE)).to.be.true;
797
+ });
798
+ });
799
+
800
+ describe('uniqueItemsTester()', () => {
801
+ it('logic test', () => {
802
+ expect(uniqueItemsTester([])).to.be.true;
803
+ expect(uniqueItemsTester([1, 2])).to.be.true;
804
+ expect(uniqueItemsTester([1, 2, 2])).to.be.false;
805
+ });
806
+ });
807
+ });
808
+
809
+ describe('regexp', () => {
810
+ describe('regExpTester()', () => {
811
+ it('common test', () => {
812
+ expect(commonTestRunner(
813
+ regExpTester,
814
+ false,
815
+ false,
816
+ false,
817
+ false,
818
+ false,
819
+ false,
820
+ false
821
+ )).to.be.true;
822
+ });
823
+
824
+ it('logic test', () => {
825
+ expect(regExpTester(/\d/)).to.be.true;
826
+ expect(regExpTester(new RegExp('\d'))).to.be.true;
827
+
828
+ expect(regExpTester('\d')).to.be.false;
829
+ });
830
+ });
831
+ });
832
+ });