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,305 +0,0 @@
1
- import * as chrono from "../../src";
2
- import { testSingleCase, testUnexpectedResult } from "../test_util";
3
- import { Meridiem } from "../../src";
4
-
5
- test("Test - Single Expression", function () {
6
- testSingleCase(chrono.ja, "私は午前6時13分に起きた", new Date(2012, 7, 10), (result) => {
7
- expect(result.index).toBe(2);
8
- expect(result.text).toBe("午前6時13分");
9
-
10
- expect(result.start).not.toBeNull();
11
- expect(result.start.get("hour")).toBe(6);
12
- expect(result.start.get("minute")).toBe(13);
13
-
14
- const resultDate = result.start.date();
15
- const expectDate = new Date(2012, 7, 10, 6, 13);
16
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
17
- });
18
-
19
- testSingleCase(chrono.ja, "私は午前8時に起きる", new Date(2012, 7, 10, 12), (result) => {
20
- expect(result.index).toBe(2);
21
- expect(result.text).toBe("午前8時");
22
-
23
- expect(result.start).not.toBeNull();
24
- expect(result.start.get("year")).toBe(2012);
25
- expect(result.start.get("month")).toBe(8);
26
- expect(result.start.get("day")).toBe(10);
27
- expect(result.start.get("hour")).toBe(8);
28
-
29
- const resultDate = result.start.date();
30
- const expectDate = new Date(2012, 7, 10, 8);
31
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
32
- });
33
-
34
- testSingleCase(chrono.ja, "午後8時", new Date(2012, 8 - 1, 10, 12), (result) => {
35
- expect(result.text).toBe("午後8時");
36
-
37
- expect(result.start).not.toBeNull();
38
- expect(result.start.get("year")).toBe(2012);
39
- expect(result.start.get("month")).toBe(8);
40
- expect(result.start.get("day")).toBe(10);
41
- expect(result.start.get("hour")).toBe(20);
42
-
43
- const resultDate = result.start.date();
44
- const expectDate = new Date(2012, 8 - 1, 10, 20);
45
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
46
- });
47
- testSingleCase(chrono.ja, "12/9の16:00", new Date(2025, 12 - 1, 10, 12), (result) => {
48
- expect(result.text).toBe("12/9の16:00");
49
-
50
- expect(result.start).not.toBeNull();
51
- expect(result.start.get("year")).toBe(2025);
52
- expect(result.start.get("month")).toBe(12);
53
- expect(result.start.get("day")).toBe(9);
54
- expect(result.start.get("hour")).toBe(16);
55
-
56
- const resultDate = result.start.date();
57
- const expectDate = new Date(2025, 12 - 1, 9, 16);
58
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
59
- });
60
- testSingleCase(chrono.ja, "12月9日の16:30", new Date(2025, 12 - 1, 10, 12), (result) => {
61
- expect(result.text).toBe("12月9日の16:30");
62
-
63
- expect(result.start).not.toBeNull();
64
- expect(result.start.get("year")).toBe(2025);
65
- expect(result.start.get("month")).toBe(12);
66
- expect(result.start.get("day")).toBe(9);
67
- expect(result.start.get("hour")).toBe(16);
68
- expect(result.start.get("minute")).toBe(30);
69
-
70
- const resultDate = result.start.date();
71
- const expectDate = new Date(2025, 12 - 1, 9, 16, 30);
72
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
73
- });
74
- });
75
-
76
- test("Test - Range Expression", function () {
77
- testSingleCase(
78
- chrono.ja,
79
- "私は本日午前八時十分から午後11時32分までゲームをした",
80
- new Date(2012, 7, 10),
81
- (result) => {
82
- expect(result.index).toBe(2);
83
- expect(result.text).toBe("本日午前八時十分から午後11時32分");
84
-
85
- expect(result.start).not.toBeNull();
86
- expect(result.start.get("hour")).toBe(8);
87
- expect(result.start.get("minute")).toBe(10);
88
-
89
- expect(result.start.isCertain("day")).toBe(true);
90
- expect(result.start.isCertain("month")).toBe(true);
91
- expect(result.start.isCertain("year")).toBe(true);
92
- expect(result.start.isCertain("hour")).toBe(true);
93
- expect(result.start.isCertain("minute")).toBe(true);
94
- expect(result.start.isCertain("second")).toBe(false);
95
- expect(result.start.isCertain("millisecond")).toBe(false);
96
-
97
- let resultDate = result.start.date();
98
- let expectDate = new Date(2012, 7, 10, 8, 10);
99
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
100
-
101
- expect(result.end).not.toBeNull();
102
- expect(result.end.get("hour")).toBe(23);
103
- expect(result.end.get("minute")).toBe(32);
104
-
105
- expect(result.end.isCertain("day")).toBe(true);
106
- expect(result.end.isCertain("month")).toBe(true);
107
- expect(result.end.isCertain("year")).toBe(true);
108
- expect(result.end.isCertain("hour")).toBe(true);
109
- expect(result.end.isCertain("minute")).toBe(true);
110
- expect(result.end.isCertain("second")).toBe(false);
111
- expect(result.end.isCertain("millisecond")).toBe(false);
112
-
113
- resultDate = result.end.date();
114
- expectDate = new Date(2012, 7, 10, 23, 32);
115
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
116
- }
117
- );
118
-
119
- testSingleCase(chrono.ja, "6時30分PM-11時PM", new Date(2012, 7, 10), (result) => {
120
- expect(result.index).toBe(0);
121
- expect(result.text).toBe("6時30分PM-11時PM");
122
-
123
- expect(result.start).not.toBeNull();
124
- expect(result.start.get("hour")).toBe(18);
125
- expect(result.start.get("minute")).toBe(30);
126
- expect(result.start.get("meridiem")).toBe(1);
127
-
128
- let resultDate = result.start.date();
129
- let expectDate = new Date(2012, 7, 10, 18, 30);
130
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
131
-
132
- expect(result.end).not.toBeNull();
133
- expect(result.end.get("hour")).toBe(23);
134
- expect(result.end.get("minute")).toBe(0);
135
- expect(result.end.get("meridiem")).toBe(1);
136
-
137
- resultDate = result.end.date();
138
- expectDate = new Date(2012, 7, 10, 23, 0);
139
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
140
- });
141
- });
142
-
143
- test("Test - Date + Time Expression", function () {
144
- testSingleCase(
145
- chrono.ja,
146
- "僕は2018年11月26日午後三時半五十九秒にゲームを始めた",
147
- new Date(2012, 7, 10),
148
- (result) => {
149
- expect(result.index).toBe(2);
150
- expect(result.text).toBe("2018年11月26日午後三時半五十九秒");
151
-
152
- expect(result.start.get("year")).toBe(2018);
153
- expect(result.start.get("month")).toBe(11);
154
- expect(result.start.get("day")).toBe(26);
155
- expect(result.start.get("hour")).toBe(15);
156
- expect(result.start.get("minute")).toBe(30);
157
- expect(result.start.get("second")).toBe(59);
158
- expect(result.start.get("millisecond")).toBe(0);
159
- expect(result.start.isCertain("millisecond")).toBe(false);
160
-
161
- const resultDate = result.start.date();
162
- const expectDate = new Date(2018, 11 - 1, 26, 15, 30, 59);
163
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
164
- }
165
- );
166
- });
167
-
168
- test("Test - Time Expression's Meridiem imply", function () {
169
- testSingleCase(chrono.ja, "午後1時30分から3時10分", new Date(2012, 7, 10), (result) => {
170
- expect(result.start.get("hour")).toBe(13);
171
- expect(result.start.get("minute")).toBe(30);
172
- expect(result.start.get("second")).toBe(0);
173
- expect(result.start.get("meridiem")).toBe(Meridiem.PM);
174
- expect(result.start.isCertain("meridiem")).toBe(true);
175
- expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 13, 30));
176
-
177
- expect(result.end.get("hour")).toBe(15);
178
- expect(result.end.get("minute")).toBe(10);
179
- expect(result.end.get("second")).toBe(0);
180
- expect(result.end.get("meridiem")).toBe(Meridiem.PM);
181
- expect(result.end).toBeDate(new Date(2012, 8 - 1, 10, 15, 10));
182
- });
183
-
184
- testSingleCase(chrono.ja, "1時20分P.M.から3時", new Date(2012, 7, 10), (result) => {
185
- expect(result.start.get("hour")).toBe(13);
186
- expect(result.start.get("minute")).toBe(20);
187
- expect(result.start.get("second")).toBe(0);
188
- expect(result.start.get("meridiem")).toBe(Meridiem.PM);
189
- expect(result.start.isCertain("meridiem")).toBe(true);
190
- expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 13, 20));
191
-
192
- expect(result.end.get("hour")).toBe(15);
193
- expect(result.end.get("minute")).toBe(0);
194
- expect(result.end.get("second")).toBe(0);
195
- expect(result.end.get("meridiem")).toBe(Meridiem.PM);
196
- expect(result.end).toBeDate(new Date(2012, 8 - 1, 10, 15, 0));
197
- });
198
-
199
- testSingleCase(chrono.ja, "午後6時半-11時", new Date(2012, 7, 10), (result) => {
200
- expect(result.index).toBe(0);
201
- expect(result.text).toBe("午後6時半-11時");
202
-
203
- expect(result.start).not.toBeNull();
204
- expect(result.start.get("hour")).toBe(18);
205
- expect(result.start.get("minute")).toBe(30);
206
- expect(result.start.get("meridiem")).toBe(Meridiem.PM);
207
- expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 18, 30));
208
-
209
- expect(result.end).not.toBeNull();
210
- expect(result.end.get("hour")).toBe(23);
211
- expect(result.end.get("minute")).toBe(0);
212
- expect(result.end.get("meridiem")).toBe(Meridiem.PM);
213
- expect(result.end).toBeDate(new Date(2012, 8 - 1, 10, 23, 0));
214
- });
215
-
216
- testSingleCase(chrono.ja, "午後11時半-1時", new Date(2012, 8 - 1, 10), (result) => {
217
- expect(result.index).toBe(0);
218
- expect(result.text).toBe("午後11時半-1時");
219
-
220
- expect(result.start.get("hour")).toBe(23);
221
- expect(result.start.get("minute")).toBe(30);
222
- expect(result.start.get("meridiem")).toBe(Meridiem.PM);
223
- expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 23, 30));
224
-
225
- expect(result.end.get("hour")).toBe(1);
226
- expect(result.end.get("minute")).toBe(0);
227
- expect(result.end.get("meridiem")).toBe(Meridiem.AM);
228
- expect(result.end).toBeDate(new Date(2012, 8 - 1, 11, 1, 0));
229
- });
230
-
231
- testSingleCase(chrono.ja, "23時20分から2時", new Date(2012, 8 - 1, 10), (result) => {
232
- expect(result.index).toBe(0);
233
- expect(result.text).toBe("23時20分から2時");
234
-
235
- expect(result.start.get("hour")).toBe(23);
236
- expect(result.start.get("minute")).toBe(20);
237
- expect(result.start.get("meridiem")).toBe(Meridiem.PM);
238
- expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 23, 20));
239
-
240
- expect(result.end.get("hour")).toBe(2);
241
- expect(result.end.get("minute")).toBe(0);
242
- expect(result.end.get("meridiem")).toBe(Meridiem.AM);
243
- expect(result.end).toBeDate(new Date(2012, 8 - 1, 11, 2, 0));
244
- });
245
- });
246
-
247
- test("Test - Random date + time expression", function () {
248
- testSingleCase(chrono.ja, "2014年3月5日午前 6 時から 7 時", new Date(2012, 7, 10), (result) => {
249
- expect(result.text).toBe("2014年3月5日午前 6 時から 7 時");
250
- });
251
-
252
- testSingleCase(chrono.ja, "次の土曜日1時30分二十九秒", new Date(2012, 7, 10), (result) => {
253
- expect(result.text).toBe("次の土曜日1時30分二十九秒");
254
- });
255
-
256
- testSingleCase(chrono.ja, "昨日午前六時", new Date(2012, 7, 10), (result) => {
257
- expect(result.text).toBe("昨日午前六時");
258
- });
259
-
260
- testSingleCase(chrono.ja, "6月4日3:00am", new Date(2012, 7, 10), (result) => {
261
- expect(result.text).toBe("6月4日3:00am");
262
- });
263
-
264
- testSingleCase(chrono.ja, "前の金曜日16時", new Date(2012, 7, 10), (result) => {
265
- expect(result.text).toBe("前の金曜日16時");
266
- });
267
-
268
- testSingleCase(chrono.ja, "3月17日 20時15", new Date(2012, 7, 10), (result) => {
269
- expect(result.text).toBe("3月17日 20時15");
270
- });
271
-
272
- testSingleCase(chrono.ja, "10時", new Date(2012, 7, 10), (result) => {
273
- expect(result.text).toBe("10時");
274
- });
275
-
276
- testSingleCase(chrono.ja, "12時", new Date(2012, 7, 10), (result) => {
277
- expect(result.start.get("hour")).toBe(12);
278
- });
279
- });
280
-
281
- test("Test - Incorrect time expressions", () => {
282
- testUnexpectedResult(chrono.ja, "午後13時");
283
-
284
- testUnexpectedResult(chrono.ja, "25時");
285
-
286
- testUnexpectedResult(chrono.ja, "5時70分");
287
-
288
- testUnexpectedResult(chrono.ja, "5時30分65秒");
289
-
290
- testUnexpectedResult(chrono.ja, "23時-25時");
291
-
292
- testUnexpectedResult(chrono.ja, "3時-5時70分");
293
-
294
- testUnexpectedResult(chrono.ja, "3時-5時30分65秒");
295
- });
296
-
297
- test("Test - Non time expressions", () => {
298
- testUnexpectedResult(chrono.ja, "1");
299
- testUnexpectedResult(chrono.ja, "12");
300
- testUnexpectedResult(chrono.ja, "12a");
301
-
302
- testUnexpectedResult(chrono.ja, "1時間");
303
-
304
- testUnexpectedResult(chrono.ja, "25時間");
305
- });
@@ -1,183 +0,0 @@
1
- import * as chrono from "../../src";
2
- import { testSingleCase } from "../test_util";
3
-
4
- test("Test - Single Expression", function () {
5
- testSingleCase(chrono.ja, "木曜日", new Date(2016, 9 - 1, 2), (result) => {
6
- expect(result.index).toBe(0);
7
- expect(result.text).toBe("木曜日");
8
-
9
- expect(result.start).not.toBeNull();
10
- expect(result.start.get("year")).toBe(2016);
11
- expect(result.start.get("month")).toBe(9);
12
- expect(result.start.get("day")).toBe(1);
13
- expect(result.start.get("weekday")).toBe(4);
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
- const resultDate = result.start.date();
21
- const expectDate = new Date(2016, 9 - 1, 1, 12);
22
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
23
- });
24
-
25
- testSingleCase(chrono.ja, "前の水曜日", new Date(2016, 9 - 1, 2), (result) => {
26
- expect(result.index).toBe(0);
27
- expect(result.text).toBe("前の水曜日");
28
-
29
- expect(result.start).not.toBeNull();
30
- expect(result.start.get("year")).toBe(2016);
31
- expect(result.start.get("month")).toBe(8);
32
- expect(result.start.get("day")).toBe(31);
33
- expect(result.start.get("weekday")).toBe(3);
34
-
35
- const resultDate = result.start.date();
36
- const expectDate = new Date(2016, 8 - 1, 31, 12);
37
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
38
- });
39
- });
40
-
41
- test("Test - Single Expression - weekday with parentheses", function () {
42
- testSingleCase(chrono.ja, "(木)", new Date(2016, 9 - 1, 2), (result) => {
43
- expect(result.index).toBe(0);
44
- expect(result.text).toBe("(木)");
45
-
46
- expect(result.start).not.toBeNull();
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("weekday")).toBe(4);
51
-
52
- expect(result.start.isCertain("day")).toBe(false);
53
- expect(result.start.isCertain("month")).toBe(false);
54
- expect(result.start.isCertain("year")).toBe(false);
55
- expect(result.start.isCertain("weekday")).toBe(true);
56
-
57
- const resultDate = result.start.date();
58
- const expectDate = new Date(2016, 9 - 1, 1, 12);
59
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
60
- });
61
- testSingleCase(chrono.ja, "(木)", new Date(2016, 9 - 1, 2), (result) => {
62
- expect(result.index).toBe(0);
63
- expect(result.text).toBe("(木)");
64
-
65
- expect(result.start).not.toBeNull();
66
- expect(result.start.get("year")).toBe(2016);
67
- expect(result.start.get("month")).toBe(9);
68
- expect(result.start.get("day")).toBe(1);
69
- expect(result.start.get("weekday")).toBe(4);
70
-
71
- expect(result.start.isCertain("day")).toBe(false);
72
- expect(result.start.isCertain("month")).toBe(false);
73
- expect(result.start.isCertain("year")).toBe(false);
74
- expect(result.start.isCertain("weekday")).toBe(true);
75
-
76
- const resultDate = result.start.date();
77
- const expectDate = new Date(2016, 9 - 1, 1, 12);
78
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
79
- });
80
- });
81
-
82
- test("Test - forward dates only option", function () {
83
- testSingleCase(chrono.ja, "土曜日~月曜日", new Date(2016, 9 - 1, 2), { forwardDate: true }, (result) => {
84
- expect(result.index).toBe(0);
85
- expect(result.text).toBe("土曜日~月曜日");
86
-
87
- expect(result.start).not.toBeNull();
88
- expect(result.start.get("year")).toBe(2016);
89
- expect(result.start.get("month")).toBe(9);
90
- expect(result.start.get("day")).toBe(3);
91
- expect(result.start.get("weekday")).toBe(6);
92
-
93
- expect(result.start.isCertain("day")).toBe(false);
94
- expect(result.start.isCertain("month")).toBe(false);
95
- expect(result.start.isCertain("year")).toBe(false);
96
- expect(result.start.isCertain("weekday")).toBe(true);
97
-
98
- let resultDate = result.start.date();
99
- let expectDate = new Date(2016, 9 - 1, 3, 12);
100
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
101
-
102
- expect(result.end).not.toBeNull();
103
- expect(result.end.get("year")).toBe(2016);
104
- expect(result.end.get("month")).toBe(9);
105
- expect(result.end.get("day")).toBe(5);
106
- expect(result.end.get("weekday")).toBe(1);
107
-
108
- expect(result.end.isCertain("day")).toBe(false);
109
- expect(result.end.isCertain("month")).toBe(false);
110
- expect(result.end.isCertain("year")).toBe(false);
111
- expect(result.end.isCertain("weekday")).toBe(true);
112
-
113
- resultDate = result.end.date();
114
- expectDate = new Date(2016, 9 - 1, 5, 12);
115
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
116
- });
117
- });
118
-
119
- test("Test - merge date and weekday", function () {
120
- testSingleCase(chrono.ja, "8月27日水曜日", new Date(2012, 8 - 1, 10), (result) => {
121
- expect(result.index).toBe(0);
122
- expect(result.text).toBe("8月27日水曜日");
123
-
124
- expect(result.start).not.toBeNull();
125
- expect(result.start.get("year")).toBe(2012);
126
- expect(result.start.get("month")).toBe(8);
127
- expect(result.start.get("day")).toBe(27);
128
- expect(result.start.get("weekday")).toBe(3);
129
-
130
- expect(result.start).toBeDate(new Date(2012, 8 - 1, 27, 12));
131
- });
132
- testSingleCase(chrono.ja, "8月27日(水)", new Date(2012, 8 - 1, 10), (result) => {
133
- expect(result.index).toBe(0);
134
- expect(result.text).toBe("8月27日(水)");
135
-
136
- expect(result.start).not.toBeNull();
137
- expect(result.start.get("year")).toBe(2012);
138
- expect(result.start.get("month")).toBe(8);
139
- expect(result.start.get("day")).toBe(27);
140
- expect(result.start.get("weekday")).toBe(3);
141
-
142
- expect(result.start).toBeDate(new Date(2012, 8 - 1, 27, 12));
143
- });
144
- testSingleCase(chrono.ja, "2012/8/27(水)", new Date(2012, 8 - 1, 10), (result) => {
145
- expect(result.index).toBe(0);
146
- expect(result.text).toBe("2012/8/27(水)");
147
-
148
- expect(result.start).not.toBeNull();
149
- expect(result.start.get("year")).toBe(2012);
150
- expect(result.start.get("month")).toBe(8);
151
- expect(result.start.get("day")).toBe(27);
152
- expect(result.start.get("weekday")).toBe(3);
153
-
154
- expect(result.start).toBeDate(new Date(2012, 8 - 1, 27, 12));
155
- });
156
- testSingleCase(chrono.ja, "1/30(木)", new Date(2025, 1, 10), (result) => {
157
- expect(result.text).toBe("1/30(木)");
158
- });
159
- testSingleCase(chrono.ja, "1/30の木曜日", new Date(2025, 1, 10), (result) => {
160
- expect(result.text).toBe("1/30の木曜日");
161
- });
162
- testSingleCase(chrono.ja, "1/30(木)", new Date(2025, 1, 10), (result) => {
163
- expect(result.text).toBe("1/30(木)");
164
- });
165
- testSingleCase(chrono.ja, "1月30日(木)14:00", new Date(2025, 1, 10), (result) => {
166
- expect(result.text).toBe("1月30日(木)14:00");
167
- });
168
- testSingleCase(chrono.ja, "1月31日(金)12:00-16:00", new Date(2025, 1, 10), (result) => {
169
- expect(result.text).toBe("1月31日(金)12:00-16:00");
170
- });
171
- testSingleCase(
172
- chrono.ja,
173
- "1月30日(木)12:00-1月31日(金)16:00",
174
- new Date(2025, 1, 10),
175
- (result) => {
176
- expect(result.text).toBe("1月30日(木)12:00-1月31日(金)16:00");
177
- expect(result.start).toBeDate(new Date(2025, 1 - 1, 30, 12));
178
- expect(result.start.get("weekday")).toBe(4);
179
- expect(result.end).toBeDate(new Date(2025, 1 - 1, 31, 16));
180
- expect(result.end.get("weekday")).toBe(5);
181
- }
182
- );
183
- });