UNPKG

12 kBPlain TextView Raw
1import * as chrono from "../../src";
2import { testSingleCase, testUnexpectedResult } from "../test_util";
3
4test("Test - Single expression", function () {
5 testSingleCase(chrono.fr, "10 Août 2012", new Date(2012, 7, 10), (result) => {
6 expect(result.start.get("year")).toBe(2012);
7 expect(result.start.get("month")).toBe(8);
8 expect(result.start.get("day")).toBe(10);
9
10 expect(result.index).toBe(0);
11 expect(result.text).toBe("10 Août 2012");
12
13 expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
14 });
15
16 testSingleCase(chrono.fr, "8 Février", new Date(2012, 7, 10), (result) => {
17 expect(result.start.get("year")).toBe(2013);
18 expect(result.start.get("month")).toBe(2);
19 expect(result.start.get("day")).toBe(8);
20
21 expect(result.index).toBe(0);
22 expect(result.text).toBe("8 Février");
23
24 expect(result.start).toBeDate(new Date(2013, 2 - 1, 8, 12));
25 });
26
27 testSingleCase(chrono.fr, "1er Août 2012", new Date(2012, 7, 1), (result) => {
28 expect(result.start.get("year")).toBe(2012);
29 expect(result.start.get("month")).toBe(8);
30 expect(result.start.get("day")).toBe(1);
31
32 expect(result.index).toBe(0);
33 expect(result.text).toBe("1er Août 2012");
34
35 expect(result.start).toBeDate(new Date(2012, 8 - 1, 1, 12));
36 });
37
38 testSingleCase(chrono.fr, "10 Août 234 AC", new Date(2012, 7, 10), (result) => {
39 expect(result.index).toBe(0);
40 expect(result.text).toBe("10 Août 234 AC");
41
42 expect(result.start.get("year")).toBe(-234);
43 expect(result.start.get("month")).toBe(8);
44 expect(result.start.get("day")).toBe(10);
45
46 expect(result.start).toBeDate(new Date(-234, 8 - 1, 10, 12));
47 });
48
49 testSingleCase(chrono.fr, "10 Août 88 p. Chr. n.", new Date(2012, 7, 10), (result) => {
50 expect(result.index).toBe(0);
51 expect(result.text).toBe("10 Août 88 p. Chr. n.");
52
53 expect(result.start.get("year")).toBe(88);
54 expect(result.start.get("month")).toBe(8);
55 expect(result.start.get("day")).toBe(10);
56
57 const resultDate = result.start.date();
58 const expectDate = new Date(88, 8 - 1, 10, 12);
59 expectDate.setFullYear(88);
60 expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
61 });
62
63 testSingleCase(chrono.fr, "Dim 15 Sept", new Date(2013, 7, 10), (result) => {
64 expect(result.index).toBe(0);
65 expect(result.text).toBe("Dim 15 Sept");
66
67 expect(result.start.get("year")).toBe(2013);
68 expect(result.start.get("month")).toBe(9);
69 expect(result.start.get("day")).toBe(15);
70
71 expect(result.start).toBeDate(new Date(2013, 9 - 1, 15, 12));
72 });
73
74 testSingleCase(chrono.fr, "DIM 15SEPT", new Date(2013, 7, 10), (result) => {
75 expect(result.index).toBe(0);
76 expect(result.text).toBe("DIM 15SEPT");
77
78 expect(result.start.get("year")).toBe(2013);
79 expect(result.start.get("month")).toBe(9);
80 expect(result.start.get("day")).toBe(15);
81
82 expect(result.start).toBeDate(new Date(2013, 9 - 1, 15, 12));
83 });
84
85 testSingleCase(chrono.fr, "La date limite est le 10 Août", new Date(2012, 7, 10), (result) => {
86 expect(result.index).toBe(22);
87 expect(result.text).toBe("10 Août");
88
89 expect(result.start.get("year")).toBe(2012);
90 expect(result.start.get("month")).toBe(8);
91 expect(result.start.get("day")).toBe(10);
92
93 expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
94 });
95
96 testSingleCase(chrono.fr, "La date limite est le Mardi 10 janvier", new Date(2012, 7, 10), (result) => {
97 expect(result.index).toBe(22);
98 expect(result.text).toBe("Mardi 10 janvier");
99
100 expect(result.start.get("year")).toBe(2013);
101 expect(result.start.get("month")).toBe(1);
102 expect(result.start.get("day")).toBe(10);
103 expect(result.start.get("weekday")).toBe(2);
104
105 expect(result.start).toBeDate(new Date(2013, 1 - 1, 10, 12));
106 });
107
108 testSingleCase(chrono.fr, "La date limite est Mar 10 Jan", new Date(2012, 7, 10), (result) => {
109 expect(result.index).toBe(19);
110 expect(result.text).toBe("Mar 10 Jan");
111
112 expect(result.start.get("year")).toBe(2013);
113 expect(result.start.get("month")).toBe(1);
114 expect(result.start.get("day")).toBe(10);
115 expect(result.start.get("weekday")).toBe(2);
116
117 expect(result.start).toBeDate(new Date(2013, 1 - 1, 10, 12));
118 });
119
120 testSingleCase(chrono.fr, "31 mars 2016", new Date(2012, 7, 10), (result) => {
121 expect(result.index).toBe(0);
122 expect(result.text).toBe("31 mars 2016");
123
124 expect(result.start.get("year")).toBe(2016);
125 expect(result.start.get("month")).toBe(3);
126 expect(result.start.get("day")).toBe(31);
127
128 expect(result.start).toBeDate(new Date(2016, 3 - 1, 31, 12));
129 });
130});
131
132test("Test - Range expression", function () {
133 testSingleCase(chrono.fr, "10 - 22 août 2012", new Date(2012, 7, 10), (result) => {
134 expect(result.index).toBe(0);
135 expect(result.text).toBe("10 - 22 août 2012");
136
137 expect(result.start.get("year")).toBe(2012);
138 expect(result.start.get("month")).toBe(8);
139 expect(result.start.get("day")).toBe(10);
140
141 expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
142
143 expect(result.end).not.toBeNull();
144 expect(result.end.get("year")).toBe(2012);
145 expect(result.end.get("month")).toBe(8);
146 expect(result.end.get("day")).toBe(22);
147
148 expect(result.end).toBeDate(new Date(2012, 8 - 1, 22, 12));
149 });
150
151 testSingleCase(chrono.fr, "10 au 22 août 2012", new Date(2012, 7, 10), (result) => {
152 expect(result.index).toBe(0);
153 expect(result.text).toBe("10 au 22 août 2012");
154
155 expect(result.start.get("year")).toBe(2012);
156 expect(result.start.get("month")).toBe(8);
157 expect(result.start.get("day")).toBe(10);
158
159 expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
160
161 expect(result.end).not.toBeNull();
162 expect(result.end.get("year")).toBe(2012);
163 expect(result.end.get("month")).toBe(8);
164 expect(result.end.get("day")).toBe(22);
165
166 expect(result.end).toBeDate(new Date(2012, 8 - 1, 22, 12));
167 });
168
169 testSingleCase(chrono.fr, "10 août - 12 septembre", new Date(2012, 7, 10), (result) => {
170 expect(result.index).toBe(0);
171 expect(result.text).toBe("10 août - 12 septembre");
172
173 expect(result.start.get("year")).toBe(2012);
174 expect(result.start.get("month")).toBe(8);
175 expect(result.start.get("day")).toBe(10);
176
177 expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
178
179 expect(result.end).not.toBeNull();
180 expect(result.end.get("year")).toBe(2012);
181 expect(result.end.get("month")).toBe(9);
182 expect(result.end.get("day")).toBe(12);
183
184 expect(result.end).toBeDate(new Date(2012, 9 - 1, 12, 12));
185 });
186
187 testSingleCase(chrono.fr, "10 août - 12 septembre 2013", new Date(2012, 7, 10), (result) => {
188 expect(result.index).toBe(0);
189 expect(result.text).toBe("10 août - 12 septembre 2013");
190
191 expect(result.start.get("year")).toBe(2013);
192 expect(result.start.get("month")).toBe(8);
193 expect(result.start.get("day")).toBe(10);
194
195 expect(result.start).toBeDate(new Date(2013, 8 - 1, 10, 12));
196
197 expect(result.end).not.toBeNull();
198 expect(result.end.get("year")).toBe(2013);
199 expect(result.end.get("month")).toBe(9);
200 expect(result.end.get("day")).toBe(12);
201
202 expect(result.end).toBeDate(new Date(2013, 9 - 1, 12, 12));
203 });
204});
205
206test("Test - Date/Time combined expression", function () {
207 testSingleCase(chrono.fr, "12 juillet à 19:00", new Date(2012, 7, 10), (result) => {
208 expect(result.index).toBe(0);
209 expect(result.text).toBe("12 juillet à 19:00");
210
211 expect(result.start.get("year")).toBe(2012);
212 expect(result.start.get("month")).toBe(7);
213 expect(result.start.get("day")).toBe(12);
214
215 expect(result.start).toBeDate(new Date(2012, 7 - 1, 12, 19, 0));
216 });
217
218 testSingleCase(chrono.fr, "5 mai 12:00", new Date(2012, 7, 10), (result) => {
219 expect(result.index).toBe(0);
220 expect(result.text).toBe("5 mai 12:00");
221
222 expect(result.start.get("year")).toBe(2012);
223 expect(result.start.get("month")).toBe(5);
224 expect(result.start.get("day")).toBe(5);
225
226 expect(result.start).toBeDate(new Date(2012, 5 - 1, 5, 12, 0));
227 });
228
229 testSingleCase(chrono.fr, "7 Mai 11:00", new Date(2012, 7, 10), (result) => {
230 expect(result.index).toBe(0);
231 expect(result.text).toBe("7 Mai 11:00");
232
233 expect(result.start.get("year")).toBe(2012);
234 expect(result.start.get("month")).toBe(5);
235 expect(result.start.get("day")).toBe(7);
236 expect(result.start.get("hour")).toBe(11);
237
238 expect(result.start).toBeDate(new Date(2012, 5 - 1, 7, 11, 0));
239 });
240});
241
242test("Test - Accentuated text parsing", function () {
243 testSingleCase(chrono.fr, "10 Août 2012", new Date(2012, 7, 10), (result) => {
244 expect(result.start.get("year")).toBe(2012);
245 expect(result.start.get("month")).toBe(8);
246 expect(result.start.get("day")).toBe(10);
247
248 expect(result.index).toBe(0);
249 expect(result.text).toBe("10 Août 2012");
250
251 expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
252 });
253
254 testSingleCase(chrono.fr, "10 Février 2012", new Date(2012, 7, 10), (result) => {
255 expect(result.start.get("year")).toBe(2012);
256 expect(result.start.get("month")).toBe(2);
257 expect(result.start.get("day")).toBe(10);
258
259 expect(result.index).toBe(0);
260 expect(result.text).toBe("10 Février 2012");
261
262 expect(result.start).toBeDate(new Date(2012, 2 - 1, 10, 12));
263 });
264
265 testSingleCase(chrono.fr, "10 Décembre 2012", new Date(2012, 7, 10), (result) => {
266 expect(result.start.get("year")).toBe(2012);
267 expect(result.start.get("month")).toBe(12);
268 expect(result.start.get("day")).toBe(10);
269
270 expect(result.index).toBe(0);
271 expect(result.text).toBe("10 Décembre 2012");
272
273 expect(result.start).toBeDate(new Date(2012, 12 - 1, 10, 12));
274 });
275});
276
277test("Test - Unaccentuated text parsing", function () {
278 testSingleCase(chrono.fr, "10 Aout 2012", new Date(2012, 7, 10), (result) => {
279 expect(result.start.get("year")).toBe(2012);
280 expect(result.start.get("month")).toBe(8);
281 expect(result.start.get("day")).toBe(10);
282
283 expect(result.index).toBe(0);
284 expect(result.text).toBe("10 Aout 2012");
285
286 expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
287 });
288
289 testSingleCase(chrono.fr, "10 Fevrier 2012", new Date(2012, 7, 10), (result) => {
290 expect(result.start.get("year")).toBe(2012);
291 expect(result.start.get("month")).toBe(2);
292 expect(result.start.get("day")).toBe(10);
293
294 expect(result.index).toBe(0);
295 expect(result.text).toBe("10 Fevrier 2012");
296
297 expect(result.start).toBeDate(new Date(2012, 2 - 1, 10, 12));
298 });
299
300 testSingleCase(chrono.fr, "10 Decembre 2012", new Date(2012, 7, 10), (result) => {
301 expect(result.start.get("year")).toBe(2012);
302 expect(result.start.get("month")).toBe(12);
303 expect(result.start.get("day")).toBe(10);
304
305 expect(result.index).toBe(0);
306 expect(result.text).toBe("10 Decembre 2012");
307
308 expect(result.start).toBeDate(new Date(2012, 12 - 1, 10, 12));
309 });
310});
311
312test("Test - Impossible Dates", function () {
313 testUnexpectedResult(chrono.fr, "32 Août 2014", new Date(2012, 7, 10));
314
315 testUnexpectedResult(chrono.fr, "29 Février 2014", new Date(2012, 7, 10));
316
317 testUnexpectedResult(chrono.fr, "32 Aout", new Date(2012, 7, 10));
318
319 testUnexpectedResult(chrono.fr, "29 Fevrier", new Date(2013, 7, 10));
320});