ejv 1.1.11 → 2.0.0

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