chrono-node 2.3.0 → 2.3.4
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.
- package/benchmark/benchmark.js +4 -0
- package/dist/common/casualReferences.js +3 -1
- package/dist/common/refiners/ForwardDateRefiner.js +1 -1
- package/dist/locales/de/constants.js +1 -1
- package/dist/locales/en/constants.d.ts +1 -1
- package/dist/locales/en/constants.js +5 -5
- package/dist/locales/en/parsers/ENCasualTimeParser.js +1 -1
- package/dist/locales/en/parsers/ENMonthNameLittleEndianParser.js +6 -8
- package/dist/locales/en/parsers/ENRelativeDateFormatParser.js +3 -3
- package/dist/locales/en/parsers/ENTimeUnitAgoFormatParser.js +3 -3
- package/dist/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +1 -1
- package/dist/locales/en/parsers/ENTimeUnitLaterFormatParser.js +2 -2
- package/dist/locales/en/parsers/ENTimeUnitWithinFormatParser.js +1 -1
- package/dist/locales/fr/constants.js +1 -1
- package/dist/locales/fr/parsers/FRTimeUnitAgoFormatParser.js +1 -1
- package/dist/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js +1 -1
- package/dist/locales/fr/parsers/FRTimeUnitWithinFormatParser.js +1 -1
- package/dist/locales/nl/constants.js +8 -5
- package/dist/locales/nl/index.js +12 -3
- package/dist/locales/nl/parsers/NLRelativeDateFormatParser.d.ts +7 -0
- package/dist/locales/nl/parsers/NLRelativeDateFormatParser.js +57 -0
- package/dist/locales/nl/parsers/NLTimeExpressionParser.d.ts +1 -0
- package/dist/locales/nl/parsers/NLTimeExpressionParser.js +3 -0
- package/dist/locales/nl/parsers/NLTimeUnitAgoFormatParser.d.ts +9 -0
- package/dist/locales/nl/parsers/NLTimeUnitAgoFormatParser.js +23 -0
- package/dist/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.d.ts +7 -0
- package/dist/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js +25 -0
- package/dist/locales/nl/parsers/NLTimeUnitLaterFormatParser.d.ts +9 -0
- package/dist/locales/nl/parsers/NLTimeUnitLaterFormatParser.js +22 -0
- package/dist/locales/nl/parsers/NLTimeUnitWithinFormatParser.js +1 -1
- package/dist/results.d.ts +2 -2
- package/dist/results.js +18 -12
- package/dist/timezone.d.ts +1 -1
- package/dist/timezone.js +3 -0
- package/dist/utils/pattern.js +1 -1
- package/package.json +1 -1
- package/src/common/casualReferences.ts +3 -1
- package/src/common/refiners/ForwardDateRefiner.ts +1 -1
- package/src/locales/de/constants.ts +1 -1
- package/src/locales/en/constants.ts +5 -5
- package/src/locales/en/parsers/ENCasualTimeParser.ts +1 -1
- package/src/locales/en/parsers/ENMonthNameLittleEndianParser.ts +9 -10
- package/src/locales/en/parsers/ENRelativeDateFormatParser.ts +3 -3
- package/src/locales/en/parsers/ENTimeUnitAgoFormatParser.ts +3 -4
- package/src/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.ts +1 -1
- package/src/locales/en/parsers/ENTimeUnitLaterFormatParser.ts +2 -2
- package/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts +1 -1
- package/src/locales/fr/constants.ts +1 -1
- package/src/locales/fr/parsers/FRTimeUnitAgoFormatParser.ts +1 -1
- package/src/locales/fr/parsers/FRTimeUnitRelativeFormatParser.ts +1 -1
- package/src/locales/fr/parsers/FRTimeUnitWithinFormatParser.ts +1 -1
- package/src/locales/nl/constants.ts +11 -5
- package/src/locales/nl/index.ts +12 -3
- package/src/locales/nl/parsers/NLRelativeDateFormatParser.ts +70 -0
- package/src/locales/nl/parsers/NLTimeExpressionParser.ts +4 -0
- package/src/locales/nl/parsers/NLTimeUnitAgoFormatParser.ts +26 -0
- package/src/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.ts +27 -0
- package/src/locales/nl/parsers/NLTimeUnitLaterFormatParser.ts +27 -0
- package/src/locales/nl/parsers/NLTimeUnitWithinFormatParser.ts +1 -1
- package/src/results.ts +22 -12
- package/src/timezone.ts +5 -1
- package/src/utils/pattern.ts +1 -1
- package/test/en/en_casual.test.ts +11 -0
- package/test/en/en_month_name_little_endian.test.ts +10 -0
- package/test/en/en_relative.test.ts +8 -0
- package/test/en/en_slash.test.ts +11 -0
- package/test/en/en_timezone_exp.test.ts +85 -10
- package/test/en/en_weekday.test.ts +69 -25
- package/test/en/negative_cases.test.ts +2 -0
- package/test/nl/nl_relative.test.ts +212 -0
- package/test/nl/nl_time_units_ago.test.ts +243 -0
- package/test/nl/nl_time_units_casual_relative.test.ts +130 -0
- package/test/nl/nl_time_units_later.test.ts +250 -0
- package/test/test_util.ts +5 -2
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import * as chrono from "../../src/";
|
|
2
|
+
import { testSingleCase, testUnexpectedResult } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Single Expression", function () {
|
|
5
|
+
// 5 days ago, we did something
|
|
6
|
+
testSingleCase(chrono.nl, "5 dagen geleden, hebben we wat gedaan", new Date(2012, 7, 10), (result) => {
|
|
7
|
+
expect(result.start).not.toBeNull();
|
|
8
|
+
expect(result.start.get("year")).toBe(2012);
|
|
9
|
+
expect(result.start.get("month")).toBe(8);
|
|
10
|
+
expect(result.start.get("day")).toBe(5);
|
|
11
|
+
|
|
12
|
+
expect(result.index).toBe(0);
|
|
13
|
+
expect(result.text).toBe("5 dagen geleden");
|
|
14
|
+
|
|
15
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 5));
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
// 10 days ago, we did something
|
|
19
|
+
testSingleCase(chrono.nl, "10 dagen geleden, hebben we wat gedaan", new Date(2012, 7, 10), (result) => {
|
|
20
|
+
expect(result.start).not.toBeNull();
|
|
21
|
+
expect(result.start.get("year")).toBe(2012);
|
|
22
|
+
expect(result.start.get("month")).toBe(7);
|
|
23
|
+
expect(result.start.get("day")).toBe(31);
|
|
24
|
+
|
|
25
|
+
expect(result.index).toBe(0);
|
|
26
|
+
expect(result.text).toBe("10 dagen geleden");
|
|
27
|
+
|
|
28
|
+
expect(result.start).toBeDate(new Date(2012, 7 - 1, 31));
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// 15 minute ago
|
|
32
|
+
testSingleCase(chrono.nl, "15 minuten geleden", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
33
|
+
expect(result.index).toBe(0);
|
|
34
|
+
expect(result.text).toBe("15 minuten geleden");
|
|
35
|
+
expect(result.start.get("hour")).toBe(11);
|
|
36
|
+
expect(result.start.get("minute")).toBe(59);
|
|
37
|
+
|
|
38
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// 15 minute earlier
|
|
42
|
+
testSingleCase(chrono.nl, "15 minuten eerder", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
43
|
+
expect(result.index).toBe(0);
|
|
44
|
+
expect(result.text).toBe("15 minuten eerder");
|
|
45
|
+
expect(result.start.get("hour")).toBe(11);
|
|
46
|
+
expect(result.start.get("minute")).toBe(59);
|
|
47
|
+
|
|
48
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// 15 minute before
|
|
52
|
+
testSingleCase(chrono.nl, "15 minuten voor", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
53
|
+
expect(result.index).toBe(0);
|
|
54
|
+
expect(result.text).toBe("15 minuten voor");
|
|
55
|
+
expect(result.start.get("hour")).toBe(11);
|
|
56
|
+
expect(result.start.get("minute")).toBe(59);
|
|
57
|
+
|
|
58
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// 12 hours ago
|
|
62
|
+
testSingleCase(chrono.nl, " 12 uur geleden", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
63
|
+
expect(result.index).toBe(3);
|
|
64
|
+
expect(result.text).toBe("12 uur geleden");
|
|
65
|
+
expect(result.start.get("hour")).toBe(0);
|
|
66
|
+
expect(result.start.get("minute")).toBe(14);
|
|
67
|
+
|
|
68
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 14));
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
// 1h ago
|
|
72
|
+
testSingleCase(chrono.nl, "1u geleden", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
73
|
+
expect(result.index).toBe(0);
|
|
74
|
+
expect(result.text).toBe("1u geleden");
|
|
75
|
+
expect(result.start.get("hour")).toBe(11);
|
|
76
|
+
expect(result.start.get("minute")).toBe(14);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
// half an hour ago
|
|
80
|
+
testSingleCase(chrono.nl, " half uur geleden", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
81
|
+
expect(result.index).toBe(3);
|
|
82
|
+
expect(result.text).toBe("half uur geleden");
|
|
83
|
+
expect(result.start.get("hour")).toBe(11);
|
|
84
|
+
expect(result.start.get("minute")).toBe(44);
|
|
85
|
+
|
|
86
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 44));
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
// 12 hours ago I did something
|
|
90
|
+
testSingleCase(chrono.nl, "12 uur geleden deed ik iets", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
91
|
+
expect(result.index).toBe(0);
|
|
92
|
+
expect(result.text).toBe("12 uur geleden");
|
|
93
|
+
expect(result.start.get("hour")).toBe(0);
|
|
94
|
+
expect(result.start.get("minute")).toBe(14);
|
|
95
|
+
|
|
96
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 14));
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
// 12 seconds ago I did something
|
|
100
|
+
testSingleCase(chrono.nl, "12 seconden geleden deed ik iets", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
101
|
+
expect(result.index).toBe(0);
|
|
102
|
+
expect(result.text).toBe("12 seconden geleden");
|
|
103
|
+
expect(result.start.get("hour")).toBe(12);
|
|
104
|
+
expect(result.start.get("minute")).toBe(13);
|
|
105
|
+
expect(result.start.get("second")).toBe(48);
|
|
106
|
+
|
|
107
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13, 48));
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
// three seconds ago I did something
|
|
111
|
+
testSingleCase(chrono.nl, "drie seconden geleden deed ik iets", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
112
|
+
expect(result.index).toBe(0);
|
|
113
|
+
expect(result.text).toBe("drie seconden geleden");
|
|
114
|
+
expect(result.start.get("hour")).toBe(12);
|
|
115
|
+
expect(result.start.get("minute")).toBe(13);
|
|
116
|
+
expect(result.start.get("second")).toBe(57);
|
|
117
|
+
|
|
118
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13, 57));
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// 5 Days ago, we did something
|
|
122
|
+
testSingleCase(chrono.nl, "5 dagen geleden, hebben we iets gedaan", new Date(2012, 7, 10), (result) => {
|
|
123
|
+
expect(result.start).not.toBeNull();
|
|
124
|
+
expect(result.start.get("year")).toBe(2012);
|
|
125
|
+
expect(result.start.get("month")).toBe(8);
|
|
126
|
+
expect(result.start.get("day")).toBe(5);
|
|
127
|
+
|
|
128
|
+
expect(result.index).toBe(0);
|
|
129
|
+
expect(result.text).toBe("5 dagen geleden");
|
|
130
|
+
|
|
131
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 5));
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
// A days ago, we did something
|
|
135
|
+
testSingleCase(chrono.nl, "Een dag geleden, hebben we wat gedaan", new Date(2012, 7, 10), (result) => {
|
|
136
|
+
expect(result.start).not.toBeNull();
|
|
137
|
+
expect(result.start.get("year")).toBe(2012);
|
|
138
|
+
expect(result.start.get("month")).toBe(8);
|
|
139
|
+
expect(result.start.get("day")).toBe(9);
|
|
140
|
+
|
|
141
|
+
expect(result.index).toBe(0);
|
|
142
|
+
expect(result.text).toBe("Een dag geleden");
|
|
143
|
+
|
|
144
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 9));
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
// a min before
|
|
148
|
+
testSingleCase(chrono.nl, "een minuut geleden", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
149
|
+
expect(result.index).toBe(0);
|
|
150
|
+
expect(result.text).toBe("een minuut geleden");
|
|
151
|
+
expect(result.start.get("hour")).toBe(12);
|
|
152
|
+
expect(result.start.get("minute")).toBe(13);
|
|
153
|
+
|
|
154
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13));
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
test("Test - Single Expression (Casual)", function () {
|
|
159
|
+
// 5 months ago, we did something
|
|
160
|
+
testSingleCase(chrono.nl, "5 maanden geleden, hebben we iets gedaan", new Date(2012, 8 - 1, 10), (result) => {
|
|
161
|
+
expect(result.start).not.toBeNull();
|
|
162
|
+
expect(result.start.get("year")).toBe(2012);
|
|
163
|
+
expect(result.start.get("month")).toBe(3);
|
|
164
|
+
expect(result.start.get("day")).toBe(10);
|
|
165
|
+
|
|
166
|
+
expect(result.index).toBe(0);
|
|
167
|
+
expect(result.text).toBe("5 maanden geleden");
|
|
168
|
+
|
|
169
|
+
expect(result.start).toBeDate(new Date(2012, 3 - 1, 10));
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
// 5 years ago, we did something
|
|
173
|
+
testSingleCase(chrono.nl, "5 jaar geleden, hebben we iets gedaan", new Date(2012, 8 - 1, 10), (result) => {
|
|
174
|
+
expect(result.start).not.toBeNull();
|
|
175
|
+
expect(result.start.get("year")).toBe(2007);
|
|
176
|
+
expect(result.start.get("month")).toBe(8);
|
|
177
|
+
expect(result.start.get("day")).toBe(10);
|
|
178
|
+
|
|
179
|
+
expect(result.index).toBe(0);
|
|
180
|
+
expect(result.text).toBe("5 jaar geleden");
|
|
181
|
+
|
|
182
|
+
expect(result.start).toBeDate(new Date(2007, 8 - 1, 10));
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
// a week ago, we did something
|
|
186
|
+
testSingleCase(chrono.nl, "een week geleden, hebben we iets gedaan", new Date(2012, 8 - 1, 3), (result) => {
|
|
187
|
+
expect(result.start).not.toBeNull();
|
|
188
|
+
expect(result.start.get("year")).toBe(2012);
|
|
189
|
+
expect(result.start.get("month")).toBe(7);
|
|
190
|
+
expect(result.start.get("day")).toBe(27);
|
|
191
|
+
|
|
192
|
+
expect(result.index).toBe(0);
|
|
193
|
+
expect(result.text).toBe("een week geleden");
|
|
194
|
+
|
|
195
|
+
expect(result.start).toBeDate(new Date(2012, 7 - 1, 27));
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
// a couple of days ago, we did something
|
|
199
|
+
testSingleCase(chrono.nl, "paar dagen geleden, hebben we iets gedaan", new Date(2012, 8 - 1, 2), (result) => {
|
|
200
|
+
expect(result.start).not.toBeNull();
|
|
201
|
+
expect(result.start.get("year")).toBe(2012);
|
|
202
|
+
expect(result.start.get("month")).toBe(7);
|
|
203
|
+
expect(result.start.get("day")).toBe(31);
|
|
204
|
+
|
|
205
|
+
expect(result.index).toBe(0);
|
|
206
|
+
expect(result.text).toBe("paar dagen geleden");
|
|
207
|
+
|
|
208
|
+
expect(result.start).toBeDate(new Date(2012, 7 - 1, 31));
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
test("Test - Nested time ago", function () {
|
|
213
|
+
// 15 hours 29 min ago
|
|
214
|
+
testSingleCase(chrono.nl, "15 uur 29 minuten geleden", new Date(2012, 7, 10, 22, 30), (result) => {
|
|
215
|
+
expect(result.text).toBe("15 uur 29 minuten geleden");
|
|
216
|
+
expect(result.start.get("day")).toBe(10);
|
|
217
|
+
expect(result.start.get("hour")).toBe(7);
|
|
218
|
+
expect(result.start.get("minute")).toBe(1);
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
// 1 day 21 hours ago
|
|
222
|
+
testSingleCase(chrono.nl, "1 dag 21 uur geleden ", new Date(2012, 7, 10, 22, 30), (result) => {
|
|
223
|
+
expect(result.text).toBe("1 dag 21 uur geleden");
|
|
224
|
+
expect(result.start.get("day")).toBe(9);
|
|
225
|
+
expect(result.start.get("hour")).toBe(1);
|
|
226
|
+
expect(result.start.get("minute")).toBe(30);
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
// 3 min 49 sec ago
|
|
230
|
+
testSingleCase(chrono.nl, "3 min 49 sec geleden ", new Date(2012, 7, 10, 22, 30), (result) => {
|
|
231
|
+
expect(result.text).toBe("3 min 49 sec geleden");
|
|
232
|
+
expect(result.start.get("day")).toBe(10);
|
|
233
|
+
expect(result.start.get("hour")).toBe(22);
|
|
234
|
+
expect(result.start.get("minute")).toBe(26);
|
|
235
|
+
expect(result.start.get("second")).toBe(11);
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
test("Test - Negative cases", function () {
|
|
240
|
+
testUnexpectedResult(chrono, "15 uur 29 min");
|
|
241
|
+
testUnexpectedResult(chrono, "een paar uur");
|
|
242
|
+
testUnexpectedResult(chrono, "5 dagen");
|
|
243
|
+
});
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import * as chrono from "../../src";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Positive time units", () => {
|
|
5
|
+
// next 2 weeks
|
|
6
|
+
testSingleCase(chrono.nl, "komende 2 weken", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
|
7
|
+
expect(result.text).toBe(text);
|
|
8
|
+
expect(result.start.get("year")).toBe(2016);
|
|
9
|
+
expect(result.start.get("month")).toBe(10);
|
|
10
|
+
expect(result.start.get("day")).toBe(15);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
// next 2 days
|
|
14
|
+
testSingleCase(chrono.nl, "komende 2 dagen", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
|
15
|
+
expect(result.text).toBe(text);
|
|
16
|
+
expect(result.start.get("year")).toBe(2016);
|
|
17
|
+
expect(result.start.get("month")).toBe(10);
|
|
18
|
+
expect(result.start.get("day")).toBe(3);
|
|
19
|
+
expect(result.start.get("hour")).toBe(12);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// next two years
|
|
23
|
+
testSingleCase(chrono.nl, "komende 2 jaar", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
|
24
|
+
expect(result.text).toBe(text);
|
|
25
|
+
expect(result.start.get("year")).toBe(2018);
|
|
26
|
+
expect(result.start.get("month")).toBe(10);
|
|
27
|
+
expect(result.start.get("day")).toBe(1);
|
|
28
|
+
expect(result.start.get("hour")).toBe(12);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// next 2 weeks 3 days
|
|
32
|
+
testSingleCase(chrono.nl, "komende 2 weken 3 dagen", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
|
33
|
+
expect(result.text).toBe(text);
|
|
34
|
+
expect(result.start.get("year")).toBe(2016);
|
|
35
|
+
expect(result.start.get("month")).toBe(10);
|
|
36
|
+
expect(result.start.get("day")).toBe(18);
|
|
37
|
+
expect(result.start.get("hour")).toBe(12);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test("Test - Negative time units", () => {
|
|
42
|
+
// last 2 weeks
|
|
43
|
+
testSingleCase(chrono.nl, "afgelopen 2 weken", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
|
44
|
+
expect(result.text).toBe(text);
|
|
45
|
+
expect(result.start.get("year")).toBe(2016);
|
|
46
|
+
expect(result.start.get("month")).toBe(9);
|
|
47
|
+
expect(result.start.get("day")).toBe(17);
|
|
48
|
+
expect(result.start.get("hour")).toBe(12);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// last two weeks
|
|
52
|
+
testSingleCase(chrono.nl, "afgelopen twee weken", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
|
53
|
+
expect(result.text).toBe(text);
|
|
54
|
+
expect(result.start.get("year")).toBe(2016);
|
|
55
|
+
expect(result.start.get("month")).toBe(9);
|
|
56
|
+
expect(result.start.get("day")).toBe(17);
|
|
57
|
+
expect(result.start.get("hour")).toBe(12);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// past 2 days
|
|
61
|
+
testSingleCase(chrono.nl, "afgelopen 2 dagen", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
|
62
|
+
expect(result.text).toBe(text);
|
|
63
|
+
expect(result.start.get("year")).toBe(2016);
|
|
64
|
+
expect(result.start.get("month")).toBe(9);
|
|
65
|
+
expect(result.start.get("day")).toBe(29);
|
|
66
|
+
expect(result.start.get("hour")).toBe(12);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
// +2 months, 5 days
|
|
70
|
+
testSingleCase(chrono.nl, "+2 maanden 5 dagen", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
|
71
|
+
expect(result.text).toBe(text);
|
|
72
|
+
expect(result.start.get("year")).toBe(2016);
|
|
73
|
+
expect(result.start.get("month")).toBe(12);
|
|
74
|
+
expect(result.start.get("day")).toBe(6);
|
|
75
|
+
expect(result.start.get("hour")).toBe(12);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
test("Test - Plus '+' sign", () => {
|
|
80
|
+
//+15 minutes
|
|
81
|
+
testSingleCase(chrono.nl.casual, "+15 minuten", new Date(2012, 7 - 1, 10, 12, 14), (result, text) => {
|
|
82
|
+
expect(result.text).toBe(text);
|
|
83
|
+
expect(result.start.get("hour")).toBe(12);
|
|
84
|
+
expect(result.start.get("minute")).toBe(29);
|
|
85
|
+
|
|
86
|
+
expect(result.start).toBeDate(new Date(2012, 7 - 1, 10, 12, 29));
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
testSingleCase(chrono.nl.casual, "+15min", new Date(2012, 7 - 1, 10, 12, 14), (result, text) => {
|
|
90
|
+
expect(result.text).toBe(text);
|
|
91
|
+
expect(result.start.get("hour")).toBe(12);
|
|
92
|
+
expect(result.start.get("minute")).toBe(29);
|
|
93
|
+
|
|
94
|
+
expect(result.start).toBeDate(new Date(2012, 7 - 1, 10, 12, 29));
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
// +1 day 2 hour
|
|
98
|
+
testSingleCase(chrono.nl.casual, "+1 dag 2 uur", new Date(2012, 7 - 1, 10, 12, 14), (result, text) => {
|
|
99
|
+
expect(result.text).toBe(text);
|
|
100
|
+
expect(result.start.get("day")).toBe(11);
|
|
101
|
+
expect(result.start.get("hour")).toBe(14);
|
|
102
|
+
expect(result.start.get("minute")).toBe(14);
|
|
103
|
+
|
|
104
|
+
expect(result.start).toBeDate(new Date(2012, 7 - 1, 11, 14, 14));
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
test("Test - Minus '-' sign", () => {
|
|
109
|
+
// -3y
|
|
110
|
+
testSingleCase(chrono.nl.casual, "-3jr", new Date(2015, 7 - 1, 10, 12, 14), (result, text) => {
|
|
111
|
+
expect(result.text).toBe(text);
|
|
112
|
+
expect(result.start.get("year")).toBe(2012);
|
|
113
|
+
expect(result.start.get("month")).toBe(7);
|
|
114
|
+
expect(result.start.get("day")).toBe(10);
|
|
115
|
+
expect(result.start.get("hour")).toBe(12);
|
|
116
|
+
expect(result.start.get("minute")).toBe(14);
|
|
117
|
+
|
|
118
|
+
expect(result.start).toBeDate(new Date(2012, 7 - 1, 10, 12, 14));
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// -2hr5min
|
|
122
|
+
testSingleCase(chrono.nl, "-2u5min", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
|
123
|
+
expect(result.text).toBe(text);
|
|
124
|
+
expect(result.start.get("year")).toBe(2016);
|
|
125
|
+
expect(result.start.get("month")).toBe(10);
|
|
126
|
+
expect(result.start.get("day")).toBe(1);
|
|
127
|
+
expect(result.start.get("hour")).toBe(9);
|
|
128
|
+
expect(result.start.get("minute")).toBe(55);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import * as chrono from "../../src/";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Later Expression", function () {
|
|
5
|
+
// 2 days later
|
|
6
|
+
testSingleCase(chrono.nl, "2 dagen later", new Date(2012, 7, 10, 12), (result) => {
|
|
7
|
+
expect(result.start).not.toBeNull();
|
|
8
|
+
expect(result.start.get("year")).toBe(2012);
|
|
9
|
+
expect(result.start.get("month")).toBe(8);
|
|
10
|
+
expect(result.start.get("day")).toBe(12);
|
|
11
|
+
|
|
12
|
+
expect(result.index).toBe(0);
|
|
13
|
+
expect(result.text).toBe("2 dagen later");
|
|
14
|
+
|
|
15
|
+
expect(result.start.isCertain("day")).toBe(true);
|
|
16
|
+
expect(result.start.isCertain("month")).toBe(true);
|
|
17
|
+
|
|
18
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 12, 12));
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// 5 minutes later
|
|
22
|
+
testSingleCase(chrono.nl, "5 minuten later", new Date(2012, 7, 10, 10, 0), (result) => {
|
|
23
|
+
expect(result.start).not.toBeNull();
|
|
24
|
+
expect(result.start.get("year")).toBe(2012);
|
|
25
|
+
expect(result.start.get("month")).toBe(8);
|
|
26
|
+
expect(result.start.get("day")).toBe(10);
|
|
27
|
+
expect(result.start.get("hour")).toBe(10);
|
|
28
|
+
expect(result.start.get("minute")).toBe(5);
|
|
29
|
+
|
|
30
|
+
expect(result.index).toBe(0);
|
|
31
|
+
expect(result.text).toBe("5 minuten later");
|
|
32
|
+
|
|
33
|
+
expect(result.start.isCertain("hour")).toBe(true);
|
|
34
|
+
expect(result.start.isCertain("minute")).toBe(true);
|
|
35
|
+
|
|
36
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 10, 5));
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
// 3 week later
|
|
40
|
+
testSingleCase(chrono.nl, "3 weken later", new Date(2012, 7 - 1, 10, 10, 0), (result) => {
|
|
41
|
+
expect(result.start).not.toBeNull();
|
|
42
|
+
expect(result.start.get("year")).toBe(2012);
|
|
43
|
+
expect(result.start.get("month")).toBe(7);
|
|
44
|
+
expect(result.start.get("day")).toBe(31);
|
|
45
|
+
|
|
46
|
+
expect(result.index).toBe(0);
|
|
47
|
+
expect(result.text).toBe("3 weken later");
|
|
48
|
+
|
|
49
|
+
expect(result.start).toBeDate(new Date(2012, 7 - 1, 31, 10, 0));
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test("Test - From now Expression", () => {
|
|
54
|
+
// 5 days from now, we did something
|
|
55
|
+
testSingleCase(chrono.nl, "5 dagen vanaf nu we hebben iets gedaan", new Date(2012, 7, 10), (result) => {
|
|
56
|
+
expect(result.start).not.toBeNull();
|
|
57
|
+
expect(result.start.get("year")).toBe(2012);
|
|
58
|
+
expect(result.start.get("month")).toBe(8);
|
|
59
|
+
expect(result.start.get("day")).toBe(15);
|
|
60
|
+
|
|
61
|
+
expect(result.index).toBe(0);
|
|
62
|
+
expect(result.text).toBe("5 dagen vanaf nu");
|
|
63
|
+
|
|
64
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 15));
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// 10 days from now, we did something
|
|
68
|
+
testSingleCase(chrono.nl, "10 dagen vanaf nu we hebben iets gedaan", new Date(2012, 7, 10), (result) => {
|
|
69
|
+
expect(result.start).not.toBeNull();
|
|
70
|
+
expect(result.start.get("year")).toBe(2012);
|
|
71
|
+
expect(result.start.get("month")).toBe(8);
|
|
72
|
+
expect(result.start.get("day")).toBe(20);
|
|
73
|
+
|
|
74
|
+
expect(result.index).toBe(0);
|
|
75
|
+
expect(result.text).toBe("10 dagen vanaf nu");
|
|
76
|
+
|
|
77
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 20));
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
// 15 minute from now
|
|
81
|
+
testSingleCase(chrono.nl, "15 minuten vanaf nu", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
82
|
+
expect(result.index).toBe(0);
|
|
83
|
+
expect(result.text).toBe("15 minuten vanaf nu");
|
|
84
|
+
expect(result.start.get("hour")).toBe(12);
|
|
85
|
+
expect(result.start.get("minute")).toBe(29);
|
|
86
|
+
|
|
87
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 29));
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// 15 minutes earlier
|
|
91
|
+
testSingleCase(chrono.nl, "15 minuten eerder", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
92
|
+
expect(result.index).toBe(0);
|
|
93
|
+
expect(result.text).toBe("15 minuten eerder");
|
|
94
|
+
expect(result.start.get("hour")).toBe(11);
|
|
95
|
+
expect(result.start.get("minute")).toBe(59);
|
|
96
|
+
|
|
97
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
// 15 minute out
|
|
101
|
+
testSingleCase(chrono.nl, "15 minuten uit", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
102
|
+
expect(result.index).toBe(0);
|
|
103
|
+
expect(result.text).toBe("15 minuten uit");
|
|
104
|
+
expect(result.start.get("hour")).toBe(12);
|
|
105
|
+
expect(result.start.get("minute")).toBe(29);
|
|
106
|
+
|
|
107
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 29));
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
// 12 hours from now
|
|
111
|
+
testSingleCase(chrono.nl, " 12 uur vanaf nu", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
112
|
+
expect(result.index).toBe(3);
|
|
113
|
+
expect(result.text).toBe("12 uur vanaf nu");
|
|
114
|
+
expect(result.start.get("day")).toBe(11);
|
|
115
|
+
expect(result.start.get("hour")).toBe(0);
|
|
116
|
+
expect(result.start.get("minute")).toBe(14);
|
|
117
|
+
|
|
118
|
+
expect(result.start).toBeDate(new Date(2012, 7, 11, 0, 14));
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// half an hour from now
|
|
122
|
+
testSingleCase(chrono.nl, " half uur vanaf nu", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
123
|
+
expect(result.text).toBe("half uur vanaf nu");
|
|
124
|
+
expect(result.index).toBe(3);
|
|
125
|
+
expect(result.start.get("hour")).toBe(12);
|
|
126
|
+
expect(result.start.get("minute")).toBe(44);
|
|
127
|
+
|
|
128
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 44));
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// 12 hours from now I did something
|
|
132
|
+
testSingleCase(chrono.nl, "Over 12 uur heb ik iets gedaan", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
133
|
+
expect(result.index).toBe(0);
|
|
134
|
+
expect(result.text).toBe("Over 12 uur");
|
|
135
|
+
expect(result.start.get("day")).toBe(11);
|
|
136
|
+
expect(result.start.get("hour")).toBe(0);
|
|
137
|
+
expect(result.start.get("minute")).toBe(14);
|
|
138
|
+
|
|
139
|
+
expect(result.start).toBeDate(new Date(2012, 7, 11, 0, 14));
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
// 12 seconds from now I did something
|
|
143
|
+
testSingleCase(chrono.nl, "Over 12 seconden heb ik iets gedaan", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
144
|
+
expect(result.index).toBe(0);
|
|
145
|
+
expect(result.text).toBe("Over 12 seconden");
|
|
146
|
+
expect(result.start.get("hour")).toBe(12);
|
|
147
|
+
expect(result.start.get("minute")).toBe(14);
|
|
148
|
+
expect(result.start.get("second")).toBe(12);
|
|
149
|
+
|
|
150
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 14, 12));
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
// three seconds from now I did something
|
|
154
|
+
testSingleCase(chrono.nl, "over drie seconden heb ik iets gedaan", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
155
|
+
expect(result.index).toBe(0);
|
|
156
|
+
expect(result.text).toBe("over drie seconden");
|
|
157
|
+
expect(result.start.get("hour")).toBe(12);
|
|
158
|
+
expect(result.start.get("minute")).toBe(14);
|
|
159
|
+
expect(result.start.get("second")).toBe(3);
|
|
160
|
+
|
|
161
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 14, 3));
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
// 5 Days from now, we did something
|
|
165
|
+
testSingleCase(chrono.nl, "Over 5 dagen hebben we iets gedaan", new Date(2012, 7, 10), (result) => {
|
|
166
|
+
expect(result.start).not.toBeNull();
|
|
167
|
+
expect(result.start.get("year")).toBe(2012);
|
|
168
|
+
expect(result.start.get("month")).toBe(8);
|
|
169
|
+
expect(result.start.get("day")).toBe(15);
|
|
170
|
+
|
|
171
|
+
expect(result.index).toBe(0);
|
|
172
|
+
expect(result.text).toBe("Over 5 dagen");
|
|
173
|
+
|
|
174
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 15));
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
// half An hour from now
|
|
178
|
+
testSingleCase(chrono.nl, " half uur vanaf nu", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
179
|
+
expect(result.index).toBe(3);
|
|
180
|
+
expect(result.text).toBe("half uur vanaf nu");
|
|
181
|
+
expect(result.start.get("hour")).toBe(12);
|
|
182
|
+
expect(result.start.get("minute")).toBe(44);
|
|
183
|
+
|
|
184
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 44));
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
// A days from now, we did something
|
|
188
|
+
testSingleCase(chrono.nl, "Over een dag hebben we iets gedaan", new Date(2012, 7, 10), (result) => {
|
|
189
|
+
expect(result.start).not.toBeNull();
|
|
190
|
+
expect(result.start.get("year")).toBe(2012);
|
|
191
|
+
expect(result.start.get("month")).toBe(8);
|
|
192
|
+
expect(result.start.get("day")).toBe(11);
|
|
193
|
+
|
|
194
|
+
expect(result.index).toBe(0);
|
|
195
|
+
expect(result.text).toBe("Over een dag");
|
|
196
|
+
|
|
197
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 11));
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// a min out
|
|
201
|
+
testSingleCase(chrono.nl, "een minuutje uit", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
202
|
+
expect(result.index).toBe(0);
|
|
203
|
+
expect(result.text).toBe("een minuutje uit");
|
|
204
|
+
expect(result.start.get("hour")).toBe(12);
|
|
205
|
+
expect(result.start.get("minute")).toBe(15);
|
|
206
|
+
|
|
207
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 15));
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
// in 1 hour
|
|
211
|
+
testSingleCase(chrono.nl, "in 1 uur", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
212
|
+
expect(result.index).toBe(0);
|
|
213
|
+
expect(result.text).toBe("in 1 uur");
|
|
214
|
+
expect(result.start.get("hour")).toBe(13);
|
|
215
|
+
expect(result.start.get("minute")).toBe(14);
|
|
216
|
+
|
|
217
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 13, 14));
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
// in 1.5 hours
|
|
221
|
+
testSingleCase(chrono.nl, "over 1,5 uur", new Date(2012, 7, 10, 12, 40), (result) => {
|
|
222
|
+
expect(result.index).toBe(0);
|
|
223
|
+
expect(result.text).toBe("over 1,5 uur");
|
|
224
|
+
expect(result.start.get("hour")).toBe(14);
|
|
225
|
+
expect(result.start.get("minute")).toBe(10);
|
|
226
|
+
|
|
227
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 14, 10));
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
test("Test - Strict mode", function () {
|
|
232
|
+
// 15 minutes from now
|
|
233
|
+
testSingleCase(chrono.nl.strict, "15 minuten vanaf nu", new Date(2012, 7, 10, 12, 14), (result, text) => {
|
|
234
|
+
expect(result.text).toBe(text);
|
|
235
|
+
expect(result.start.get("hour")).toBe(12);
|
|
236
|
+
expect(result.start.get("minute")).toBe(29);
|
|
237
|
+
|
|
238
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 29));
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
// 25 minutes later
|
|
242
|
+
testSingleCase(chrono.nl.strict, "25 minuten later", new Date(2012, 7, 10, 12, 40), (result) => {
|
|
243
|
+
expect(result.index).toBe(0);
|
|
244
|
+
expect(result.text).toBe("25 minuten later");
|
|
245
|
+
expect(result.start.get("hour")).toBe(13);
|
|
246
|
+
expect(result.start.get("minute")).toBe(5);
|
|
247
|
+
|
|
248
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 13, 5));
|
|
249
|
+
});
|
|
250
|
+
});
|
package/test/test_util.ts
CHANGED
|
@@ -61,10 +61,13 @@ export function testWithExpectedDate(chrono: ChronoLike, text: string, expectedD
|
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
export function testUnexpectedResult(chrono: ChronoLike, text: string, refDate?: Date) {
|
|
64
|
+
export function testUnexpectedResult(chrono: ChronoLike, text: string, refDate?: Date, options?: ParsingOption) {
|
|
65
65
|
const debugHandler = new BufferedDebugHandler();
|
|
66
|
+
options = options || {};
|
|
67
|
+
options.debug = debugHandler;
|
|
68
|
+
|
|
66
69
|
try {
|
|
67
|
-
const results = chrono.parse(text, refDate,
|
|
70
|
+
const results = chrono.parse(text, refDate, options);
|
|
68
71
|
expect(results).toHaveLength(0);
|
|
69
72
|
} catch (e) {
|
|
70
73
|
debugHandler.executeBufferedBlocks();
|