1 | import * as chrono from "../../src/";
|
2 | import { testSingleCase, testUnexpectedResult } from "../test_util";
|
3 | import { Meridiem } from "../../src/";
|
4 |
|
5 | test("Test - Single Expression", () => {
|
6 | testSingleCase(chrono.nl, "De deadline is nu", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
|
7 | expect(result.index).toBe(15);
|
8 | expect(result.text).toBe("nu");
|
9 |
|
10 | expect(result.start).not.toBeNull();
|
11 | expect(result.start.get("year")).toBe(2012);
|
12 | expect(result.start.get("month")).toBe(8);
|
13 | expect(result.start.get("day")).toBe(10);
|
14 | expect(result.start.get("hour")).toBe(8);
|
15 | expect(result.start.get("minute")).toBe(9);
|
16 | expect(result.start.get("second")).toBe(10);
|
17 | expect(result.start.get("millisecond")).toBe(11);
|
18 | expect(result.start.get("timezoneOffset")).toBe(result.refDate.getTimezoneOffset() * -1);
|
19 |
|
20 | expect(result.start).toBeDate(result.refDate);
|
21 | expect(result.start).toBeDate(new Date(2012, 7, 10, 8, 9, 10, 11));
|
22 | });
|
23 |
|
24 | testSingleCase(chrono.nl, "De deadline is vandaag", new Date(2012, 7, 10, 14, 12), (result) => {
|
25 | expect(result.index).toBe(15);
|
26 | expect(result.text).toBe("vandaag");
|
27 |
|
28 | expect(result.start).not.toBeNull();
|
29 | expect(result.start.get("year")).toBe(2012);
|
30 | expect(result.start.get("month")).toBe(8);
|
31 | expect(result.start.get("day")).toBe(10);
|
32 |
|
33 | expect(result.start).toBeDate(new Date(2012, 7, 10, 14, 12));
|
34 | });
|
35 |
|
36 | testSingleCase(chrono.nl, "De deadline is morgen", new Date(2012, 7, 10, 17, 10), (result) => {
|
37 | expect(result.index).toBe(15);
|
38 | expect(result.text).toBe("morgen");
|
39 |
|
40 | expect(result.start).not.toBeNull();
|
41 | expect(result.start.get("year")).toBe(2012);
|
42 | expect(result.start.get("month")).toBe(8);
|
43 | expect(result.start.get("day")).toBe(11);
|
44 |
|
45 | expect(result.start).toBeDate(new Date(2012, 7, 11, 17, 10));
|
46 | });
|
47 |
|
48 | testSingleCase(chrono.nl, "De deadline is morgen", new Date(2012, 7, 10, 1), (result) => {
|
49 | expect(result.start).toBeDate(new Date(2012, 7, 11, 1));
|
50 | });
|
51 |
|
52 | testSingleCase(chrono.nl, "De deadline was gisteren", new Date(2012, 7, 10, 12), (result) => {
|
53 | expect(result.index).toBe(16);
|
54 | expect(result.text).toBe("gisteren");
|
55 |
|
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(9);
|
60 |
|
61 | expect(result.start).toBeDate(new Date(2012, 7, 9, 12));
|
62 | });
|
63 |
|
64 | testSingleCase(chrono.nl, "De Deadline was deze ochtend", new Date(2012, 7, 10, 12), (result) => {
|
65 | expect(result.index).toBe(16);
|
66 | expect(result.text).toBe("deze ochtend");
|
67 |
|
68 | expect(result.start).not.toBeNull();
|
69 | expect(result.start.get("year")).toBe(2012);
|
70 | expect(result.start.get("month")).toBe(8);
|
71 | expect(result.start.get("day")).toBe(10);
|
72 | expect(result.start.get("hour")).toBe(6);
|
73 |
|
74 | expect(result.start).toBeDate(new Date(2012, 7, 10, 6));
|
75 | });
|
76 |
|
77 | testSingleCase(chrono.nl, "De Deadline was deze namiddag ", new Date(2012, 7, 10, 12), (result) => {
|
78 | expect(result.index).toBe(16);
|
79 | expect(result.text).toBe("deze namiddag");
|
80 |
|
81 | expect(result.start).not.toBeNull();
|
82 | expect(result.start.get("year")).toBe(2012);
|
83 | expect(result.start.get("month")).toBe(8);
|
84 | expect(result.start.get("day")).toBe(10);
|
85 | expect(result.start.get("hour")).toBe(15);
|
86 |
|
87 | expect(result.start).toBeDate(new Date(2012, 7, 10, 15));
|
88 | });
|
89 |
|
90 | testSingleCase(chrono.nl, "De Deadline was deze avond ", new Date(2012, 7, 10, 12), (result) => {
|
91 | expect(result.index).toBe(16);
|
92 | expect(result.text).toBe("deze avond");
|
93 |
|
94 | expect(result.start).not.toBeNull();
|
95 | expect(result.start.get("year")).toBe(2012);
|
96 | expect(result.start.get("month")).toBe(8);
|
97 | expect(result.start.get("day")).toBe(10);
|
98 | expect(result.start.get("hour")).toBe(20);
|
99 |
|
100 | expect(result.start).toBeDate(new Date(2012, 7, 10, 20));
|
101 | });
|
102 |
|
103 | testSingleCase(chrono.nl, "De deadline is vanavond", new Date(2012, 7, 10, 12), (result) => {
|
104 | expect(result.text).toBe("vanavond");
|
105 | expect(result.start.get("year")).toBe(2012);
|
106 | expect(result.start.get("month")).toBe(8);
|
107 | expect(result.start.get("day")).toBe(10);
|
108 | expect(result.start.get("hour")).toBe(20);
|
109 | });
|
110 |
|
111 |
|
112 |
|
113 | testSingleCase(chrono.nl, "The Deadline is om middernacht ", new Date(2012, 7, 10, 1), (result) => {
|
114 | expect(result.text).toBe("middernacht");
|
115 | expect(result.start.get("year")).toBe(2012);
|
116 | expect(result.start.get("month")).toBe(8);
|
117 | expect(result.start.get("day")).toBe(11);
|
118 | expect(result.start.get("hour")).toBe(0);
|
119 | });
|
120 | });
|
121 |
|
122 | test("Test - Combined Expression", () => {
|
123 | testSingleCase(chrono.nl, "De deadline is vandaag om 17:00", new Date(2012, 7, 10, 12), (result) => {
|
124 | expect(result.index).toBe(15);
|
125 | expect(result.text).toBe("vandaag om 17:00");
|
126 |
|
127 | expect(result.start.get("year")).toBe(2012);
|
128 | expect(result.start.get("month")).toBe(8);
|
129 | expect(result.start.get("day")).toBe(10);
|
130 | expect(result.start.get("hour")).toBe(17);
|
131 |
|
132 | expect(result.start).toBeDate(new Date(2012, 7, 10, 17));
|
133 | });
|
134 | });
|
135 |
|
136 | test("Test - Casual combined datetime expressions", () => {
|
137 | testSingleCase(chrono.nl, "gisterenochtend", new Date(2012, 8 - 1, 10, 14), (result) => {
|
138 | expect(result.start.get("year")).toBe(2012);
|
139 | expect(result.start.get("month")).toBe(8);
|
140 | expect(result.start.get("day")).toBe(9);
|
141 | expect(result.start.get("hour")).toBe(6);
|
142 |
|
143 | expect(result.start).toBeDate(new Date(2012, 8 - 1, 9, 6));
|
144 | });
|
145 |
|
146 | testSingleCase(chrono.nl, "gisterenmiddag", new Date(2012, 8 - 1, 10, 14), (result) => {
|
147 | expect(result.start.get("year")).toBe(2012);
|
148 | expect(result.start.get("month")).toBe(8);
|
149 | expect(result.start.get("day")).toBe(9);
|
150 | expect(result.start.get("hour")).toBe(12);
|
151 |
|
152 | expect(result.start).toBeDate(new Date(2012, 8 - 1, 9, 12));
|
153 | });
|
154 |
|
155 | testSingleCase(chrono.nl, "gisterenavond", new Date(2012, 8 - 1, 10, 14), (result) => {
|
156 | expect(result.start.get("year")).toBe(2012);
|
157 | expect(result.start.get("month")).toBe(8);
|
158 | expect(result.start.get("day")).toBe(9);
|
159 | expect(result.start.get("hour")).toBe(20);
|
160 |
|
161 | expect(result.start).toBeDate(new Date(2012, 8 - 1, 9, 20));
|
162 | });
|
163 |
|
164 | testSingleCase(chrono.nl, "vanochtend", new Date(2012, 8 - 1, 10, 14), (result) => {
|
165 | expect(result.start.get("year")).toBe(2012);
|
166 | expect(result.start.get("month")).toBe(8);
|
167 | expect(result.start.get("day")).toBe(10);
|
168 | expect(result.start.get("hour")).toBe(6);
|
169 |
|
170 | expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 6));
|
171 | });
|
172 |
|
173 | testSingleCase(chrono.nl, "vanmiddag", new Date(2012, 8 - 1, 10, 14), (result) => {
|
174 | expect(result.start.get("year")).toBe(2012);
|
175 | expect(result.start.get("month")).toBe(8);
|
176 | expect(result.start.get("day")).toBe(10);
|
177 | expect(result.start.get("hour")).toBe(12);
|
178 |
|
179 | expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
|
180 | });
|
181 |
|
182 | testSingleCase(chrono.nl, "vanavond", new Date(2012, 8 - 1, 10, 14), (result) => {
|
183 | expect(result.start.get("year")).toBe(2012);
|
184 | expect(result.start.get("month")).toBe(8);
|
185 | expect(result.start.get("day")).toBe(10);
|
186 | expect(result.start.get("hour")).toBe(20);
|
187 |
|
188 | expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 20));
|
189 | });
|
190 |
|
191 | testSingleCase(chrono.nl, "morgenochtend", new Date(2012, 8 - 1, 10, 14), (result) => {
|
192 | expect(result.start.get("year")).toBe(2012);
|
193 | expect(result.start.get("month")).toBe(8);
|
194 | expect(result.start.get("day")).toBe(11);
|
195 | expect(result.start.get("hour")).toBe(6);
|
196 |
|
197 | expect(result.start).toBeDate(new Date(2012, 8 - 1, 11, 6));
|
198 | });
|
199 |
|
200 | testSingleCase(chrono.nl, "morgenmiddag", new Date(2012, 8 - 1, 10, 14), (result) => {
|
201 | expect(result.start.get("year")).toBe(2012);
|
202 | expect(result.start.get("month")).toBe(8);
|
203 | expect(result.start.get("day")).toBe(11);
|
204 | expect(result.start.get("hour")).toBe(12);
|
205 |
|
206 | expect(result.start).toBeDate(new Date(2012, 8 - 1, 11, 12));
|
207 | });
|
208 |
|
209 | testSingleCase(chrono.nl, "morgenavond", new Date(2012, 8 - 1, 10, 14), (result) => {
|
210 | expect(result.start.get("year")).toBe(2012);
|
211 | expect(result.start.get("month")).toBe(8);
|
212 | expect(result.start.get("day")).toBe(11);
|
213 | expect(result.start.get("hour")).toBe(20);
|
214 |
|
215 | expect(result.start).toBeDate(new Date(2012, 8 - 1, 11, 20));
|
216 | });
|
217 | });
|
218 |
|
219 | test("Test - Casual date range", () => {
|
220 | testSingleCase(chrono.nl, "Het evenement is vandaag - volgende vrijdag", new Date(2012, 7, 4, 12), (result) => {
|
221 | expect(result.index).toBe(17);
|
222 | expect(result.text).toBe("vandaag - volgende vrijdag");
|
223 |
|
224 | expect(result.start).not.toBeNull();
|
225 | expect(result.start.get("year")).toBe(2012);
|
226 | expect(result.start.get("month")).toBe(8);
|
227 | expect(result.start.get("day")).toBe(4);
|
228 | expect(result.start.get("hour")).toBe(12);
|
229 |
|
230 | expect(result.start).toBeDate(new Date(2012, 7, 4, 12));
|
231 |
|
232 | expect(result.end).not.toBeNull();
|
233 | expect(result.end.get("year")).toBe(2012);
|
234 | expect(result.end.get("month")).toBe(8);
|
235 | expect(result.end.get("day")).toBe(10);
|
236 | expect(result.end.get("hour")).toBe(12);
|
237 |
|
238 | expect(result.end).toBeDate(new Date(2012, 7, 10, 12));
|
239 | });
|
240 |
|
241 | testSingleCase(chrono.nl, "Het evenement is vandaag - volgende vrijdag", new Date(2012, 7, 10, 12), (result) => {
|
242 | expect(result.index).toBe(17);
|
243 | expect(result.text).toBe("vandaag - volgende vrijdag");
|
244 |
|
245 | expect(result.start).not.toBeNull();
|
246 | expect(result.start.get("year")).toBe(2012);
|
247 | expect(result.start.get("month")).toBe(8);
|
248 | expect(result.start.get("day")).toBe(10);
|
249 | expect(result.start.get("hour")).toBe(12);
|
250 |
|
251 | expect(result.start).toBeDate(new Date(2012, 7, 10, 12));
|
252 |
|
253 | expect(result.end).not.toBeNull();
|
254 | expect(result.end.get("year")).toBe(2012);
|
255 | expect(result.end.get("month")).toBe(8);
|
256 | expect(result.end.get("day")).toBe(17);
|
257 | expect(result.end.get("hour")).toBe(12);
|
258 |
|
259 | expect(result.end).toBeDate(new Date(2012, 7, 17, 12));
|
260 | });
|
261 | });
|
262 |
|
263 | test("Test - Casual time implication", () => {
|
264 | testSingleCase(
|
265 | chrono.nl,
|
266 | "jaarlijks verlof vanaf vandaag tot morgennamiddag",
|
267 | new Date(2012, 8 - 1, 4, 12),
|
268 | (result) => {
|
269 | expect(result.text).toBe("vandaag tot morgennamiddag");
|
270 |
|
271 | expect(result.start.get("month")).toBe(8);
|
272 | expect(result.start.get("day")).toBe(4);
|
273 | expect(result.start.get("hour")).toBe(12);
|
274 | expect(result.start.isCertain("hour")).toBe(false);
|
275 |
|
276 | expect(result.end.get("month")).toBe(8);
|
277 | expect(result.end.get("day")).toBe(5);
|
278 | expect(result.end.get("hour")).toBe(15);
|
279 | expect(result.end.isCertain("hour")).toBe(false);
|
280 | }
|
281 | );
|
282 |
|
283 | testSingleCase(
|
284 | chrono.nl,
|
285 | "jaarlijks verlof vanaf deze ochtend tot morgen",
|
286 | new Date(2012, 8 - 1, 4, 12),
|
287 | (result) => {
|
288 | expect(result.text).toBe("deze ochtend tot morgen");
|
289 |
|
290 | expect(result.start.get("month")).toBe(8);
|
291 | expect(result.start.get("day")).toBe(4);
|
292 | expect(result.start.get("hour")).toBe(6);
|
293 | expect(result.start.isCertain("hour")).toBe(false);
|
294 |
|
295 | expect(result.end.get("month")).toBe(8);
|
296 | expect(result.end.get("day")).toBe(5);
|
297 | expect(result.end.get("hour")).toBe(12);
|
298 | expect(result.end.isCertain("hour")).toBe(false);
|
299 | }
|
300 | );
|
301 | });
|
302 |
|
303 | test("Test - Random text", () => {
|
304 | testSingleCase(chrono.nl, "vanavond", new Date(2012, 1 - 1, 1, 12), (result, text) => {
|
305 | expect(result.text).toBe(text);
|
306 | expect(result.start.get("year")).toBe(2012);
|
307 | expect(result.start.get("month")).toBe(1);
|
308 | expect(result.start.get("day")).toBe(1);
|
309 | expect(result.start.get("hour")).toBe(20);
|
310 | expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
311 | });
|
312 |
|
313 | testSingleCase(chrono.nl, "middag", new Date(2012, 1 - 1, 1, 12), (result, text) => {
|
314 | expect(result.text).toBe(text);
|
315 | expect(result.start.get("year")).toBe(2012);
|
316 | expect(result.start.get("month")).toBe(1);
|
317 | expect(result.start.get("day")).toBe(1);
|
318 | expect(result.start.get("hour")).toBe(12);
|
319 | expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
320 | });
|
321 |
|
322 | testSingleCase(chrono.nl, "vanavond 22:00", new Date(2012, 1 - 1, 1, 12), (result, text) => {
|
323 | expect(result.text).toBe(text);
|
324 | expect(result.start.get("hour")).toBe(22);
|
325 | expect(result.start.get("year")).toBe(2012);
|
326 | expect(result.start.get("month")).toBe(1);
|
327 | expect(result.start.get("day")).toBe(1);
|
328 | expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
329 | });
|
330 |
|
331 | testSingleCase(chrono.nl, "vanavond om 21:00", new Date(2012, 1 - 1, 1, 12), (result, text) => {
|
332 | expect(result.text).toBe(text);
|
333 | expect(result.start.get("hour")).toBe(21);
|
334 | expect(result.start.get("year")).toBe(2012);
|
335 | expect(result.start.get("month")).toBe(1);
|
336 | expect(result.start.get("day")).toBe(1);
|
337 | expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
338 | });
|
339 |
|
340 | testSingleCase(chrono.nl, "morgen voor 16:00", new Date(2012, 1 - 1, 1, 12), (result, text) => {
|
341 | expect(result.text).toBe(text);
|
342 | expect(result.start.get("hour")).toBe(16);
|
343 | expect(result.start.get("year")).toBe(2012);
|
344 | expect(result.start.get("month")).toBe(1);
|
345 | expect(result.start.get("day")).toBe(2);
|
346 | expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
347 | });
|
348 |
|
349 | testSingleCase(chrono.nl, "morgen na 16:00", new Date(2012, 1 - 1, 1, 12), (result, text) => {
|
350 | expect(result.text).toBe(text);
|
351 | expect(result.start.get("hour")).toBe(16);
|
352 | expect(result.start.get("year")).toBe(2012);
|
353 | expect(result.start.get("month")).toBe(1);
|
354 | expect(result.start.get("day")).toBe(2);
|
355 | expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
356 | });
|
357 |
|
358 | testSingleCase(chrono.nl, "donderdag", (result, text) => {
|
359 | expect(result.text).toBe(text);
|
360 | expect(result.start.get("weekday")).toBe(4);
|
361 | });
|
362 |
|
363 | testSingleCase(chrono.nl, "deze avond", new Date(2016, 10 - 1, 1), (result, text) => {
|
364 | expect(result.text).toBe(text);
|
365 | expect(result.start.get("year")).toBe(2016);
|
366 | expect(result.start.get("month")).toBe(10);
|
367 | expect(result.start.get("day")).toBe(1);
|
368 | expect(result.start.get("hour")).toBe(20);
|
369 | });
|
370 |
|
371 | testSingleCase(chrono.nl, "gisterennamiddag", new Date(2016, 10 - 1, 1), (result, text) => {
|
372 | expect(result.text).toBe(text);
|
373 | expect(result.start.get("year")).toBe(2016);
|
374 | expect(result.start.get("month")).toBe(9);
|
375 | expect(result.start.get("day")).toBe(30);
|
376 | expect(result.start.get("hour")).toBe(15);
|
377 | });
|
378 |
|
379 | testSingleCase(chrono.nl, "morgenochtend", new Date(2016, 10 - 1, 1, 8), (result, text) => {
|
380 | expect(result.text).toBe(text);
|
381 | expect(result.start.get("year")).toBe(2016);
|
382 | expect(result.start.get("month")).toBe(10);
|
383 | expect(result.start.get("day")).toBe(2);
|
384 | expect(result.start.get("hour")).toBe(6);
|
385 | });
|
386 |
|
387 | testSingleCase(chrono.nl, "deze namiddag om 15:00", new Date(2016, 10 - 1, 1, 8), (result, text) => {
|
388 | expect(result.text).toBe(text);
|
389 | expect(result.start.get("year")).toBe(2016);
|
390 | expect(result.start.get("month")).toBe(10);
|
391 | expect(result.start.get("day")).toBe(1);
|
392 | expect(result.start.get("hour")).toBe(15);
|
393 | });
|
394 | });
|
395 |
|
396 | test("Test - Random negative text", () => {
|
397 | testUnexpectedResult(chrono.nl, "notoday");
|
398 |
|
399 | testUnexpectedResult(chrono.nl, "tdtmr");
|
400 |
|
401 | testUnexpectedResult(chrono.nl, "xyesterday");
|
402 |
|
403 | testUnexpectedResult(chrono.nl, "nowhere");
|
404 |
|
405 | testUnexpectedResult(chrono.nl, "noway");
|
406 |
|
407 | testUnexpectedResult(chrono.nl, "knowledge");
|
408 | });
|