1 | import * as chrono from "../../src";
|
2 | import { testSingleCase } from "../test_util";
|
3 | import { ParsingResult } from "../../src/results";
|
4 |
|
5 | test("Test - 'This' expressions", () => {
|
6 |
|
7 | testSingleCase(chrono.nl, "deze week", new Date(2017, 11 - 1, 19, 12), (result, text) => {
|
8 | expect(result.text).toBe(text);
|
9 | expect(result.start.get("year")).toBe(2017);
|
10 | expect(result.start.get("month")).toBe(11);
|
11 | expect(result.start.get("day")).toBe(19);
|
12 | expect(result.start.get("hour")).toBe(12);
|
13 | });
|
14 |
|
15 |
|
16 | testSingleCase(chrono.nl, "deze maand", new Date(2017, 11 - 1, 19, 12), (result, text) => {
|
17 | expect(result.text).toBe(text);
|
18 | expect(result.start.get("year")).toBe(2017);
|
19 | expect(result.start.get("month")).toBe(11);
|
20 | expect(result.start.get("day")).toBe(1);
|
21 | expect(result.start.get("hour")).toBe(12);
|
22 | });
|
23 |
|
24 |
|
25 | testSingleCase(chrono.nl, "dit jaar", new Date(2017, 11 - 1, 19, 12), (result, text) => {
|
26 | expect(result.text).toBe(text);
|
27 | expect(result.start.get("year")).toBe(2017);
|
28 | expect(result.start.get("month")).toBe(1);
|
29 | expect(result.start.get("day")).toBe(1);
|
30 | expect(result.start.get("hour")).toBe(12);
|
31 | });
|
32 | });
|
33 |
|
34 | test("Test - Past relative expressions", () => {
|
35 |
|
36 | testSingleCase(chrono.nl, "afgelopen week", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
37 | expect(result.text).toBe(text);
|
38 | expect(result.start.get("year")).toBe(2016);
|
39 | expect(result.start.get("month")).toBe(9);
|
40 | expect(result.start.get("day")).toBe(24);
|
41 | expect(result.start.get("hour")).toBe(12);
|
42 | });
|
43 |
|
44 |
|
45 | testSingleCase(chrono.nl, "afgelopen maand", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
46 | expect(result.text).toBe(text);
|
47 | expect(result.start.get("year")).toBe(2016);
|
48 | expect(result.start.get("month")).toBe(9);
|
49 | expect(result.start.get("day")).toBe(1);
|
50 | expect(result.start.get("hour")).toBe(12);
|
51 | });
|
52 |
|
53 |
|
54 | testSingleCase(chrono.nl, "afgelopen dag", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
55 | expect(result.text).toBe(text);
|
56 | expect(result.start.get("year")).toBe(2016);
|
57 | expect(result.start.get("month")).toBe(9);
|
58 | expect(result.start.get("day")).toBe(30);
|
59 | expect(result.start.get("hour")).toBe(12);
|
60 | });
|
61 |
|
62 |
|
63 | testSingleCase(chrono.nl, "vorige week", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
64 | expect(result.text).toBe(text);
|
65 | expect(result.start.get("year")).toBe(2016);
|
66 | expect(result.start.get("month")).toBe(9);
|
67 | expect(result.start.get("day")).toBe(24);
|
68 | expect(result.start.get("hour")).toBe(12);
|
69 | });
|
70 | });
|
71 |
|
72 | test("Test - Future relative expressions", () => {
|
73 |
|
74 | testSingleCase(chrono.nl, "komend uur", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
75 | expect(result.text).toBe(text);
|
76 | expect(result.start.get("year")).toBe(2016);
|
77 | expect(result.start.get("month")).toBe(10);
|
78 | expect(result.start.get("day")).toBe(1);
|
79 | expect(result.start.get("hour")).toBe(13);
|
80 | });
|
81 |
|
82 |
|
83 | testSingleCase(chrono.nl, "volgende week", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
84 | expect(result.text).toBe(text);
|
85 | expect(result.start.get("year")).toBe(2016);
|
86 | expect(result.start.get("month")).toBe(10);
|
87 | expect(result.start.get("day")).toBe(8);
|
88 | expect(result.start.get("hour")).toBe(12);
|
89 | });
|
90 |
|
91 |
|
92 | testSingleCase(chrono.nl, "volgende dag", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
93 | expect(result.text).toBe(text);
|
94 | expect(result.start.get("year")).toBe(2016);
|
95 | expect(result.start.get("month")).toBe(10);
|
96 | expect(result.start.get("day")).toBe(2);
|
97 | expect(result.start.get("hour")).toBe(12);
|
98 | });
|
99 |
|
100 |
|
101 | testSingleCase(chrono.nl, "volgende maand", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
102 | expect(result.text).toBe(text);
|
103 | expect(result.start.get("year")).toBe(2016);
|
104 | expect(result.start.get("month")).toBe(11);
|
105 | expect(result.start.get("day")).toBe(1);
|
106 | expect(result.start.get("hour")).toBe(12);
|
107 |
|
108 | expect(result.start.isCertain("year")).toBe(true);
|
109 | expect(result.start.isCertain("month")).toBe(true);
|
110 | expect(result.start.isCertain("day")).toBe(false);
|
111 | expect(result.start.isCertain("hour")).toBe(false);
|
112 | });
|
113 |
|
114 |
|
115 | testSingleCase(chrono.nl, "aankomende maand", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
116 | expect(result.text).toBe(text);
|
117 | expect(result.start.get("year")).toBe(2016);
|
118 | expect(result.start.get("month")).toBe(11);
|
119 | expect(result.start.get("day")).toBe(1);
|
120 | expect(result.start.get("hour")).toBe(12);
|
121 |
|
122 | expect(result.start.isCertain("year")).toBe(true);
|
123 | expect(result.start.isCertain("month")).toBe(true);
|
124 | expect(result.start.isCertain("day")).toBe(false);
|
125 | expect(result.start.isCertain("hour")).toBe(false);
|
126 | });
|
127 |
|
128 |
|
129 | testSingleCase(chrono.nl, "volgend jaar", new Date(2020, 11 - 1, 22, 12, 11, 32, 6), (result, text) => {
|
130 | expect(result.text).toBe(text);
|
131 | expect(result.start.get("year")).toBe(2021);
|
132 | expect(result.start.get("month")).toBe(11);
|
133 | expect(result.start.get("day")).toBe(22);
|
134 | expect(result.start.get("hour")).toBe(12);
|
135 | expect(result.start.get("minute")).toBe(11);
|
136 | expect(result.start.get("second")).toBe(32);
|
137 | expect(result.start.get("millisecond")).toBe(6);
|
138 |
|
139 | expect(result.start.isCertain("year")).toBe(true);
|
140 | expect(result.start.isCertain("month")).toBe(false);
|
141 | expect(result.start.isCertain("day")).toBe(false);
|
142 | expect(result.start.isCertain("hour")).toBe(false);
|
143 | expect(result.start.isCertain("minute")).toBe(false);
|
144 | expect(result.start.isCertain("second")).toBe(false);
|
145 | expect(result.start.isCertain("millisecond")).toBe(false);
|
146 | expect(result.start.isCertain("timezoneOffset")).toBe(false);
|
147 | });
|
148 | });
|
149 |
|
150 | test("Test - Relative date components' certainty", () => {
|
151 | const refDate = new Date(2016, 10 - 1, 7, 12);
|
152 |
|
153 |
|
154 | testSingleCase(chrono.nl, "komend uur", refDate, (result, text) => {
|
155 | expect(result.text).toBe(text);
|
156 | expect(result.start.get("year")).toBe(2016);
|
157 | expect(result.start.get("month")).toBe(10);
|
158 | expect(result.start.get("day")).toBe(7);
|
159 | expect(result.start.get("hour")).toBe(13);
|
160 | expect(result.start.get("timezoneOffset")).toBe(refDate.getTimezoneOffset() * -1);
|
161 |
|
162 | expect(result.start.isCertain("year")).toBe(true);
|
163 | expect(result.start.isCertain("month")).toBe(true);
|
164 | expect(result.start.isCertain("day")).toBe(true);
|
165 | expect(result.start.isCertain("hour")).toBe(true);
|
166 | expect(result.start.isCertain("timezoneOffset")).toBe(true);
|
167 | });
|
168 |
|
169 |
|
170 | testSingleCase(chrono.nl, "volgende maand", refDate, (result, text) => {
|
171 |
|
172 |
|
173 | expect(result.text).toBe(text);
|
174 | expect(result.start.get("year")).toBe(2016);
|
175 | expect(result.start.get("month")).toBe(11);
|
176 | expect(result.start.get("day")).toBe(7);
|
177 | expect(result.start.get("hour")).toBe(12);
|
178 |
|
179 |
|
180 | expect(result.start.isCertain("year")).toBe(true);
|
181 | expect(result.start.isCertain("month")).toBe(true);
|
182 | expect(result.start.isCertain("day")).toBe(false);
|
183 | expect(result.start.isCertain("hour")).toBe(false);
|
184 | expect(result.start.isCertain("timezoneOffset")).toBe(false);
|
185 | });
|
186 | });
|
187 |
|
188 | test("Test - Relative date components' certainty and imply timezone", () => {
|
189 | const refDate = new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)");
|
190 |
|
191 | {
|
192 |
|
193 | const text = "nu";
|
194 | const result = chrono.nl.parse(text, refDate)[0] as ParsingResult;
|
195 |
|
196 | expect(result.text).toBe(text);
|
197 | result.start.imply("timezoneOffset", 60);
|
198 |
|
199 | expect(result).toBeDate(new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)"));
|
200 | expect(result).toBeDate(new Date("Sun Nov 29 2020 5:24:13 GMT+0100"));
|
201 | }
|
202 |
|
203 | {
|
204 |
|
205 | const text = "morgen om 17 uur";
|
206 | const result = chrono.nl.parse(text, refDate)[0] as ParsingResult;
|
207 |
|
208 | expect(result.text).toBe(text);
|
209 | result.start.imply("timezoneOffset", 60);
|
210 |
|
211 | expect(result).toBeDate(new Date("Sun Dec 1 2020 1:00:00 GMT+0900 (Japan Standard Time)"));
|
212 | expect(result).toBeDate(new Date("Sun Nov 30 2020 17:00:00 GMT+0100"));
|
213 | }
|
214 |
|
215 | {
|
216 |
|
217 | const text = "binnen 10 minuten";
|
218 | const result = chrono.nl.parse(text, refDate)[0] as ParsingResult;
|
219 |
|
220 | expect(result.text).toBe(text);
|
221 | result.start.imply("timezoneOffset", 60);
|
222 |
|
223 | expect(result).toBeDate(new Date("Sun Nov 29 2020 13:34:13 GMT+0900 (Japan Standard Time)"));
|
224 | expect(result).toBeDate(new Date("Sun Nov 29 2020 5:34:13 GMT+0100"));
|
225 | }
|
226 | });
|