UNPKG

16.6 kBPlain TextView Raw
1import * as chrono from "../../src/";
2import { testSingleCase, testUnexpectedResult } from "../test_util";
3import { Meridiem } from "../../src/";
4
5test("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 // "Midnight" at 0~1AM, assume it's the coming midnight of following day
112 // This is similar to "Tomorrow" at 0~1AM
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
122test("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
136test("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
219test("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
263test("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
303test("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
396test("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});