@markuplint/types 3.5.1 → 3.6.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.
@@ -1,18 +1,19 @@
1
- "use strict";
1
+ 'use strict';
2
2
  // @ts-nocheck
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const date_string_1 = require("./date-string");
5
- const datetime_tokens_1 = require("./datetime-tokens");
6
- const duration_string_1 = require("./duration-string");
7
- const global_date_and_time_string_1 = require("./global-date-and-time-string");
8
- const local_date_and_time_string_1 = require("./local-date-and-time-string");
9
- const month_string_1 = require("./month-string");
10
- const time_string_1 = require("./time-string");
11
- const time_zone_offset_string_1 = require("./time-zone-offset-string");
12
- const week_string_1 = require("./week-string");
13
- const year_string_1 = require("./year-string");
14
- const yearless_date_string_1 = require("./yearless-date-string");
15
- const _1 = require(".");
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+ const date_string_1 = require('./date-string');
5
+ const datetime_tokens_1 = require('./datetime-tokens');
6
+ const duration_string_1 = require('./duration-string');
7
+ const global_date_and_time_string_1 = require('./global-date-and-time-string');
8
+ const local_date_and_time_string_1 = require('./local-date-and-time-string');
9
+ const month_string_1 = require('./month-string');
10
+ const time_string_1 = require('./time-string');
11
+ const time_zone_offset_string_1 = require('./time-zone-offset-string');
12
+ const week_string_1 = require('./week-string');
13
+ const year_string_1 = require('./year-string');
14
+ const yearless_date_string_1 = require('./yearless-date-string');
15
+
16
+ const _1 = require('.');
16
17
  const isMonth = (0, month_string_1.checkMonthString)();
17
18
  const isDate = (0, date_string_1.checkDateString)();
18
19
  const isYearlessDate = (0, yearless_date_string_1.checkYearlessDateString)();
@@ -27,292 +28,292 @@ const isDurationISO8601Like = (0, duration_string_1.checkDurationISO8601LikeStri
27
28
  const isDurationComponentList = (0, duration_string_1.checkDurationComponentListString)();
28
29
  const isDateTime = (0, _1.checkDateTime)();
29
30
  test('max-week', () => {
30
- expect((0, datetime_tokens_1.getMaxWeekNum)(1976)).toBe(53);
31
- expect((0, datetime_tokens_1.getMaxWeekNum)(1977)).toBe(52);
32
- expect((0, datetime_tokens_1.getMaxWeekNum)(1978)).toBe(52);
33
- expect((0, datetime_tokens_1.getMaxWeekNum)(1979)).toBe(52);
34
- expect((0, datetime_tokens_1.getMaxWeekNum)(1981)).toBe(53);
31
+ expect((0, datetime_tokens_1.getMaxWeekNum)(1976)).toBe(53);
32
+ expect((0, datetime_tokens_1.getMaxWeekNum)(1977)).toBe(52);
33
+ expect((0, datetime_tokens_1.getMaxWeekNum)(1978)).toBe(52);
34
+ expect((0, datetime_tokens_1.getMaxWeekNum)(1979)).toBe(52);
35
+ expect((0, datetime_tokens_1.getMaxWeekNum)(1981)).toBe(53);
35
36
  });
36
37
  test('month-string', () => {
37
- expect(isMonth('').reason).toBe('empty-token');
38
- expect(isMonth(' ').reason).toBe('unexpected-token');
39
- expect(isMonth('a').reason).toBe('unexpected-token');
40
- expect(isMonth('0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 4 });
41
- expect(isMonth('0000').reason).toStrictEqual({ type: 'out-of-range', gt: 0 });
42
- expect(isMonth('0001').reason).toBe('missing-token');
43
- expect(isMonth('0001:').reason).toBe('unexpected-token');
44
- expect(isMonth('0001-').reason).toBe('missing-token');
45
- expect(isMonth('0001-a').reason).toBe('unexpected-token');
46
- expect(isMonth('0001-0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
47
- expect(isMonth('0001-001').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
48
- expect(isMonth('0001-00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 12 });
49
- expect(isMonth('0001-13').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 12 });
50
- expect(isMonth('0001-01').matched).toBe(true);
51
- expect(isMonth('0001-12').matched).toBe(true);
52
- expect(isMonth('10001-01').matched).toBe(true);
53
- expect(isMonth('0001-01-').reason).toBe('extra-token');
38
+ expect(isMonth('').reason).toBe('empty-token');
39
+ expect(isMonth(' ').reason).toBe('unexpected-token');
40
+ expect(isMonth('a').reason).toBe('unexpected-token');
41
+ expect(isMonth('0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 4 });
42
+ expect(isMonth('0000').reason).toStrictEqual({ type: 'out-of-range', gt: 0 });
43
+ expect(isMonth('0001').reason).toBe('missing-token');
44
+ expect(isMonth('0001:').reason).toBe('unexpected-token');
45
+ expect(isMonth('0001-').reason).toBe('missing-token');
46
+ expect(isMonth('0001-a').reason).toBe('unexpected-token');
47
+ expect(isMonth('0001-0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
48
+ expect(isMonth('0001-001').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
49
+ expect(isMonth('0001-00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 12 });
50
+ expect(isMonth('0001-13').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 12 });
51
+ expect(isMonth('0001-01').matched).toBe(true);
52
+ expect(isMonth('0001-12').matched).toBe(true);
53
+ expect(isMonth('10001-01').matched).toBe(true);
54
+ expect(isMonth('0001-01-').reason).toBe('extra-token');
54
55
  });
55
56
  test('date-string', () => {
56
- expect(isDate('').reason).toBe('empty-token');
57
- expect(isDate(' ').reason).toBe('unexpected-token');
58
- expect(isDate('a').reason).toBe('unexpected-token');
59
- expect(isDate('0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 4 });
60
- expect(isDate('0000').reason).toStrictEqual({ type: 'out-of-range', gt: 0 });
61
- expect(isDate('2000').reason).toBe('missing-token');
62
- expect(isDate('2000:').reason).toBe('unexpected-token');
63
- expect(isDate('2000-').reason).toBe('missing-token');
64
- expect(isDate('2000-a').reason).toBe('unexpected-token');
65
- expect(isDate('2000-0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
66
- expect(isDate('2000-00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 12 });
67
- expect(isDate('2000-01').reason).toBe('missing-token');
68
- expect(isDate('2000-01:').reason).toBe('unexpected-token');
69
- expect(isDate('2000-01-').reason).toBe('missing-token');
70
- expect(isDate('2000-01-a').reason).toBe('unexpected-token');
71
- expect(isDate('2000-01-0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
72
- expect(isDate('2000-01-001').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
73
- expect(isDate('2000-01-00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 31 });
74
- expect(isDate('2000-01-01').matched).toBe(true);
75
- expect(isDate('2000-01-31').matched).toBe(true);
76
- expect(isDate('2000-01-32').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 31 });
77
- expect(isDate('2000-02-28').matched).toBe(true);
78
- expect(isDate('2000-02-29').matched).toBe(true);
79
- expect(isDate('2000-02-30').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 29 });
80
- expect(isDate('2001-02-28').matched).toBe(true);
81
- expect(isDate('2001-02-29').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 28 });
57
+ expect(isDate('').reason).toBe('empty-token');
58
+ expect(isDate(' ').reason).toBe('unexpected-token');
59
+ expect(isDate('a').reason).toBe('unexpected-token');
60
+ expect(isDate('0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 4 });
61
+ expect(isDate('0000').reason).toStrictEqual({ type: 'out-of-range', gt: 0 });
62
+ expect(isDate('2000').reason).toBe('missing-token');
63
+ expect(isDate('2000:').reason).toBe('unexpected-token');
64
+ expect(isDate('2000-').reason).toBe('missing-token');
65
+ expect(isDate('2000-a').reason).toBe('unexpected-token');
66
+ expect(isDate('2000-0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
67
+ expect(isDate('2000-00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 12 });
68
+ expect(isDate('2000-01').reason).toBe('missing-token');
69
+ expect(isDate('2000-01:').reason).toBe('unexpected-token');
70
+ expect(isDate('2000-01-').reason).toBe('missing-token');
71
+ expect(isDate('2000-01-a').reason).toBe('unexpected-token');
72
+ expect(isDate('2000-01-0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
73
+ expect(isDate('2000-01-001').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
74
+ expect(isDate('2000-01-00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 31 });
75
+ expect(isDate('2000-01-01').matched).toBe(true);
76
+ expect(isDate('2000-01-31').matched).toBe(true);
77
+ expect(isDate('2000-01-32').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 31 });
78
+ expect(isDate('2000-02-28').matched).toBe(true);
79
+ expect(isDate('2000-02-29').matched).toBe(true);
80
+ expect(isDate('2000-02-30').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 29 });
81
+ expect(isDate('2001-02-28').matched).toBe(true);
82
+ expect(isDate('2001-02-29').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 28 });
82
83
  });
83
84
  test('yearless-date-string', () => {
84
- expect(isYearlessDate('').reason).toBe('empty-token');
85
- expect(isYearlessDate(' ').reason).toBe('unexpected-token');
86
- expect(isYearlessDate('a').reason).toBe('unexpected-token');
87
- expect(isYearlessDate('0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
88
- expect(isYearlessDate('00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 12 });
89
- expect(isYearlessDate('01').reason).toBe('missing-token');
90
- expect(isYearlessDate('01:').reason).toBe('unexpected-token');
91
- expect(isYearlessDate('01-').reason).toBe('missing-token');
92
- expect(isYearlessDate('01-a').reason).toBe('unexpected-token');
93
- expect(isYearlessDate('01-0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
94
- expect(isYearlessDate('01-00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 31 });
95
- expect(isYearlessDate('01-01').matched).toBe(true);
96
- expect(isYearlessDate('01-31').matched).toBe(true);
97
- expect(isYearlessDate('01-32').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 31 });
98
- expect(isYearlessDate('02-28').matched).toBe(true);
99
- expect(isYearlessDate('02-29').matched).toBe(true);
100
- expect(isYearlessDate('02-30').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 29 });
85
+ expect(isYearlessDate('').reason).toBe('empty-token');
86
+ expect(isYearlessDate(' ').reason).toBe('unexpected-token');
87
+ expect(isYearlessDate('a').reason).toBe('unexpected-token');
88
+ expect(isYearlessDate('0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
89
+ expect(isYearlessDate('00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 12 });
90
+ expect(isYearlessDate('01').reason).toBe('missing-token');
91
+ expect(isYearlessDate('01:').reason).toBe('unexpected-token');
92
+ expect(isYearlessDate('01-').reason).toBe('missing-token');
93
+ expect(isYearlessDate('01-a').reason).toBe('unexpected-token');
94
+ expect(isYearlessDate('01-0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
95
+ expect(isYearlessDate('01-00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 31 });
96
+ expect(isYearlessDate('01-01').matched).toBe(true);
97
+ expect(isYearlessDate('01-31').matched).toBe(true);
98
+ expect(isYearlessDate('01-32').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 31 });
99
+ expect(isYearlessDate('02-28').matched).toBe(true);
100
+ expect(isYearlessDate('02-29').matched).toBe(true);
101
+ expect(isYearlessDate('02-30').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 29 });
101
102
  });
102
103
  test('time-string', () => {
103
- expect(isTimeString('').reason).toBe('empty-token');
104
- expect(isTimeString(' ').reason).toBe('unexpected-token');
105
- expect(isTimeString('a').reason).toBe('unexpected-token');
106
- expect(isTimeString('0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
107
- expect(isTimeString('000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
108
- expect(isTimeString('24').reason).toStrictEqual({ type: 'out-of-range', gte: 0, lte: 23 });
109
- expect(isTimeString('00').reason).toBe('missing-token');
110
- expect(isTimeString('00-').reason).toBe('unexpected-token');
111
- expect(isTimeString('00:').reason).toBe('missing-token');
112
- expect(isTimeString('00:a').reason).toBe('unexpected-token');
113
- expect(isTimeString('00:0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
114
- expect(isTimeString('00:000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
115
- expect(isTimeString('00:00').matched).toBe(true);
116
- expect(isTimeString('00:59').matched).toBe(true);
117
- expect(isTimeString('00:60').reason).toStrictEqual({ type: 'out-of-range', gte: 0, lte: 59 });
118
- expect(isTimeString('00:00-').reason).toBe('unexpected-token');
119
- expect(isTimeString('00:00:').reason).toBe('missing-token');
120
- expect(isTimeString('00:00:a').reason).toBe('unexpected-token');
121
- expect(isTimeString('00:00:0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
122
- expect(isTimeString('00:00:000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
123
- expect(isTimeString('00:00:00').matched).toBe(true);
124
- expect(isTimeString('00:00:59').matched).toBe(true);
125
- expect(isTimeString('00:00:60').reason).toStrictEqual({ type: 'out-of-range', gte: 0, lte: 59 });
126
- expect(isTimeString('00:00:00:').reason).toBe('unexpected-token');
127
- expect(isTimeString('00:00:00.').reason).toBe('missing-token');
128
- expect(isTimeString('00:00:00.a').reason).toBe('unexpected-token');
129
- expect(isTimeString('00:00:00.0').matched).toBe(true);
130
- expect(isTimeString('00:00:00.9').matched).toBe(true);
131
- expect(isTimeString('00:00:00.00').matched).toBe(true);
132
- expect(isTimeString('00:00:00.99').matched).toBe(true);
133
- expect(isTimeString('00:00:00.000').matched).toBe(true);
134
- expect(isTimeString('00:00:00.999').matched).toBe(true);
135
- expect(isTimeString('00:00:00.0000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 1, lte: 3 });
136
- expect(isTimeString('00:00:00.1000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 1, lte: 3 });
104
+ expect(isTimeString('').reason).toBe('empty-token');
105
+ expect(isTimeString(' ').reason).toBe('unexpected-token');
106
+ expect(isTimeString('a').reason).toBe('unexpected-token');
107
+ expect(isTimeString('0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
108
+ expect(isTimeString('000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
109
+ expect(isTimeString('24').reason).toStrictEqual({ type: 'out-of-range', gte: 0, lte: 23 });
110
+ expect(isTimeString('00').reason).toBe('missing-token');
111
+ expect(isTimeString('00-').reason).toBe('unexpected-token');
112
+ expect(isTimeString('00:').reason).toBe('missing-token');
113
+ expect(isTimeString('00:a').reason).toBe('unexpected-token');
114
+ expect(isTimeString('00:0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
115
+ expect(isTimeString('00:000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
116
+ expect(isTimeString('00:00').matched).toBe(true);
117
+ expect(isTimeString('00:59').matched).toBe(true);
118
+ expect(isTimeString('00:60').reason).toStrictEqual({ type: 'out-of-range', gte: 0, lte: 59 });
119
+ expect(isTimeString('00:00-').reason).toBe('unexpected-token');
120
+ expect(isTimeString('00:00:').reason).toBe('missing-token');
121
+ expect(isTimeString('00:00:a').reason).toBe('unexpected-token');
122
+ expect(isTimeString('00:00:0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
123
+ expect(isTimeString('00:00:000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
124
+ expect(isTimeString('00:00:00').matched).toBe(true);
125
+ expect(isTimeString('00:00:59').matched).toBe(true);
126
+ expect(isTimeString('00:00:60').reason).toStrictEqual({ type: 'out-of-range', gte: 0, lte: 59 });
127
+ expect(isTimeString('00:00:00:').reason).toBe('unexpected-token');
128
+ expect(isTimeString('00:00:00.').reason).toBe('missing-token');
129
+ expect(isTimeString('00:00:00.a').reason).toBe('unexpected-token');
130
+ expect(isTimeString('00:00:00.0').matched).toBe(true);
131
+ expect(isTimeString('00:00:00.9').matched).toBe(true);
132
+ expect(isTimeString('00:00:00.00').matched).toBe(true);
133
+ expect(isTimeString('00:00:00.99').matched).toBe(true);
134
+ expect(isTimeString('00:00:00.000').matched).toBe(true);
135
+ expect(isTimeString('00:00:00.999').matched).toBe(true);
136
+ expect(isTimeString('00:00:00.0000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 1, lte: 3 });
137
+ expect(isTimeString('00:00:00.1000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 1, lte: 3 });
137
138
  });
138
139
  test('local-date-and-time-string', () => {
139
- expect(isLocalDateAndTime('').reason).toBe('empty-token');
140
- expect(isLocalDateAndTime(' ').reason).toBe('unexpected-token');
141
- expect(isLocalDateAndTime('2020-12-31').reason).toBe('missing-token');
142
- expect(isLocalDateAndTime('2020-12-31:').reason).toBe('unexpected-token');
143
- expect(isLocalDateAndTime('2020-12-31T').reason).toBe('missing-token');
144
- expect(isLocalDateAndTime('2020-12-31 ').reason).toBe('missing-token');
145
- expect(isLocalDateAndTime('2020-12-31 ').reason).toBe('unexpected-token');
146
- expect(isLocalDateAndTime('2020-12-31T00:00:00.000').matched).toBe(true);
140
+ expect(isLocalDateAndTime('').reason).toBe('empty-token');
141
+ expect(isLocalDateAndTime(' ').reason).toBe('unexpected-token');
142
+ expect(isLocalDateAndTime('2020-12-31').reason).toBe('missing-token');
143
+ expect(isLocalDateAndTime('2020-12-31:').reason).toBe('unexpected-token');
144
+ expect(isLocalDateAndTime('2020-12-31T').reason).toBe('missing-token');
145
+ expect(isLocalDateAndTime('2020-12-31 ').reason).toBe('missing-token');
146
+ expect(isLocalDateAndTime('2020-12-31 ').reason).toBe('unexpected-token');
147
+ expect(isLocalDateAndTime('2020-12-31T00:00:00.000').matched).toBe(true);
147
148
  });
148
149
  test('normalized-local-date-and-time-string', () => {
149
- expect(isNormalizedLocalDateAndTime('').reason).toBe('empty-token');
150
- expect(isNormalizedLocalDateAndTime(' ').reason).toBe('unexpected-token');
151
- expect(isNormalizedLocalDateAndTime('2020-12-31').reason).toBe('missing-token');
152
- expect(isNormalizedLocalDateAndTime('2020-12-31:').reason).toBe('unexpected-token');
153
- expect(isNormalizedLocalDateAndTime('2020-12-31T').reason).toBe('missing-token');
154
- expect(isNormalizedLocalDateAndTime('2020-12-31 ').reason).toBe('unexpected-token');
155
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00').matched).toBe(true);
156
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00').reason).toBe('extra-token');
157
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:01').matched).toBe(true);
158
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00.0').reason).toBe('extra-token');
159
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00.00').reason).toBe('extra-token');
160
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00.000').reason).toBe('extra-token');
161
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00.001').matched).toBe(true);
150
+ expect(isNormalizedLocalDateAndTime('').reason).toBe('empty-token');
151
+ expect(isNormalizedLocalDateAndTime(' ').reason).toBe('unexpected-token');
152
+ expect(isNormalizedLocalDateAndTime('2020-12-31').reason).toBe('missing-token');
153
+ expect(isNormalizedLocalDateAndTime('2020-12-31:').reason).toBe('unexpected-token');
154
+ expect(isNormalizedLocalDateAndTime('2020-12-31T').reason).toBe('missing-token');
155
+ expect(isNormalizedLocalDateAndTime('2020-12-31 ').reason).toBe('unexpected-token');
156
+ expect(isNormalizedLocalDateAndTime('2020-12-31T00:00').matched).toBe(true);
157
+ expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00').reason).toBe('extra-token');
158
+ expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:01').matched).toBe(true);
159
+ expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00.0').reason).toBe('extra-token');
160
+ expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00.00').reason).toBe('extra-token');
161
+ expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00.000').reason).toBe('extra-token');
162
+ expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00.001').matched).toBe(true);
162
163
  });
163
164
  test('time-zone-offset', () => {
164
- expect(isTimeZoneOffset('').reason).toBe('empty-token');
165
- expect(isTimeZoneOffset(' ').reason).toBe('unexpected-token');
166
- expect(isTimeZoneOffset('a').reason).toBe('unexpected-token');
167
- expect(isTimeZoneOffset('z').reason).toBe('unexpected-token');
168
- expect(isTimeZoneOffset('Z').matched).toBe(true);
169
- expect(isTimeZoneOffset('Z:').reason).toBe('extra-token');
170
- expect(isTimeZoneOffset('ZZ').reason).toBe('extra-token');
171
- expect(isTimeZoneOffset('+').reason).toBe('missing-token');
172
- expect(isTimeZoneOffset('-').reason).toBe('missing-token');
173
- expect(isTimeZoneOffset('+-').reason).toBe('unexpected-token');
174
- expect(isTimeZoneOffset('+00').reason).toBe('missing-token');
175
- expect(isTimeZoneOffset('+00:').reason).toBe('missing-token');
176
- expect(isTimeZoneOffset('+00:00').matched).toBe(true);
177
- expect(isTimeZoneOffset('+24:00').matched).toBe(false);
178
- expect(isTimeZoneOffset('+00:60').matched).toBe(false);
179
- expect(isTimeZoneOffset('+000:00').matched).toBe(false);
180
- expect(isTimeZoneOffset('+00:000').matched).toBe(false);
181
- expect(isTimeZoneOffset('+00:00:').reason).toBe('extra-token');
182
- expect(isTimeZoneOffset('+0000').matched).toBe(true);
183
- expect(isTimeZoneOffset('+2400').matched).toBe(false);
184
- expect(isTimeZoneOffset('+0060').matched).toBe(false);
185
- expect(isTimeZoneOffset('+00000').matched).toBe(false);
186
- expect(isTimeZoneOffset('+0000:').reason).toBe('extra-token');
165
+ expect(isTimeZoneOffset('').reason).toBe('empty-token');
166
+ expect(isTimeZoneOffset(' ').reason).toBe('unexpected-token');
167
+ expect(isTimeZoneOffset('a').reason).toBe('unexpected-token');
168
+ expect(isTimeZoneOffset('z').reason).toBe('unexpected-token');
169
+ expect(isTimeZoneOffset('Z').matched).toBe(true);
170
+ expect(isTimeZoneOffset('Z:').reason).toBe('extra-token');
171
+ expect(isTimeZoneOffset('ZZ').reason).toBe('extra-token');
172
+ expect(isTimeZoneOffset('+').reason).toBe('missing-token');
173
+ expect(isTimeZoneOffset('-').reason).toBe('missing-token');
174
+ expect(isTimeZoneOffset('+-').reason).toBe('unexpected-token');
175
+ expect(isTimeZoneOffset('+00').reason).toBe('missing-token');
176
+ expect(isTimeZoneOffset('+00:').reason).toBe('missing-token');
177
+ expect(isTimeZoneOffset('+00:00').matched).toBe(true);
178
+ expect(isTimeZoneOffset('+24:00').matched).toBe(false);
179
+ expect(isTimeZoneOffset('+00:60').matched).toBe(false);
180
+ expect(isTimeZoneOffset('+000:00').matched).toBe(false);
181
+ expect(isTimeZoneOffset('+00:000').matched).toBe(false);
182
+ expect(isTimeZoneOffset('+00:00:').reason).toBe('extra-token');
183
+ expect(isTimeZoneOffset('+0000').matched).toBe(true);
184
+ expect(isTimeZoneOffset('+2400').matched).toBe(false);
185
+ expect(isTimeZoneOffset('+0060').matched).toBe(false);
186
+ expect(isTimeZoneOffset('+00000').matched).toBe(false);
187
+ expect(isTimeZoneOffset('+0000:').reason).toBe('extra-token');
187
188
  });
188
189
  test('global-date-and-time-string', () => {
189
- expect(isGlobalDateAndTime('2000-01-01').reason).toBe('missing-token');
190
- expect(isGlobalDateAndTime('2000-01-01T00:00').reason).toBe('missing-token');
191
- expect(isGlobalDateAndTime('2000-01-01T00:00').reason).toBe('missing-token');
192
- expect(isGlobalDateAndTime('2000-01-01T00:00+').reason).toBe('missing-token');
193
- expect(isGlobalDateAndTime('2000-01-01T00:00Z').matched).toBe(true);
194
- expect(isGlobalDateAndTime('2000-01-01T00:00+00').reason).toBe('missing-token');
195
- expect(isGlobalDateAndTime('2000-01-01T00:00+0000').matched).toBe(true);
196
- expect(isGlobalDateAndTime('2000-01-01T00:00+00:00').matched).toBe(true);
197
- expect(isGlobalDateAndTime('2000-01-01T00:00-2359').matched).toBe(true);
198
- expect(isGlobalDateAndTime('2000-01-01T00:00-23:59').matched).toBe(true);
199
- expect(isGlobalDateAndTime('2000-01-01T00:00:00+0000').matched).toBe(true);
200
- expect(isGlobalDateAndTime('2000-01-01T00:00:00.000+0000').matched).toBe(true);
201
- expect(isGlobalDateAndTime('2000-01-01T00:00:00.000+0000a').reason).toBe('extra-token');
190
+ expect(isGlobalDateAndTime('2000-01-01').reason).toBe('missing-token');
191
+ expect(isGlobalDateAndTime('2000-01-01T00:00').reason).toBe('missing-token');
192
+ expect(isGlobalDateAndTime('2000-01-01T00:00').reason).toBe('missing-token');
193
+ expect(isGlobalDateAndTime('2000-01-01T00:00+').reason).toBe('missing-token');
194
+ expect(isGlobalDateAndTime('2000-01-01T00:00Z').matched).toBe(true);
195
+ expect(isGlobalDateAndTime('2000-01-01T00:00+00').reason).toBe('missing-token');
196
+ expect(isGlobalDateAndTime('2000-01-01T00:00+0000').matched).toBe(true);
197
+ expect(isGlobalDateAndTime('2000-01-01T00:00+00:00').matched).toBe(true);
198
+ expect(isGlobalDateAndTime('2000-01-01T00:00-2359').matched).toBe(true);
199
+ expect(isGlobalDateAndTime('2000-01-01T00:00-23:59').matched).toBe(true);
200
+ expect(isGlobalDateAndTime('2000-01-01T00:00:00+0000').matched).toBe(true);
201
+ expect(isGlobalDateAndTime('2000-01-01T00:00:00.000+0000').matched).toBe(true);
202
+ expect(isGlobalDateAndTime('2000-01-01T00:00:00.000+0000a').reason).toBe('extra-token');
202
203
  });
203
204
  test('week-string', () => {
204
- expect(isWeek('').reason).toBe('empty-token');
205
- expect(isWeek(' ').reason).toBe('unexpected-token');
206
- expect(isWeek('a').reason).toBe('unexpected-token');
207
- expect(isWeek('2000').reason).toBe('missing-token');
208
- expect(isWeek('2000-').reason).toBe('missing-token');
209
- expect(isWeek('2000-a').reason).toBe('unexpected-token');
210
- expect(isWeek('2000-W').reason).toBe('missing-token');
211
- expect(isWeek('2000-Wa').reason).toBe('unexpected-token');
212
- expect(isWeek('2000-W0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
213
- expect(isWeek('2000-W00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 52 });
214
- expect(isWeek('2000-W53').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 52 });
215
- expect(isWeek('2000-W01').matched).toBe(true);
216
- expect(isWeek('2000-W52').matched).toBe(true);
217
- expect(isWeek('2004-W00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 53 });
218
- expect(isWeek('2004-W54').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 53 });
219
- expect(isWeek('2004-W01').matched).toBe(true);
220
- expect(isWeek('2004-W53').matched).toBe(true);
221
- expect(isWeek('2000-W01a').reason).toBe('extra-token');
205
+ expect(isWeek('').reason).toBe('empty-token');
206
+ expect(isWeek(' ').reason).toBe('unexpected-token');
207
+ expect(isWeek('a').reason).toBe('unexpected-token');
208
+ expect(isWeek('2000').reason).toBe('missing-token');
209
+ expect(isWeek('2000-').reason).toBe('missing-token');
210
+ expect(isWeek('2000-a').reason).toBe('unexpected-token');
211
+ expect(isWeek('2000-W').reason).toBe('missing-token');
212
+ expect(isWeek('2000-Wa').reason).toBe('unexpected-token');
213
+ expect(isWeek('2000-W0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
214
+ expect(isWeek('2000-W00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 52 });
215
+ expect(isWeek('2000-W53').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 52 });
216
+ expect(isWeek('2000-W01').matched).toBe(true);
217
+ expect(isWeek('2000-W52').matched).toBe(true);
218
+ expect(isWeek('2004-W00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 53 });
219
+ expect(isWeek('2004-W54').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 53 });
220
+ expect(isWeek('2004-W01').matched).toBe(true);
221
+ expect(isWeek('2004-W53').matched).toBe(true);
222
+ expect(isWeek('2000-W01a').reason).toBe('extra-token');
222
223
  });
223
224
  test('year-string', () => {
224
- expect(isYear('').reason).toBe('empty-token');
225
- expect(isYear(' ').reason).toBe('unexpected-token');
226
- expect(isYear('a').reason).toBe('unexpected-token');
227
- expect(isYear('200').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 4 });
228
- expect(isYear('2000').matched).toBe(true);
229
- expect(isYear('20000').matched).toBe(true);
225
+ expect(isYear('').reason).toBe('empty-token');
226
+ expect(isYear(' ').reason).toBe('unexpected-token');
227
+ expect(isYear('a').reason).toBe('unexpected-token');
228
+ expect(isYear('200').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 4 });
229
+ expect(isYear('2000').matched).toBe(true);
230
+ expect(isYear('20000').matched).toBe(true);
230
231
  });
231
232
  test('duration-string (IS08601 like)', () => {
232
- expect(isDurationISO8601Like('').reason).toBe('empty-token');
233
- expect(isDurationISO8601Like(' ').reason).toBe('unexpected-token');
234
- expect(isDurationISO8601Like('a').reason).toBe('unexpected-token');
235
- expect(isDurationISO8601Like('P').reason).toBe('missing-token');
236
- expect(isDurationISO8601Like('P0').reason).toBe('missing-token');
237
- expect(isDurationISO8601Like('P0D').reason).toBe('missing-token');
238
- expect(isDurationISO8601Like('P0H').reason).toBe('unexpected-token');
239
- expect(isDurationISO8601Like('P0Dt').reason).toBe('unexpected-token');
240
- expect(isDurationISO8601Like('P0DT').reason).toBe('missing-token');
241
- expect(isDurationISO8601Like('P0DT0').reason).toBe('missing-token');
242
- expect(isDurationISO8601Like('P0DT0H').matched).toBe(true);
243
- expect(isDurationISO8601Like('P0DT0H0').reason).toBe('missing-token');
244
- expect(isDurationISO8601Like('P0DT0H0M').matched).toBe(true);
245
- expect(isDurationISO8601Like('P0DT0H0M0').reason).toBe('missing-token');
246
- expect(isDurationISO8601Like('P0DT0H0M0S').matched).toBe(true);
247
- expect(isDurationISO8601Like('P0DT0H0M0.').reason).toBe('missing-token');
248
- expect(isDurationISO8601Like('P0DT0H0M0M').reason).toBe('unexpected-token');
249
- expect(isDurationISO8601Like('P0DT0H0M0.0').reason).toBe('missing-token');
250
- expect(isDurationISO8601Like('P0DT0H0M0.0M').reason).toBe('unexpected-token');
251
- expect(isDurationISO8601Like('P0DT0H0M0.000').reason).toBe('missing-token');
252
- expect(isDurationISO8601Like('P0DT0H0M0.0000').reason).toStrictEqual({
253
- gte: 1,
254
- lte: 3,
255
- type: 'out-of-range-length-digit',
256
- });
257
- expect(isDurationISO8601Like('P0DT0H0M0.000S').matched).toBe(true);
258
- expect(isDurationISO8601Like('P0DT0H0M0.000S0').reason).toBe('extra-token');
259
- expect(isDurationISO8601Like('P0DT0H0M0.000S0H').reason).toBe('extra-token');
260
- expect(isDurationISO8601Like('P0DT0M').matched).toBe(true);
261
- expect(isDurationISO8601Like('P0DT0S').matched).toBe(true);
262
- expect(isDurationISO8601Like('P0DT0.0S').matched).toBe(true);
263
- expect(isDurationISO8601Like('P0DT0M0S').matched).toBe(true);
264
- expect(isDurationISO8601Like('P0DT0H0S').matched).toBe(true);
265
- expect(isDurationISO8601Like('P0DT0H0.0S').matched).toBe(true);
266
- expect(isDurationISO8601Like('P0DT0M0H').reason).toBe('unexpected-token');
267
- expect(isDurationISO8601Like('P0DT0S0M').reason).toBe('extra-token');
268
- expect(isDurationISO8601Like('P0DT0.0S0M').reason).toBe('extra-token');
269
- expect(isDurationISO8601Like('PT4H18M3S').matched).toBe(true);
233
+ expect(isDurationISO8601Like('').reason).toBe('empty-token');
234
+ expect(isDurationISO8601Like(' ').reason).toBe('unexpected-token');
235
+ expect(isDurationISO8601Like('a').reason).toBe('unexpected-token');
236
+ expect(isDurationISO8601Like('P').reason).toBe('missing-token');
237
+ expect(isDurationISO8601Like('P0').reason).toBe('missing-token');
238
+ expect(isDurationISO8601Like('P0D').reason).toBe('missing-token');
239
+ expect(isDurationISO8601Like('P0H').reason).toBe('unexpected-token');
240
+ expect(isDurationISO8601Like('P0Dt').reason).toBe('unexpected-token');
241
+ expect(isDurationISO8601Like('P0DT').reason).toBe('missing-token');
242
+ expect(isDurationISO8601Like('P0DT0').reason).toBe('missing-token');
243
+ expect(isDurationISO8601Like('P0DT0H').matched).toBe(true);
244
+ expect(isDurationISO8601Like('P0DT0H0').reason).toBe('missing-token');
245
+ expect(isDurationISO8601Like('P0DT0H0M').matched).toBe(true);
246
+ expect(isDurationISO8601Like('P0DT0H0M0').reason).toBe('missing-token');
247
+ expect(isDurationISO8601Like('P0DT0H0M0S').matched).toBe(true);
248
+ expect(isDurationISO8601Like('P0DT0H0M0.').reason).toBe('missing-token');
249
+ expect(isDurationISO8601Like('P0DT0H0M0M').reason).toBe('unexpected-token');
250
+ expect(isDurationISO8601Like('P0DT0H0M0.0').reason).toBe('missing-token');
251
+ expect(isDurationISO8601Like('P0DT0H0M0.0M').reason).toBe('unexpected-token');
252
+ expect(isDurationISO8601Like('P0DT0H0M0.000').reason).toBe('missing-token');
253
+ expect(isDurationISO8601Like('P0DT0H0M0.0000').reason).toStrictEqual({
254
+ gte: 1,
255
+ lte: 3,
256
+ type: 'out-of-range-length-digit',
257
+ });
258
+ expect(isDurationISO8601Like('P0DT0H0M0.000S').matched).toBe(true);
259
+ expect(isDurationISO8601Like('P0DT0H0M0.000S0').reason).toBe('extra-token');
260
+ expect(isDurationISO8601Like('P0DT0H0M0.000S0H').reason).toBe('extra-token');
261
+ expect(isDurationISO8601Like('P0DT0M').matched).toBe(true);
262
+ expect(isDurationISO8601Like('P0DT0S').matched).toBe(true);
263
+ expect(isDurationISO8601Like('P0DT0.0S').matched).toBe(true);
264
+ expect(isDurationISO8601Like('P0DT0M0S').matched).toBe(true);
265
+ expect(isDurationISO8601Like('P0DT0H0S').matched).toBe(true);
266
+ expect(isDurationISO8601Like('P0DT0H0.0S').matched).toBe(true);
267
+ expect(isDurationISO8601Like('P0DT0M0H').reason).toBe('unexpected-token');
268
+ expect(isDurationISO8601Like('P0DT0S0M').reason).toBe('extra-token');
269
+ expect(isDurationISO8601Like('P0DT0.0S0M').reason).toBe('extra-token');
270
+ expect(isDurationISO8601Like('PT4H18M3S').matched).toBe(true);
270
271
  });
271
272
  test('duration-string (duration component list)', () => {
272
- expect(isDurationComponentList('').reason).toBe('empty-token');
273
- expect(isDurationComponentList(' ').reason).toBe('missing-token');
274
- expect(isDurationComponentList(' a').reason).toBe('unexpected-token');
275
- expect(isDurationComponentList(' 0').reason).toBe('missing-token');
276
- expect(isDurationComponentList(' 0a').reason).toBe('unexpected-token');
277
- expect(isDurationComponentList(' 0w').matched).toBe(true);
278
- expect(isDurationComponentList(' 0ww').reason).toBe('unexpected-token');
279
- expect(isDurationComponentList('0w').matched).toBe(true);
280
- expect(isDurationComponentList('0w ').matched).toBe(true);
281
- expect(isDurationComponentList('0w 0').reason).toBe('missing-token');
282
- expect(isDurationComponentList('0w 0w').reason).toBe('duplicated');
283
- expect(isDurationComponentList('0w 0d').matched).toBe(true);
284
- expect(isDurationComponentList('0w 0d').matched).toBe(true);
285
- expect(isDurationComponentList(' 0w 0d').matched).toBe(true);
286
- expect(isDurationComponentList(' 0w 0d ').matched).toBe(true);
287
- expect(isDurationComponentList('0w 0d ').matched).toBe(true);
288
- expect(isDurationComponentList('\n0w\n0d\n').matched).toBe(true);
289
- expect(isDurationComponentList('0w 0.').reason).toBe('missing-token');
290
- expect(isDurationComponentList('0w 0.0').reason).toBe('missing-token');
291
- expect(isDurationComponentList('0w 0.0s').matched).toBe(true);
292
- expect(isDurationComponentList('0w 0.0d').reason).toBe('unexpected-token');
293
- expect(isDurationComponentList('0s 0.').reason).toBe('unexpected-token');
294
- expect(isDurationComponentList('0s 0.0').reason).toBe('unexpected-token');
295
- expect(isDurationComponentList('0s 0.0s').reason).toBe('unexpected-token');
296
- expect(isDurationComponentList('0w 0.00s').matched).toBe(true);
297
- expect(isDurationComponentList('0w 0.000s').matched).toBe(true);
298
- expect(isDurationComponentList('0w 0.0000s').reason).toStrictEqual({
299
- gte: 1,
300
- lte: 3,
301
- type: 'out-of-range-length-digit',
302
- });
303
- expect(isDurationComponentList('0s 0.000s').reason).toBe('unexpected-token');
304
- expect(isDurationComponentList('0.000s 0s').reason).toBe('duplicated');
305
- expect(isDurationComponentList('0w0d0h0m0.000s').matched).toBe(true);
306
- expect(isDurationComponentList('0w 0d 0h 0m 0.000s').matched).toBe(true);
307
- expect(isDurationComponentList('0w 0d0h 0m0.000s').matched).toBe(true);
308
- expect(isDurationComponentList(' 2w 3d6m 3.4s 93xxxxxxx').reason).toBe('unexpected-token');
273
+ expect(isDurationComponentList('').reason).toBe('empty-token');
274
+ expect(isDurationComponentList(' ').reason).toBe('missing-token');
275
+ expect(isDurationComponentList(' a').reason).toBe('unexpected-token');
276
+ expect(isDurationComponentList(' 0').reason).toBe('missing-token');
277
+ expect(isDurationComponentList(' 0a').reason).toBe('unexpected-token');
278
+ expect(isDurationComponentList(' 0w').matched).toBe(true);
279
+ expect(isDurationComponentList(' 0ww').reason).toBe('unexpected-token');
280
+ expect(isDurationComponentList('0w').matched).toBe(true);
281
+ expect(isDurationComponentList('0w ').matched).toBe(true);
282
+ expect(isDurationComponentList('0w 0').reason).toBe('missing-token');
283
+ expect(isDurationComponentList('0w 0w').reason).toBe('duplicated');
284
+ expect(isDurationComponentList('0w 0d').matched).toBe(true);
285
+ expect(isDurationComponentList('0w 0d').matched).toBe(true);
286
+ expect(isDurationComponentList(' 0w 0d').matched).toBe(true);
287
+ expect(isDurationComponentList(' 0w 0d ').matched).toBe(true);
288
+ expect(isDurationComponentList('0w 0d ').matched).toBe(true);
289
+ expect(isDurationComponentList('\n0w\n0d\n').matched).toBe(true);
290
+ expect(isDurationComponentList('0w 0.').reason).toBe('missing-token');
291
+ expect(isDurationComponentList('0w 0.0').reason).toBe('missing-token');
292
+ expect(isDurationComponentList('0w 0.0s').matched).toBe(true);
293
+ expect(isDurationComponentList('0w 0.0d').reason).toBe('unexpected-token');
294
+ expect(isDurationComponentList('0s 0.').reason).toBe('unexpected-token');
295
+ expect(isDurationComponentList('0s 0.0').reason).toBe('unexpected-token');
296
+ expect(isDurationComponentList('0s 0.0s').reason).toBe('unexpected-token');
297
+ expect(isDurationComponentList('0w 0.00s').matched).toBe(true);
298
+ expect(isDurationComponentList('0w 0.000s').matched).toBe(true);
299
+ expect(isDurationComponentList('0w 0.0000s').reason).toStrictEqual({
300
+ gte: 1,
301
+ lte: 3,
302
+ type: 'out-of-range-length-digit',
303
+ });
304
+ expect(isDurationComponentList('0s 0.000s').reason).toBe('unexpected-token');
305
+ expect(isDurationComponentList('0.000s 0s').reason).toBe('duplicated');
306
+ expect(isDurationComponentList('0w0d0h0m0.000s').matched).toBe(true);
307
+ expect(isDurationComponentList('0w 0d 0h 0m 0.000s').matched).toBe(true);
308
+ expect(isDurationComponentList('0w 0d0h 0m0.000s').matched).toBe(true);
309
+ expect(isDurationComponentList(' 2w 3d6m 3.4s 93xxxxxxx').reason).toBe('unexpected-token');
309
310
  });
310
311
  test('date-time', () => {
311
- expect(isDateTime('200-1-1').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 4 });
312
- expect(isDateTime('2001-02-29').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 28 });
313
- expect(isDateTime('2001-02-28T').reason).toBe('missing-token');
314
- expect(isDateTime('2001-02-28T00').reason).toBe('missing-token');
315
- expect(isDateTime('2001-02-28T00:0').reason).toStrictEqual({ gte: 2, lte: 2, type: 'out-of-range-length-digit' });
316
- expect(isDateTime('2000-01-01T00:00:00.000+0000a').reason).toBe('extra-token');
317
- expect(isDateTime('P0DT0M0H').reason).toBe('unexpected-token');
312
+ expect(isDateTime('200-1-1').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 4 });
313
+ expect(isDateTime('2001-02-29').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 28 });
314
+ expect(isDateTime('2001-02-28T').reason).toBe('missing-token');
315
+ expect(isDateTime('2001-02-28T00').reason).toBe('missing-token');
316
+ expect(isDateTime('2001-02-28T00:0').reason).toStrictEqual({ gte: 2, lte: 2, type: 'out-of-range-length-digit' });
317
+ expect(isDateTime('2000-01-01T00:00:00.000+0000a').reason).toBe('extra-token');
318
+ expect(isDateTime('P0DT0M0H').reason).toBe('unexpected-token');
318
319
  });