UNPKG

10.4 kBPlain TextView Raw
1import * as chrono from "../../src";
2import { testSingleCase } from "../test_util";
3
4test("Test - Month-Year expression", function () {
5 testSingleCase(chrono, "September 2012", (result) => {
6 expect(result.text).toBe("September 2012");
7
8 expect(result.start.get("year")).toBe(2012);
9 expect(result.start.get("month")).toBe(9);
10 expect(result.start.get("day")).toBe(1);
11
12 expect(result.start.isCertain("year")).toBe(true);
13 expect(result.start.isCertain("month")).toBe(true);
14 expect(result.start.isCertain("day")).toBe(false);
15
16 expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
17 });
18
19 testSingleCase(chrono, "Sept 2012", (result) => {
20 expect(result.text).toBe("Sept 2012");
21
22 expect(result.start.get("year")).toBe(2012);
23 expect(result.start.get("month")).toBe(9);
24 expect(result.start.get("day")).toBe(1);
25
26 expect(result.start.isCertain("year")).toBe(true);
27 expect(result.start.isCertain("month")).toBe(true);
28 expect(result.start.isCertain("day")).toBe(false);
29
30 expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
31 });
32
33 testSingleCase(chrono, "Sep 2012", (result) => {
34 expect(result.text).toBe("Sep 2012");
35
36 expect(result.start.get("year")).toBe(2012);
37 expect(result.start.get("month")).toBe(9);
38 expect(result.start.get("day")).toBe(1);
39
40 expect(result.start.isCertain("year")).toBe(true);
41 expect(result.start.isCertain("month")).toBe(true);
42 expect(result.start.isCertain("day")).toBe(false);
43
44 expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
45 });
46
47 testSingleCase(chrono, "Sep. 2012", (result) => {
48 expect(result.text).toBe("Sep. 2012");
49
50 expect(result.start.get("year")).toBe(2012);
51 expect(result.start.get("month")).toBe(9);
52 expect(result.start.get("day")).toBe(1);
53
54 expect(result.start.isCertain("year")).toBe(true);
55 expect(result.start.isCertain("month")).toBe(true);
56 expect(result.start.isCertain("day")).toBe(false);
57
58 expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
59 });
60
61 testSingleCase(chrono, "Sep-2012", (result) => {
62 expect(result.start).not.toBeNull();
63 expect(result.start.get("year")).toBe(2012);
64 expect(result.start.get("month")).toBe(9);
65
66 expect(result.index).toBe(0);
67 expect(result.text).toBe("Sep-2012");
68
69 expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
70 });
71
72 testSingleCase(chrono, "Statement of comprehensive income for the year ended Dec. 2021", (result) => {
73 expect(result.text).toBe("Dec. 2021");
74
75 expect(result.start.get("year")).toBe(2021);
76 expect(result.start.get("month")).toBe(12);
77
78 expect(result.start.isCertain("year")).toBe(true);
79 expect(result.start.isCertain("month")).toBe(true);
80 expect(result.start.isCertain("day")).toBe(false);
81 });
82});
83
84test("Test - Month-Only expression", function () {
85 testSingleCase(chrono, "In January", new Date(2020, 11 - 1, 22), (result) => {
86 expect(result.text).toContain("January");
87
88 expect(result.start).not.toBeNull();
89 expect(result.start.get("year")).toBe(2021);
90 expect(result.start.get("month")).toBe(1);
91 expect(result.start.get("day")).toBe(1);
92
93 expect(result.start.isCertain("year")).toBe(false);
94 expect(result.start.isCertain("month")).toBe(true);
95 expect(result.start.isCertain("day")).toBe(false);
96
97 expect(result.start).toBeDate(new Date(2021, 1 - 1, 1, 12));
98 });
99
100 testSingleCase(chrono, "in Jan", new Date(2020, 11 - 1, 22), (result) => {
101 expect(result.text).toContain("Jan");
102
103 expect(result.start).not.toBeNull();
104 expect(result.start.get("year")).toBe(2021);
105 expect(result.start.get("month")).toBe(1);
106 expect(result.start.get("day")).toBe(1);
107
108 expect(result.start.isCertain("year")).toBe(false);
109 expect(result.start.isCertain("month")).toBe(true);
110 expect(result.start.isCertain("day")).toBe(false);
111
112 expect(result.start).toBeDate(new Date(2021, 1 - 1, 1, 12));
113 });
114
115 testSingleCase(chrono, "May", new Date(2020, 11 - 1, 22), (result) => {
116 expect(result.text).toContain("May");
117
118 expect(result.start).not.toBeNull();
119 expect(result.start.get("year")).toBe(2021);
120 expect(result.start.get("month")).toBe(5);
121 expect(result.start.get("day")).toBe(1);
122
123 expect(result.start.isCertain("year")).toBe(false);
124 expect(result.start.isCertain("month")).toBe(true);
125 expect(result.start.isCertain("day")).toBe(false);
126
127 expect(result.start).toBeDate(new Date(2021, 5 - 1, 1, 12));
128 });
129});
130
131test("Test - Month-Only Range expression", () => {
132 testSingleCase(chrono, "From May to December", new Date(2023, 4 - 1, 9), (result) => {
133 expect(result.start.get("year")).toBe(2023);
134 expect(result.start.get("month")).toBe(5);
135 expect(result.end.get("year")).toBe(2023);
136 expect(result.end.get("month")).toBe(12);
137 });
138
139 testSingleCase(chrono, "From December to May", new Date(2023, 4 - 1, 9), (result) => {
140 expect(result.start.get("year")).toBe(2022);
141 expect(result.start.get("month")).toBe(12);
142 expect(result.end.get("year")).toBe(2023);
143 expect(result.end.get("month")).toBe(5);
144 });
145
146 testSingleCase(chrono, "From May to December, 2022", new Date(2023, 4 - 1, 9), (result) => {
147 expect(result.start.get("year")).toBe(2022);
148 expect(result.start.get("month")).toBe(5);
149 expect(result.end.get("year")).toBe(2022);
150 expect(result.end.get("month")).toBe(12);
151 });
152
153 testSingleCase(chrono, "From December to May 2022", new Date(2023, 4 - 1, 9), (result) => {
154 expect(result.start.get("year")).toBe(2021);
155 expect(result.start.get("month")).toBe(12);
156 expect(result.end.get("year")).toBe(2022);
157 expect(result.end.get("month")).toBe(5);
158 });
159
160 testSingleCase(chrono, "From December to May 2020", new Date(2023, 4 - 1, 9), (result) => {
161 expect(result.start.get("year")).toBe(2019);
162 expect(result.start.get("month")).toBe(12);
163 expect(result.end.get("year")).toBe(2020);
164 expect(result.end.get("month")).toBe(5);
165 });
166
167 testSingleCase(chrono, "From December to May 2025", new Date(2023, 4 - 1, 9), (result) => {
168 expect(result.start.get("year")).toBe(2024);
169 expect(result.start.get("month")).toBe(12);
170 expect(result.end.get("year")).toBe(2025);
171 expect(result.end.get("month")).toBe(5);
172 });
173});
174
175test("Test - Month with farward date option", () => {
176 testSingleCase(chrono, "in December", new Date(2023, 4 - 1, 9), { forwardDate: true }, (result) => {
177 expect(result.start.get("year")).toBe(2023);
178 expect(result.start.get("month")).toBe(12);
179 });
180
181 testSingleCase(chrono, "in May", new Date(2023, 4 - 1, 9), { forwardDate: true }, (result) => {
182 expect(result.start.get("year")).toBe(2023);
183 expect(result.start.get("month")).toBe(5);
184 });
185
186 testSingleCase(chrono, "From May to December", new Date(2023, 4 - 1, 9), { forwardDate: true }, (result) => {
187 expect(result.start.get("year")).toBe(2023);
188 expect(result.start.get("month")).toBe(5);
189 expect(result.end.get("year")).toBe(2023);
190 expect(result.end.get("month")).toBe(12);
191 });
192
193 testSingleCase(chrono, "From December to May", new Date(2023, 4 - 1, 9), { forwardDate: true }, (result) => {
194 expect(result.start.get("year")).toBe(2023);
195 expect(result.start.get("month")).toBe(12);
196 expect(result.end.get("year")).toBe(2024);
197 expect(result.end.get("month")).toBe(5);
198 });
199});
200
201test("Test - Month expression in context", function () {
202 testSingleCase(chrono, "The date is Sep 2012 is the date", (result) => {
203 expect(result.index).toBe(12);
204 expect(result.text).toBe("Sep 2012");
205
206 expect(result.start).not.toBeNull();
207 expect(result.start.get("year")).toBe(2012);
208 expect(result.start.get("month")).toBe(9);
209
210 expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
211 });
212
213 testSingleCase(chrono, "By Angie Mar November 2019", (result) => {
214 expect(result.text).toBe("November 2019");
215
216 expect(result.start).not.toBeNull();
217 expect(result.start.get("year")).toBe(2019);
218 expect(result.start.get("month")).toBe(11);
219
220 expect(result.start).toBeDate(new Date(2019, 11 - 1, 1, 12));
221 });
222});
223
224test("Test - Month slash expression", function () {
225 testSingleCase(chrono, "9/2012", new Date(2012, 7, 10), (result) => {
226 expect(result.start).not.toBeNull();
227 expect(result.start.get("year")).toBe(2012);
228 expect(result.start.get("month")).toBe(9);
229
230 expect(result.index).toBe(0);
231 expect(result.text).toBe("9/2012");
232
233 expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
234 });
235
236 testSingleCase(chrono, "09/2012", new Date(2012, 7, 10), (result) => {
237 expect(result.start.get("year")).toBe(2012);
238 expect(result.start.get("month")).toBe(9);
239
240 expect(result.index).toBe(0);
241 expect(result.text).toBe("09/2012");
242
243 expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
244 });
245});
246
247test("Test - year 90's parsing", () => {
248 testSingleCase(chrono, "Aug 96", new Date(2012, 7, 10), (result) => {
249 expect(result.text).toBe("Aug 96");
250
251 expect(result.start.get("year")).toBe(1996);
252 expect(result.start.get("month")).toBe(8);
253 });
254
255 testSingleCase(chrono, "96 Aug 96", new Date(2012, 7, 10), (result) => {
256 expect(result.text).toBe("Aug 96");
257
258 expect(result.start.get("year")).toBe(1996);
259 expect(result.start.get("month")).toBe(8);
260 });
261});
262
263test("Test - Month should not have timezone", () => {
264 testSingleCase(
265 chrono,
266 "People visiting Buñol towards the end of August get a good chance to participate in La Tomatina (under normal circumstances)",
267 new Date(2012, 7, 10),
268 (result) => {
269 expect(result.text).toBe("August");
270 expect(result.start.get("year")).toBe(2012);
271 expect(result.start.get("month")).toBe(8);
272 }
273 );
274});