1 | import * as chrono from "../../src";
|
2 | import { testSingleCase, testUnexpectedResult } from "../test_util";
|
3 |
|
4 | test("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 |
|
132 | test("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 |
|
206 | test("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 |
|
242 | test("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 |
|
277 | test("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 |
|
312 | test("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 | });
|