UNPKG

13 kBPlain TextView Raw
1import * as chrono from "../../src/";
2import { testSingleCase, testUnexpectedResult } from "../test_util";
3
4test("Test - Casual date expression", function () {
5 testSingleCase(chrono.de, "Die Deadline ist jetzt", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
6 expect(result.index).toBe(17);
7 expect(result.text).toBe("jetzt");
8
9 expect(result.start).not.toBeNull();
10 expect(result.start.get("year")).toBe(2012);
11 expect(result.start.get("month")).toBe(8);
12 expect(result.start.get("day")).toBe(10);
13 expect(result.start.get("hour")).toBe(8);
14 expect(result.start.get("minute")).toBe(9);
15 expect(result.start.get("second")).toBe(10);
16 expect(result.start.get("millisecond")).toBe(11);
17
18 expect(result.start).toBeDate(new Date(2012, 7, 10, 8, 9, 10, 11));
19 });
20
21 testSingleCase(chrono.de, "Die Deadline ist heute", new Date(2012, 7, 10, 12), (result) => {
22 expect(result.index).toBe(17);
23 expect(result.text).toBe("heute");
24
25 expect(result.start).not.toBeNull();
26 expect(result.start.get("year")).toBe(2012);
27 expect(result.start.get("month")).toBe(8);
28 expect(result.start.get("day")).toBe(10);
29
30 expect(result.start).toBeDate(new Date(2012, 7, 10, 12));
31 });
32
33 testSingleCase(chrono.de, "Die Deadline ist morgen", new Date(2012, 7, 10, 12), (result) => {
34 expect(result.index).toBe(17);
35 expect(result.text).toBe("morgen");
36
37 expect(result.start.get("year")).toBe(2012);
38 expect(result.start.get("month")).toBe(8);
39 expect(result.start.get("day")).toBe(11);
40 //expect(result.start.get("hour")).toBe(8);
41 });
42
43 testSingleCase(chrono.de, "Die Deadline ist morgen", new Date(2012, 8 - 1, 10, 1), (result) => {
44 expect(result.start.get("year")).toBe(2012);
45 expect(result.start.get("month")).toBe(8);
46 expect(result.start.get("day")).toBe(11);
47 expect(result.start.get("hour")).toBe(1);
48 });
49
50 testSingleCase(chrono.de, "Die Deadline war gestern", new Date(2012, 7, 10, 12), (result) => {
51 expect(result.index).toBe(17);
52 expect(result.text).toBe("gestern");
53
54 expect(result.start).not.toBeNull();
55 expect(result.start.get("year")).toBe(2012);
56 expect(result.start.get("month")).toBe(8);
57 expect(result.start.get("day")).toBe(9);
58
59 expect(result.start).toBeDate(new Date(2012, 7, 9, 12));
60 });
61
62 testSingleCase(chrono.de, "Die Deadline war letzte Nacht ", new Date(2012, 7, 10, 12), (result) => {
63 expect(result.index).toBe(17);
64 expect(result.text).toBe("letzte Nacht");
65
66 expect(result.start).not.toBeNull();
67 expect(result.start.get("year")).toBe(2012);
68 expect(result.start.get("month")).toBe(8);
69 expect(result.start.get("day")).toBe(9);
70 expect(result.start.get("hour")).toBe(0);
71
72 expect(result.start).toBeDate(new Date(2012, 7, 9, 0));
73 });
74
75 testSingleCase(chrono.de, "Die Deadline war gestern Nacht ", new Date(2012, 7, 10, 12), (result) => {
76 expect(result.index).toBe(17);
77 expect(result.text).toBe("gestern Nacht");
78
79 expect(result.start).not.toBeNull();
80 expect(result.start.get("year")).toBe(2012);
81 expect(result.start.get("month")).toBe(8);
82 expect(result.start.get("day")).toBe(9);
83 expect(result.start.get("hour")).toBe(22);
84
85 expect(result.start).toBeDate(new Date(2012, 7, 9, 22));
86 });
87
88 testSingleCase(chrono.de, "Die Deadline war heute Morgen ", new Date(2012, 7, 10, 12), (result) => {
89 expect(result.index).toBe(17);
90 expect(result.text).toBe("heute Morgen");
91
92 expect(result.start).not.toBeNull();
93 expect(result.start.get("year")).toBe(2012);
94 expect(result.start.get("month")).toBe(8);
95 expect(result.start.get("day")).toBe(10);
96 expect(result.start.get("hour")).toBe(6);
97
98 expect(result.start).toBeDate(new Date(2012, 7, 10, 6));
99 });
100
101 testSingleCase(chrono.de, "Die Deadline war heute Nachmittag ", new Date(2012, 7, 10, 12), (result) => {
102 expect(result.index).toBe(17);
103 expect(result.text).toBe("heute Nachmittag");
104
105 expect(result.start).not.toBeNull();
106 expect(result.start.get("year")).toBe(2012);
107 expect(result.start.get("month")).toBe(8);
108 expect(result.start.get("day")).toBe(10);
109 expect(result.start.get("hour")).toBe(15);
110
111 expect(result.start).toBeDate(new Date(2012, 7, 10, 15));
112 });
113
114 testSingleCase(chrono.de, "Die Deadline war heute Abend ", new Date(2012, 7, 10, 12), (result) => {
115 expect(result.index).toBe(17);
116 expect(result.text).toBe("heute Abend");
117
118 expect(result.start).not.toBeNull();
119 expect(result.start.get("year")).toBe(2012);
120 expect(result.start.get("month")).toBe(8);
121 expect(result.start.get("day")).toBe(10);
122 expect(result.start.get("hour")).toBe(18);
123
124 expect(result.start).toBeDate(new Date(2012, 7, 10, 18));
125 });
126});
127
128test("Test - Casual time expression", function () {
129 testSingleCase(chrono.de, "Die Deadline ist mittags", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
130 expect(result.index).toBe(17);
131 expect(result.text).toBe("mittags");
132
133 expect(result.start.get("year")).toBe(2012);
134 expect(result.start.get("month")).toBe(8);
135 expect(result.start.get("day")).toBe(10);
136 expect(result.start.get("hour")).toBe(12);
137 expect(result.start.get("minute")).toBe(0);
138 expect(result.start.get("second")).toBe(0);
139 });
140
141 testSingleCase(chrono.de, "um Mitternacht", new Date(2012, 7, 10, 12), (result) => {
142 expect(result.start.get("year")).toBe(2012);
143 expect(result.start.get("month")).toBe(8);
144 expect(result.start.get("day")).toBe(11);
145 expect(result.start.get("hour")).toBe(0);
146 expect(result.start.get("minute")).toBe(0);
147 expect(result.start.get("second")).toBe(0);
148 });
149
150 testSingleCase(chrono.de, "um Mitternacht", new Date(2012, 7, 10, 1), (result) => {
151 expect(result.start.get("year")).toBe(2012);
152 expect(result.start.get("month")).toBe(8);
153 expect(result.start.get("day")).toBe(10);
154 expect(result.start.get("hour")).toBe(0);
155 expect(result.start.get("minute")).toBe(0);
156 expect(result.start.get("second")).toBe(0);
157 });
158});
159
160test("Test - Combined Expression", function () {
161 testSingleCase(chrono.de, "Die Deadline ist heute 17 Uhr", new Date(2012, 7, 10, 12), (result) => {
162 expect(result.index).toBe(17);
163 expect(result.text).toBe("heute 17 Uhr");
164
165 expect(result.start).not.toBeNull();
166 expect(result.start.get("year")).toBe(2012);
167 expect(result.start.get("month")).toBe(8);
168 expect(result.start.get("day")).toBe(10);
169 expect(result.start.get("hour")).toBe(17);
170
171 expect(result.start).toBeDate(new Date(2012, 7, 10, 17));
172 });
173
174 testSingleCase(chrono.de, "Die Deadline ist heute um 17 Uhr", new Date(2012, 7, 10, 12), (result) => {
175 expect(result.index).toBe(17);
176 expect(result.text).toBe("heute um 17 Uhr");
177
178 expect(result.start).not.toBeNull();
179 expect(result.start.get("year")).toBe(2012);
180 expect(result.start.get("month")).toBe(8);
181 expect(result.start.get("day")).toBe(10);
182 expect(result.start.get("hour")).toBe(17);
183
184 expect(result.start).toBeDate(new Date(2012, 7, 10, 17));
185 });
186});
187
188test("Test - Casual date range", function () {
189 testSingleCase(chrono.de, "Der Event ist heute - nächsten Freitag", new Date(2012, 7, 4, 12), (result) => {
190 expect(result.index).toBe(14);
191 expect(result.text).toBe("heute - nächsten Freitag");
192
193 expect(result.start).not.toBeNull();
194 expect(result.start.get("year")).toBe(2012);
195 expect(result.start.get("month")).toBe(8);
196 expect(result.start.get("day")).toBe(4);
197 expect(result.start.get("hour")).toBe(12);
198
199 expect(result.start).toBeDate(new Date(2012, 7, 4, 12));
200
201 expect(result.end).not.toBeNull();
202 expect(result.end.get("year")).toBe(2012);
203 expect(result.end.get("month")).toBe(8);
204 expect(result.end.get("day")).toBe(10);
205 expect(result.end.get("hour")).toBe(12);
206
207 expect(result.end).toBeDate(new Date(2012, 7, 10, 12));
208 });
209
210 testSingleCase(chrono.de, "Der Event ist heute - nächsten Freitag", new Date(2012, 7, 10, 12), (result) => {
211 expect(result.index).toBe(14);
212 expect(result.text).toBe("heute - nächsten Freitag");
213
214 expect(result.start).not.toBeNull();
215 expect(result.start.get("year")).toBe(2012);
216 expect(result.start.get("month")).toBe(8);
217 expect(result.start.get("day")).toBe(10);
218 expect(result.start.get("hour")).toBe(12);
219
220 expect(result.start).toBeDate(new Date(2012, 7, 10, 12));
221
222 expect(result.end).not.toBeNull();
223 expect(result.end.get("year")).toBe(2012);
224 expect(result.end.get("month")).toBe(8);
225 expect(result.end.get("day")).toBe(17);
226 expect(result.end.get("hour")).toBe(12);
227
228 expect(result.end).toBeDate(new Date(2012, 7, 17, 12));
229 });
230});
231
232test("Test - Random text", function () {
233 testSingleCase(chrono.de, "heute Nacht", new Date(2012, 1 - 1, 1, 12), (result, text) => {
234 expect(result.text).toBe(text);
235 expect(result.start.get("year")).toBe(2012);
236 expect(result.start.get("month")).toBe(1);
237 expect(result.start.get("day")).toBe(1);
238 expect(result.start.get("hour")).toBe(22);
239 expect(result.start.get("meridiem")).toBe(1);
240 });
241
242 testSingleCase(chrono.de, "heute Nacht um 20 Uhr", new Date(2012, 1 - 1, 1, 12), (result, text) => {
243 expect(result.text).toBe(text);
244 expect(result.start.get("hour")).toBe(20);
245 expect(result.start.get("year")).toBe(2012);
246 expect(result.start.get("month")).toBe(1);
247 expect(result.start.get("day")).toBe(1);
248 expect(result.start.get("meridiem")).toBe(1);
249 });
250
251 testSingleCase(chrono.de, "heute Abend um 8", new Date(2012, 1 - 1, 1, 12), (result, text) => {
252 expect(result.text).toBe(text);
253 expect(result.start.get("hour")).toBe(20);
254 expect(result.start.get("year")).toBe(2012);
255 expect(result.start.get("month")).toBe(1);
256 expect(result.start.get("day")).toBe(1);
257 expect(result.start.get("meridiem")).toBe(1);
258 });
259
260 testSingleCase(chrono.de, "8 Uhr abends", new Date(2012, 1 - 1, 1, 12), (result, text) => {
261 expect(result.text).toBe(text);
262 expect(result.start.get("hour")).toBe(20);
263 expect(result.start.get("year")).toBe(2012);
264 expect(result.start.get("month")).toBe(1);
265 expect(result.start.get("day")).toBe(1);
266 expect(result.start.get("meridiem")).toBe(1);
267 });
268
269 testSingleCase(chrono.de, "Do", (result, text) => {
270 expect(result.text).toBe(text);
271 expect(result.start.get("weekday")).toBe(4);
272 });
273
274 testSingleCase(chrono.de, "Donnerstag", (result, text) => {
275 expect(result.text).toBe(text);
276 expect(result.start.get("weekday")).toBe(4);
277 });
278
279 testSingleCase(chrono.de, "gestern Nachmittag", new Date(2016, 10 - 1, 1), (result, text) => {
280 expect(result.text).toBe(text);
281 expect(result.start.get("year")).toBe(2016);
282 expect(result.start.get("month")).toBe(9);
283 expect(result.start.get("day")).toBe(30);
284 expect(result.start.get("hour")).toBe(15);
285 });
286
287 testSingleCase(chrono.de, "morgen Morgen", new Date(2016, 10 - 1, 1, 8), (result, text) => {
288 expect(result.text).toBe(text);
289 expect(result.start.get("year")).toBe(2016);
290 expect(result.start.get("month")).toBe(10);
291 expect(result.start.get("day")).toBe(2);
292 expect(result.start.get("hour")).toBe(6);
293 });
294
295 testSingleCase(chrono.de, "uebermorgen Abend", new Date(2016, 10 - 1, 1, 8), (result, text) => {
296 expect(result.text).toBe(text);
297 expect(result.start.get("year")).toBe(2016);
298 expect(result.start.get("month")).toBe(10);
299 expect(result.start.get("day")).toBe(3);
300 expect(result.start.get("hour")).toBe(18);
301 });
302
303 testSingleCase(chrono.de, "vorgestern Vormittag", new Date(2016, 10 - 1, 1), (result, text) => {
304 expect(result.text).toBe(text);
305 expect(result.start.get("year")).toBe(2016);
306 expect(result.start.get("month")).toBe(9);
307 expect(result.start.get("day")).toBe(29);
308 expect(result.start.get("hour")).toBe(9);
309 });
310});
311
312test("Test - Random negative text", function () {
313 testUnexpectedResult(chrono.de, "nicheute");
314
315 testUnexpectedResult(chrono.de, "heutenicht");
316
317 testUnexpectedResult(chrono.de, "angestern");
318
319 testUnexpectedResult(chrono.de, "jetztig");
320
321 testUnexpectedResult(chrono.de, "ljetztlich");
322});