1 | import * as chrono from "../../src";
|
2 | import { testSingleCase } from "../test_util";
|
3 |
|
4 | test("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 |
|
84 | test("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 |
|
131 | test("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 |
|
175 | test("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 |
|
201 | test("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 |
|
224 | test("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 |
|
247 | test("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 |
|
263 | test("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 | });
|