chrono-node 2.9.2 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/dist/cjs/results.js +15 -9
  2. package/dist/cjs/results.js.map +1 -1
  3. package/dist/esm/results.js +14 -9
  4. package/dist/esm/results.js.map +1 -1
  5. package/package.json +5 -1
  6. package/src/results.ts +40 -9
  7. package/test/calculation_duration.test.ts +0 -165
  8. package/test/calculation_weekdays.test.ts +0 -133
  9. package/test/de/de_casual.test.ts +0 -336
  10. package/test/de/de_dash.test.ts +0 -32
  11. package/test/de/de_month_name_little_endian.test.ts +0 -273
  12. package/test/de/de_time_exp.test.ts +0 -223
  13. package/test/de/de_time_units_casual_relative.test.ts +0 -120
  14. package/test/de/de_time_units_within.test.ts +0 -119
  15. package/test/de/de_weekday.test.ts +0 -158
  16. package/test/de/de_year.test.ts +0 -147
  17. package/test/debugging.test.ts +0 -17
  18. package/test/en/en.test.ts +0 -191
  19. package/test/en/en_casual.test.ts +0 -425
  20. package/test/en/en_inter_std.test.ts +0 -118
  21. package/test/en/en_merging_relative_dates.test.ts +0 -50
  22. package/test/en/en_month.test.ts +0 -339
  23. package/test/en/en_month_name_little_endian.test.ts +0 -448
  24. package/test/en/en_month_name_middle_endian.test.ts +0 -386
  25. package/test/en/en_performance.test.ts +0 -26
  26. package/test/en/en_relative.test.ts +0 -393
  27. package/test/en/en_slash.test.ts +0 -284
  28. package/test/en/en_time_exp.test.ts +0 -535
  29. package/test/en/en_time_units_ago.test.ts +0 -357
  30. package/test/en/en_time_units_casual_relative.test.ts +0 -186
  31. package/test/en/en_time_units_later.test.ts +0 -361
  32. package/test/en/en_time_units_within.test.ts +0 -417
  33. package/test/en/en_timezone_exp.test.ts +0 -410
  34. package/test/en/en_weekday.test.ts +0 -573
  35. package/test/en/en_year.test.ts +0 -138
  36. package/test/en/en_year_month_day.test.ts +0 -101
  37. package/test/en/negative_cases.test.ts +0 -99
  38. package/test/es/es_casual.test.ts +0 -175
  39. package/test/es/es_month_name_little_endian.test.ts +0 -217
  40. package/test/es/es_slash.test.ts +0 -26
  41. package/test/es/es_time_exp.test.ts +0 -175
  42. package/test/es/es_time_units_within.test.ts +0 -119
  43. package/test/fi/fi_casual.test.ts +0 -99
  44. package/test/fi/fi_casual_time.test.ts +0 -56
  45. package/test/fi/fi_month_name_little_endian.test.ts +0 -50
  46. package/test/fi/fi_time_exp.test.ts +0 -39
  47. package/test/fi/fi_time_units_ago.test.ts +0 -93
  48. package/test/fi/fi_time_units_casual_relative.test.ts +0 -117
  49. package/test/fi/fi_time_units_within.test.ts +0 -74
  50. package/test/fi/fi_weekday.test.ts +0 -90
  51. package/test/fr/fr_casual.test.ts +0 -314
  52. package/test/fr/fr_little_endian.test.ts +0 -320
  53. package/test/fr/fr_slash.test.ts +0 -49
  54. package/test/fr/fr_time_exp.test.ts +0 -588
  55. package/test/fr/fr_time_units_ago.test.ts +0 -103
  56. package/test/fr/fr_time_units_casual_relative.test.ts +0 -114
  57. package/test/fr/fr_time_units_within.test.ts +0 -129
  58. package/test/fr/fr_weekday.test.ts +0 -130
  59. package/test/it/it_casual.test.ts +0 -81
  60. package/test/it/it_month_name_little_endian.test.ts +0 -28
  61. package/test/it/it_month_name_middle_endian.test.ts +0 -39
  62. package/test/it/it_time_exp.test.ts +0 -84
  63. package/test/it/it_weekday.test.ts +0 -37
  64. package/test/it/it_year_month_day.test.ts +0 -41
  65. package/test/ja/ja_casual.test.ts +0 -73
  66. package/test/ja/ja_slash_date_format.test.ts +0 -60
  67. package/test/ja/ja_standard.test.ts +0 -235
  68. package/test/ja/ja_time_exp.test.ts +0 -305
  69. package/test/ja/ja_weekday.test.ts +0 -183
  70. package/test/nl/nl_casual.test.ts +0 -408
  71. package/test/nl/nl_month.test.ts +0 -205
  72. package/test/nl/nl_month_name_little_endian.test.ts +0 -358
  73. package/test/nl/nl_relative.test.ts +0 -242
  74. package/test/nl/nl_slash.test.ts +0 -206
  75. package/test/nl/nl_time_exp.test.ts +0 -79
  76. package/test/nl/nl_time_units_ago.test.ts +0 -243
  77. package/test/nl/nl_time_units_casual_relative.test.ts +0 -130
  78. package/test/nl/nl_time_units_later.test.ts +0 -250
  79. package/test/nl/nl_time_units_within.test.ts +0 -225
  80. package/test/nl/nl_weekday.test.ts +0 -216
  81. package/test/pt/pt_casual.test.ts +0 -175
  82. package/test/pt/pt_month_name_little_endian.test.ts +0 -217
  83. package/test/pt/pt_slash.test.ts +0 -26
  84. package/test/pt/pt_time_exp.test.ts +0 -175
  85. package/test/result.test.ts +0 -283
  86. package/test/ru/ru_casual.test.ts +0 -159
  87. package/test/ru/ru_month.test.ts +0 -70
  88. package/test/ru/ru_month_name_little_endian.test.ts +0 -145
  89. package/test/ru/ru_relative.test.ts +0 -107
  90. package/test/ru/ru_time_exp.test.ts +0 -111
  91. package/test/ru/ru_time_units_ago.test.ts +0 -48
  92. package/test/ru/ru_time_units_casual_relative.test.ts +0 -190
  93. package/test/ru/ru_time_units_within.test.ts +0 -16
  94. package/test/ru/ru_weekday.test.ts +0 -52
  95. package/test/sv/sv_casual.test.ts +0 -87
  96. package/test/sv/sv_month_name_little_endian.test.ts +0 -48
  97. package/test/sv/sv_time_units_casual_relative.test.ts +0 -143
  98. package/test/sv/sv_weekday.test.ts +0 -68
  99. package/test/system.test.ts +0 -247
  100. package/test/system_timezone.test.ts +0 -284
  101. package/test/test_util.ts +0 -135
  102. package/test/uk/uk_casual.test.ts +0 -153
  103. package/test/uk/uk_month.test.ts +0 -70
  104. package/test/uk/uk_month_name_little_endian.test.ts +0 -148
  105. package/test/uk/uk_relative.test.ts +0 -107
  106. package/test/uk/uk_time_exp.test.ts +0 -111
  107. package/test/uk/uk_time_units_ago.test.ts +0 -48
  108. package/test/uk/uk_time_units_casual_relative.test.ts +0 -142
  109. package/test/uk/uk_time_units_within.test.ts +0 -23
  110. package/test/uk/uk_weekday.test.ts +0 -52
  111. package/test/vi/vi_casual.test.ts +0 -84
  112. package/test/vi/vi_casual_time.test.ts +0 -77
  113. package/test/vi/vi_date_range.test.ts +0 -61
  114. package/test/vi/vi_forward_date.test.ts +0 -45
  115. package/test/vi/vi_month_year.test.ts +0 -40
  116. package/test/vi/vi_negative_cases.test.ts +0 -60
  117. package/test/vi/vi_slash.test.ts +0 -36
  118. package/test/vi/vi_standard.test.ts +0 -86
  119. package/test/vi/vi_strict.test.ts +0 -67
  120. package/test/vi/vi_time_exp.test.ts +0 -99
  121. package/test/vi/vi_time_units_ago.test.ts +0 -56
  122. package/test/vi/vi_time_units_casual_relative.test.ts +0 -56
  123. package/test/vi/vi_time_units_later.test.ts +0 -43
  124. package/test/vi/vi_time_units_within.test.ts +0 -24
  125. package/test/vi/vi_weekday.test.ts +0 -77
  126. package/test/vi/vi_year.test.ts +0 -42
  127. package/test/zh/hans/zh_hans_ago.test.ts +0 -58
  128. package/test/zh/hans/zh_hans_casual.test.ts +0 -242
  129. package/test/zh/hans/zh_hans_date.test.ts +0 -116
  130. package/test/zh/hans/zh_hans_deadline.test.ts +0 -175
  131. package/test/zh/hans/zh_hans_time_exp.test.ts +0 -508
  132. package/test/zh/hans/zh_hans_weekday.test.ts +0 -219
  133. package/test/zh/hant/zh_hant_ago.test.ts +0 -58
  134. package/test/zh/hant/zh_hant_casual.test.ts +0 -260
  135. package/test/zh/hant/zh_hant_date.test.ts +0 -116
  136. package/test/zh/hant/zh_hant_deadline.test.ts +0 -136
  137. package/test/zh/hant/zh_hant_time_exp.test.ts +0 -226
  138. package/test/zh/hant/zh_hant_weekday.test.ts +0 -175
  139. package/test/zh/zh.test.ts +0 -36
  140. package/tsconfig.build.esm.json +0 -8
  141. package/tsconfig.build.json +0 -10
  142. package/tsconfig.json +0 -29
@@ -1,573 +0,0 @@
1
- import * as chrono from "../../src";
2
- import { testSingleCase } from "../test_util";
3
-
4
- test("Test - Single Expression", function () {
5
- testSingleCase(chrono.casual, "Monday", new Date(2012, 7, 9), (result) => {
6
- expect(result.index).toBe(0);
7
- expect(result.text).toBe("Monday");
8
-
9
- expect(result.start).not.toBeNull();
10
- expect(result.start.get("year")).toBe(2012);
11
- expect(result.start.get("month")).toBe(8);
12
- expect(result.start.get("day")).toBe(6);
13
- expect(result.start.get("weekday")).toBe(1);
14
-
15
- expect(result.start.isCertain("day")).toBe(false);
16
- expect(result.start.isCertain("month")).toBe(false);
17
- expect(result.start.isCertain("year")).toBe(false);
18
- expect(result.start.isCertain("weekday")).toBe(true);
19
-
20
- expect(result.start).toBeDate(new Date(2012, 7, 6, 12));
21
- });
22
-
23
- testSingleCase(chrono.casual, "Thursday", new Date(2012, 7, 9), (result) => {
24
- expect(result.index).toBe(0);
25
- expect(result.text).toBe("Thursday");
26
-
27
- expect(result.start).not.toBeNull();
28
- expect(result.start.get("year")).toBe(2012);
29
- expect(result.start.get("month")).toBe(8);
30
- expect(result.start.get("day")).toBe(9);
31
- expect(result.start.get("weekday")).toBe(4);
32
-
33
- expect(result.start).toBeDate(new Date(2012, 7, 9, 12));
34
- });
35
-
36
- testSingleCase(chrono.casual, "Sunday", new Date(2012, 7, 9), (result) => {
37
- expect(result.index).toBe(0);
38
- expect(result.text).toBe("Sunday");
39
-
40
- expect(result.start).not.toBeNull();
41
- expect(result.start.get("year")).toBe(2012);
42
- expect(result.start.get("month")).toBe(8);
43
- expect(result.start.get("day")).toBe(12);
44
- expect(result.start.get("weekday")).toBe(0);
45
-
46
- expect(result.start).toBeDate(new Date(2012, 7, 12, 12));
47
- });
48
-
49
- testSingleCase(chrono.casual, "The Deadline is last Friday...", new Date(2012, 7, 9), (result) => {
50
- expect(result.index).toBe(16);
51
- expect(result.text).toBe("last Friday");
52
-
53
- expect(result.start).not.toBeNull();
54
- expect(result.start.get("year")).toBe(2012);
55
- expect(result.start.get("month")).toBe(8);
56
- expect(result.start.get("day")).toBe(3);
57
- expect(result.start.get("weekday")).toBe(5);
58
-
59
- expect(result.start).toBeDate(new Date(2012, 7, 3, 12));
60
- });
61
-
62
- testSingleCase(chrono.casual, "The Deadline is past Friday...", new Date(2012, 7, 9), (result) => {
63
- expect(result.index).toBe(16);
64
- expect(result.text).toBe("past Friday");
65
-
66
- expect(result.start).not.toBeNull();
67
- expect(result.start.get("year")).toBe(2012);
68
- expect(result.start.get("month")).toBe(8);
69
- expect(result.start.get("day")).toBe(3);
70
- expect(result.start.get("weekday")).toBe(5);
71
-
72
- expect(result.start).toBeDate(new Date(2012, 7, 3, 12));
73
- });
74
-
75
- testSingleCase(chrono.casual, "Let's have a meeting on Friday next week", new Date("Sat Apr 18 2015"), (result) => {
76
- expect(result.index).toBe(21);
77
- expect(result.text).toBe("on Friday next week");
78
-
79
- expect(result.start).not.toBeNull();
80
- expect(result.start.get("year")).toBe(2015);
81
- expect(result.start.get("month")).toBe(4);
82
- expect(result.start.get("day")).toBe(24);
83
- expect(result.start.get("weekday")).toBe(5);
84
-
85
- expect(result.start).toBeDate(new Date(2015, 3, 24, 12));
86
- });
87
-
88
- testSingleCase(
89
- chrono.casual,
90
- "I plan on taking the day off on Tuesday, next week",
91
- new Date(2015, 3, 18),
92
- (result) => {
93
- expect(result.index).toBe(29);
94
- expect(result.text).toBe("on Tuesday, next week");
95
-
96
- expect(result.start).not.toBeNull();
97
- expect(result.start.get("year")).toBe(2015);
98
- expect(result.start.get("month")).toBe(4);
99
- expect(result.start.get("day")).toBe(21);
100
- expect(result.start.get("weekday")).toBe(2);
101
-
102
- expect(result.start).toBeDate(new Date(2015, 3, 21, 12));
103
- }
104
- );
105
- });
106
-
107
- test("Test - Weekday casual `This` guessing", function () {
108
- testSingleCase(chrono.casual, "This Saturday", new Date("Tue Aug 2 2022"), (result) => {
109
- expect(result.start.get("day")).toBe(6);
110
- expect(result.start.get("month")).toBe(8);
111
- expect(result.start.get("year")).toBe(2022);
112
- });
113
-
114
- testSingleCase(chrono.casual, "This Sunday", new Date("Tue Aug 2 2022"), (result) => {
115
- expect(result.start.get("day")).toBe(7);
116
- expect(result.start.get("month")).toBe(8);
117
- expect(result.start.get("year")).toBe(2022);
118
- });
119
-
120
- testSingleCase(chrono.casual, "This Wednesday", new Date("Tue Aug 2 2022"), (result) => {
121
- expect(result.start.get("day")).toBe(3);
122
- expect(result.start.get("month")).toBe(8);
123
- expect(result.start.get("year")).toBe(2022);
124
- });
125
-
126
- testSingleCase(chrono.casual, "This Saturday", new Date("Sun Aug 7 2022"), (result) => {
127
- expect(result.start.get("day")).toBe(13);
128
- expect(result.start.get("month")).toBe(8);
129
- expect(result.start.get("year")).toBe(2022);
130
- });
131
-
132
- testSingleCase(chrono.casual, "This Sunday", new Date("Sun Aug 7 2022"), (result) => {
133
- expect(result.start.get("day")).toBe(7);
134
- expect(result.start.get("month")).toBe(8);
135
- expect(result.start.get("year")).toBe(2022);
136
- });
137
-
138
- testSingleCase(chrono.casual, "This Wednesday", new Date("Sun Aug 7 2022"), (result) => {
139
- expect(result.start.get("day")).toBe(10);
140
- expect(result.start.get("month")).toBe(8);
141
- expect(result.start.get("year")).toBe(2022);
142
- });
143
- });
144
-
145
- test("Test - Weekday casual `Last` guessing", function () {
146
- testSingleCase(chrono.casual, "Last Saturday", new Date("Tue Aug 2 2022"), (result) => {
147
- expect(result.start.get("day")).toBe(30);
148
- expect(result.start.get("month")).toBe(7);
149
- expect(result.start.get("year")).toBe(2022);
150
- });
151
-
152
- testSingleCase(chrono.casual, "Last Sunday", new Date("Tue Aug 2 2022"), (result) => {
153
- expect(result.start.get("day")).toBe(31);
154
- expect(result.start.get("month")).toBe(7);
155
- expect(result.start.get("year")).toBe(2022);
156
- });
157
-
158
- testSingleCase(chrono.casual, "Last Wednesday", new Date("Tue Aug 2 2022"), (result) => {
159
- expect(result.start.get("day")).toBe(27);
160
- expect(result.start.get("month")).toBe(7);
161
- expect(result.start.get("year")).toBe(2022);
162
- });
163
- });
164
-
165
- test("Test - Weekday casual `Next` guessing", function () {
166
- {
167
- const refDate = new Date("Tue Aug 2 2022");
168
- testSingleCase(chrono.casual, "Next Saturday", refDate, (result) => {
169
- expect(result.start.get("day")).toBe(13);
170
- expect(result.start.get("month")).toBe(8);
171
- expect(result.start.get("year")).toBe(2022);
172
- });
173
- testSingleCase(chrono.casual, "Next Sunday", refDate, (result) => {
174
- expect(result.start.get("day")).toBe(14);
175
- expect(result.start.get("month")).toBe(8);
176
- expect(result.start.get("year")).toBe(2022);
177
- });
178
- testSingleCase(chrono.casual, "Next Wednesday", refDate, (result) => {
179
- expect(result.start.get("day")).toBe(10);
180
- expect(result.start.get("month")).toBe(8);
181
- expect(result.start.get("year")).toBe(2022);
182
- });
183
- }
184
- {
185
- const refDate = new Date("Saturday Aug 6 2022");
186
- testSingleCase(chrono.casual, "Next Saturday", refDate, (result) => {
187
- expect(result.start.get("day")).toBe(13);
188
- expect(result.start.get("month")).toBe(8);
189
- expect(result.start.get("year")).toBe(2022);
190
- });
191
- testSingleCase(chrono.casual, "Next Sunday", refDate, (result) => {
192
- expect(result.start.get("day")).toBe(14);
193
- expect(result.start.get("month")).toBe(8);
194
- expect(result.start.get("year")).toBe(2022);
195
- });
196
- testSingleCase(chrono.casual, "Next Wednesday", refDate, (result) => {
197
- expect(result.start.get("day")).toBe(10);
198
- expect(result.start.get("month")).toBe(8);
199
- expect(result.start.get("year")).toBe(2022);
200
- });
201
- }
202
- {
203
- const refDate = new Date("Sun Aug 7 2022");
204
- testSingleCase(chrono.casual, "Next Saturday", refDate, (result) => {
205
- expect(result.start.get("day")).toBe(13);
206
- expect(result.start.get("month")).toBe(8);
207
- expect(result.start.get("year")).toBe(2022);
208
- });
209
- testSingleCase(chrono.casual, "Next Sunday", refDate, (result) => {
210
- expect(result.start.get("day")).toBe(14);
211
- expect(result.start.get("month")).toBe(8);
212
- expect(result.start.get("year")).toBe(2022);
213
- });
214
- testSingleCase(chrono.casual, "Next Wednesday", refDate, (result) => {
215
- expect(result.start.get("day")).toBe(10);
216
- expect(result.start.get("month")).toBe(8);
217
- expect(result.start.get("year")).toBe(2022);
218
- });
219
- }
220
- });
221
-
222
- test("Test - Casual 'weekend' and 'weekday'", () => {
223
- {
224
- const refDateOnFriday = new Date(2024, 10 - 1, 18, 12, 0);
225
- testSingleCase(chrono.casual, "last weekend", refDateOnFriday, (result, text) => {
226
- expect(result.text).toBe(text);
227
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 13, 12)); // Sunday
228
- });
229
- testSingleCase(chrono.casual, "this weekend", refDateOnFriday, (result, text) => {
230
- expect(result.text).toBe(text);
231
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 19, 12)); // Saturday
232
- });
233
- testSingleCase(chrono.casual, "next weekend", refDateOnFriday, (result, text) => {
234
- expect(result.text).toBe(text);
235
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 26, 12)); // Saturday
236
- });
237
- }
238
- });
239
-
240
- test("Test - Casual 'weekday' mentioning", () => {
241
- {
242
- const refDateOnFriday = new Date(2024, 10 - 1, 18, 12, 0);
243
- testSingleCase(chrono.casual, "last weekday", refDateOnFriday, (result, text) => {
244
- expect(result.text).toBe(text);
245
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 17, 12)); // Thursday
246
- });
247
- testSingleCase(chrono.casual, "next weekday", refDateOnFriday, (result, text) => {
248
- expect(result.text).toBe(text);
249
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 21, 12)); // Monday
250
- });
251
- }
252
- {
253
- const refDateOnSaturday = new Date(2024, 10 - 1, 19, 12, 0);
254
- testSingleCase(chrono.casual, "last weekday", refDateOnSaturday, (result, text) => {
255
- expect(result.text).toBe(text);
256
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 18, 12)); // Friday
257
- });
258
- testSingleCase(chrono.casual, "next weekday", refDateOnSaturday, (result, text) => {
259
- expect(result.text).toBe(text);
260
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 21, 12)); // Monday
261
- });
262
- }
263
- });
264
-
265
- test("Test - Weekday With Casual Time", function () {
266
- testSingleCase(chrono.casual, "Lets meet on Tuesday morning", new Date(2015, 3, 18), (result) => {
267
- expect(result.index).toBe(10);
268
- expect(result.text).toBe("on Tuesday morning");
269
-
270
- expect(result.start).not.toBeNull();
271
- expect(result.start.get("year")).toBe(2015);
272
- expect(result.start.get("month")).toBe(4);
273
- expect(result.start.get("day")).toBe(21);
274
- expect(result.start.get("weekday")).toBe(2);
275
- expect(result.start.get("hour")).toBe(6);
276
-
277
- expect(result.start).toBeDate(new Date(2015, 3, 21, 6));
278
- });
279
- });
280
-
281
- test("Test - Weekday Overlap", function () {
282
- testSingleCase(chrono.casual, "Sunday, December 7, 2014", new Date(2012, 7, 9), (result) => {
283
- expect(result.index).toBe(0);
284
- expect(result.text).toBe("Sunday, December 7, 2014");
285
-
286
- expect(result.start).not.toBeNull();
287
- expect(result.start.get("year")).toBe(2014);
288
- expect(result.start.get("month")).toBe(12);
289
- expect(result.start.get("day")).toBe(7);
290
- expect(result.start.get("weekday")).toBe(0);
291
-
292
- expect(result.start.isCertain("day")).toBe(true);
293
- expect(result.start.isCertain("month")).toBe(true);
294
- expect(result.start.isCertain("year")).toBe(true);
295
- expect(result.start.isCertain("weekday")).toBe(true);
296
-
297
- expect(result.start).toBeDate(new Date(2014, 12 - 1, 7, 12));
298
- });
299
-
300
- testSingleCase(chrono.casual, "Sunday 12/7/2014", new Date(2012, 7, 9), (result) => {
301
- expect(result.index).toBe(0);
302
- expect(result.text).toBe("Sunday 12/7/2014");
303
-
304
- expect(result.start).not.toBeNull();
305
- expect(result.start.get("year")).toBe(2014);
306
- expect(result.start.get("month")).toBe(12);
307
- expect(result.start.get("day")).toBe(7);
308
- expect(result.start.get("weekday")).toBe(0);
309
-
310
- expect(result.start.isCertain("day")).toBe(true);
311
- expect(result.start.isCertain("month")).toBe(true);
312
- expect(result.start.isCertain("year")).toBe(true);
313
- expect(result.start.isCertain("weekday")).toBe(true);
314
-
315
- expect(result.start).toBeDate(new Date(2014, 12 - 1, 7, 12));
316
- });
317
- });
318
-
319
- test("Test - Weekday range", () => {
320
- testSingleCase(chrono.casual, "Friday to Monday", new Date(2023, 4 - 1, 9) /*Sunday*/, (result) => {
321
- expect(result.start.get("year")).toBe(2023);
322
- expect(result.start.get("month")).toBe(4);
323
- expect(result.start.get("day")).toBe(7);
324
- expect(result.start.get("weekday")).toBe(5);
325
-
326
- expect(result.end.get("year")).toBe(2023);
327
- expect(result.end.get("month")).toBe(4);
328
- expect(result.end.get("day")).toBe(10);
329
- expect(result.end.get("weekday")).toBe(1);
330
- });
331
-
332
- testSingleCase(chrono.casual, "Monday to Friday", new Date(2023, 4 - 1, 9) /*Sunday*/, (result) => {
333
- expect(result.start.get("year")).toBe(2023);
334
- expect(result.start.get("month")).toBe(4);
335
- expect(result.start.get("day")).toBe(10);
336
- expect(result.start.get("weekday")).toBe(1);
337
-
338
- expect(result.end.get("year")).toBe(2023);
339
- expect(result.end.get("month")).toBe(4);
340
- expect(result.end.get("day")).toBe(14);
341
- expect(result.end.get("weekday")).toBe(5);
342
- });
343
- });
344
-
345
- test("Test - Weekday 'of next/last/this week' connector", function () {
346
- // Ref date is a Tuesday — the same weekday as most test targets below.
347
- // Before the fix, 'Tuesday of next week' silently dropped the modifier and
348
- // resolved to today (0 days forward) instead of +7 days.
349
- const refDate = new Date("Tue Aug 2 2022");
350
-
351
- // --- of next week ---
352
-
353
- testSingleCase(chrono.casual, "Tuesday of next week", refDate, (result) => {
354
- expect(result.text).toBe("Tuesday of next week");
355
- expect(result.start.get("year")).toBe(2022);
356
- expect(result.start.get("month")).toBe(8);
357
- expect(result.start.get("day")).toBe(9); // Aug 9 — NOT today (Aug 2)
358
- expect(result.start.get("weekday")).toBe(2);
359
- expect(result.start).toBeDate(new Date(2022, 7, 9, 12));
360
- });
361
-
362
- testSingleCase(chrono.casual, "Friday of next week", refDate, (result) => {
363
- expect(result.text).toBe("Friday of next week");
364
- expect(result.start.get("year")).toBe(2022);
365
- expect(result.start.get("month")).toBe(8);
366
- expect(result.start.get("day")).toBe(12); // Aug 12
367
- expect(result.start.get("weekday")).toBe(5);
368
- expect(result.start).toBeDate(new Date(2022, 7, 12, 12));
369
- });
370
-
371
- testSingleCase(chrono.casual, "Monday of next week", refDate, (result) => {
372
- expect(result.text).toBe("Monday of next week");
373
- expect(result.start.get("year")).toBe(2022);
374
- expect(result.start.get("month")).toBe(8);
375
- expect(result.start.get("day")).toBe(8); // Aug 8
376
- expect(result.start.get("weekday")).toBe(1);
377
- expect(result.start).toBeDate(new Date(2022, 7, 8, 12));
378
- });
379
-
380
- // --- of last week ---
381
-
382
- testSingleCase(chrono.casual, "Tuesday of last week", refDate, (result) => {
383
- expect(result.text).toBe("Tuesday of last week");
384
- expect(result.start.get("year")).toBe(2022);
385
- expect(result.start.get("month")).toBe(7);
386
- expect(result.start.get("day")).toBe(26); // Jul 26
387
- expect(result.start.get("weekday")).toBe(2);
388
- expect(result.start).toBeDate(new Date(2022, 6, 26, 12));
389
- });
390
-
391
- testSingleCase(chrono.casual, "Friday of last week", refDate, (result) => {
392
- expect(result.text).toBe("Friday of last week");
393
- expect(result.start.get("year")).toBe(2022);
394
- expect(result.start.get("month")).toBe(7);
395
- expect(result.start.get("day")).toBe(29); // Jul 29
396
- expect(result.start.get("weekday")).toBe(5);
397
- expect(result.start).toBeDate(new Date(2022, 6, 29, 12));
398
- });
399
-
400
- // --- of this week ---
401
-
402
- testSingleCase(chrono.casual, "Wednesday of this week", refDate, (result) => {
403
- expect(result.text).toBe("Wednesday of this week");
404
- expect(result.start.get("year")).toBe(2022);
405
- expect(result.start.get("month")).toBe(8);
406
- expect(result.start.get("day")).toBe(3); // Aug 3
407
- expect(result.start.get("weekday")).toBe(3);
408
- expect(result.start).toBeDate(new Date(2022, 7, 3, 12));
409
- });
410
-
411
- testSingleCase(chrono.casual, "Tuesday of this week", refDate, (result) => {
412
- expect(result.text).toBe("Tuesday of this week");
413
- expect(result.start.get("year")).toBe(2022);
414
- expect(result.start.get("month")).toBe(8);
415
- expect(result.start.get("day")).toBe(2); // Aug 2 — same day as ref
416
- expect(result.start.get("weekday")).toBe(2);
417
- expect(result.start).toBeDate(new Date(2022, 7, 2, 12));
418
- });
419
-
420
- // --- with time: merges into a single result (the original bug produced two) ---
421
-
422
- testSingleCase(chrono.casual, "Tuesday of next week after 2pm", refDate, (result) => {
423
- expect(result.text).toBe("Tuesday of next week after 2pm");
424
- expect(result.start.get("year")).toBe(2022);
425
- expect(result.start.get("month")).toBe(8);
426
- expect(result.start.get("day")).toBe(9); // Aug 9
427
- expect(result.start.get("hour")).toBe(14);
428
- expect(result.start).toBeDate(new Date(2022, 7, 9, 14));
429
- });
430
-
431
- testSingleCase(chrono.casual, "Friday of next week at 9am", refDate, (result) => {
432
- expect(result.text).toBe("Friday of next week at 9am");
433
- expect(result.start.get("year")).toBe(2022);
434
- expect(result.start.get("month")).toBe(8);
435
- expect(result.start.get("day")).toBe(12); // Aug 12
436
- expect(result.start.get("hour")).toBe(9);
437
- expect(result.start).toBeDate(new Date(2022, 7, 12, 9));
438
- });
439
-
440
- // --- in sentence context ---
441
-
442
- testSingleCase(chrono.casual, "Let's sync on Tuesday of next week", refDate, (result) => {
443
- expect(result.text).toBe("on Tuesday of next week");
444
- expect(result.start.get("day")).toBe(9);
445
- expect(result.start.get("month")).toBe(8);
446
- expect(result.start.get("year")).toBe(2022);
447
- });
448
- });
449
-
450
- test("Test - forward dates only option", () => {
451
- testSingleCase(
452
- chrono.casual,
453
- "Monday (forward dates only)",
454
- new Date(2012, 7, 9),
455
- { forwardDate: true },
456
- (result) => {
457
- expect(result.index).toBe(0);
458
- expect(result.text).toBe("Monday");
459
-
460
- expect(result.start).not.toBeNull();
461
- expect(result.start.get("year")).toBe(2012);
462
- expect(result.start.get("month")).toBe(8);
463
- expect(result.start.get("day")).toBe(13);
464
- expect(result.start.get("weekday")).toBe(1);
465
-
466
- expect(result.start.isCertain("day")).toBe(false);
467
- expect(result.start.isCertain("month")).toBe(false);
468
- expect(result.start.isCertain("year")).toBe(false);
469
- expect(result.start.isCertain("weekday")).toBe(true);
470
-
471
- expect(result.start).toBeDate(new Date(2012, 7, 13, 12));
472
- }
473
- );
474
-
475
- testSingleCase(
476
- chrono.casual,
477
- "this Friday to this Monday",
478
- new Date(2016, 8 - 1, 4),
479
- { forwardDate: true },
480
- (result) => {
481
- expect(result.index).toBe(0);
482
- expect(result.text).toBe("this Friday to this Monday");
483
-
484
- expect(result.start).not.toBeNull();
485
- expect(result.start.get("year")).toBe(2016);
486
- expect(result.start.get("month")).toBe(8);
487
- expect(result.start.get("day")).toBe(5);
488
- expect(result.start.get("weekday")).toBe(5);
489
-
490
- expect(result.start.isCertain("day")).toBe(false);
491
- expect(result.start.isCertain("month")).toBe(false);
492
- expect(result.start.isCertain("year")).toBe(false);
493
- expect(result.start.isCertain("weekday")).toBe(true);
494
-
495
- expect(result.start).toBeDate(new Date(2016, 8 - 1, 5, 12));
496
-
497
- expect(result.end).not.toBeNull();
498
- expect(result.end.get("year")).toBe(2016);
499
- expect(result.end.get("month")).toBe(8);
500
- expect(result.end.get("day")).toBe(8);
501
- expect(result.end.get("weekday")).toBe(1);
502
-
503
- expect(result.end.isCertain("day")).toBe(false);
504
- expect(result.end.isCertain("month")).toBe(false);
505
- expect(result.end.isCertain("year")).toBe(false);
506
- expect(result.end.isCertain("weekday")).toBe(true);
507
-
508
- expect(result.end).toBeDate(new Date(2016, 8 - 1, 8, 12));
509
- }
510
- );
511
-
512
- testSingleCase(
513
- chrono.casual,
514
- "sunday morning",
515
- new Date("August 15, 2021, 20:00"),
516
- { forwardDate: true },
517
- (result) => {
518
- expect(result.index).toBe(0);
519
- expect(result.text).toBe("sunday morning");
520
-
521
- expect(result.start).not.toBeNull();
522
- expect(result.start.get("year")).toBe(2021);
523
- expect(result.start.get("month")).toBe(8);
524
- expect(result.start.get("day")).toBe(22);
525
- expect(result.start.get("weekday")).toBe(0);
526
-
527
- expect(result.start.isCertain("day")).toBe(false);
528
- expect(result.start.isCertain("month")).toBe(false);
529
- expect(result.start.isCertain("year")).toBe(false);
530
- expect(result.start.isCertain("weekday")).toBe(true);
531
-
532
- expect(result.start).toBeDate(new Date(2021, 8 - 1, 22, 6));
533
- }
534
- );
535
-
536
- testSingleCase(
537
- chrono.casual,
538
- "vacation monday - friday",
539
- new Date("thursday 13 June 2019"),
540
- { forwardDate: true },
541
- (result) => {
542
- expect(result.text).toBe("monday - friday");
543
-
544
- expect(result.start).not.toBeNull();
545
- expect(result.start.get("year")).toBe(2019);
546
- expect(result.start.get("month")).toBe(6);
547
- expect(result.start.get("day")).toBe(17);
548
-
549
- expect(result.end).not.toBeNull();
550
- expect(result.end.get("year")).toBe(2019);
551
- expect(result.end.get("month")).toBe(6);
552
- expect(result.end.get("day")).toBe(21);
553
- }
554
- );
555
-
556
- testSingleCase(
557
- chrono.casual,
558
- "timeoff monday 7 to 9am",
559
- new Date("thursday 13 June 2019"),
560
- { forwardDate: true },
561
- (result) => {
562
- expect(result.text).toBe("monday 7 to 9am");
563
-
564
- expect(result.start.get("year")).toBe(2019);
565
- expect(result.start.get("month")).toBe(6);
566
- expect(result.start.get("day")).toBe(17);
567
-
568
- expect(result.end.get("year")).toBe(2019);
569
- expect(result.end.get("month")).toBe(6);
570
- expect(result.end.get("day")).toBe(17);
571
- }
572
- );
573
- });