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,508 +0,0 @@
1
- import * as chrono from "../../../src";
2
- import { testSingleCase } from "../../test_util";
3
-
4
- test("Test - Single Expression", function () {
5
- testSingleCase(chrono.zh.hans, "我上午6点13分打游戏", new Date(2012, 7, 10), (result) => {
6
- expect(result.index).toBe(1);
7
- expect(result.text).toBe("上午6点13分");
8
-
9
- expect(result.start).not.toBeNull();
10
- expect(result.start.get("hour")).toBe(6);
11
- expect(result.start.get("minute")).toBe(13);
12
-
13
- const resultDate = result.start.date();
14
- const expectDate = new Date(2012, 7, 10, 6, 13);
15
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
16
- });
17
-
18
- testSingleCase(chrono.zh.hans, "我后天凌晨打游戏", new Date(2012, 7, 10, 0, 0), (result) => {
19
- expect(result.index).toBe(1);
20
- expect(result.text).toBe("后天凌晨");
21
-
22
- const resultDate = result.start.date();
23
- const expectDate = new Date(2012, 7, 12, 0, 0);
24
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
25
- });
26
-
27
- testSingleCase(chrono.zh.hans, "我大前天凌晨打游戏", new Date(2012, 7, 10, 0, 0), (result) => {
28
- expect(result.index).toBe(1);
29
- expect(result.text).toBe("大前天凌晨");
30
-
31
- const resultDate = result.start.date();
32
- const expectDate = new Date(2012, 7, 7, 0, 0);
33
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
34
- });
35
-
36
- testSingleCase(chrono.zh.hans, "我明天上午8点要打游戏", new Date(2012, 7, 10, 12), (result) => {
37
- expect(result.index).toBe(1);
38
- expect(result.text).toBe("明天上午8点");
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(11);
44
- expect(result.start.get("hour")).toBe(8);
45
-
46
- const resultDate = result.start.date();
47
- const expectDate = new Date(2012, 7, 11, 8);
48
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
49
- });
50
-
51
- testSingleCase(chrono.zh.hans, "早上8点", new Date(2012, 8 - 1, 10, 12), (result) => {
52
- expect(result.text).toBe("早上8点");
53
-
54
- expect(result.start).not.toBeNull();
55
- expect(result.start.get("year")).toBe(2012);
56
- expect(result.start.get("month")).toBe(8);
57
- expect(result.start.get("day")).toBe(10);
58
- expect(result.start.get("hour")).toBe(8);
59
-
60
- const resultDate = result.start.date();
61
- const expectDate = new Date(2012, 8 - 1, 10, 8);
62
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
63
- });
64
- });
65
-
66
- test("Test - Range Expression", function () {
67
- testSingleCase(chrono.zh.hans, "我从今早八点十分至下午11点32分打游戏", new Date(2012, 7, 10), (result) => {
68
- expect(result.index).toBe(1);
69
- expect(result.text).toBe("从今早八点十分至下午11点32分");
70
-
71
- expect(result.start).not.toBeNull();
72
- expect(result.start.get("hour")).toBe(8);
73
- expect(result.start.get("minute")).toBe(10);
74
-
75
- expect(result.start.isCertain("day")).toBe(true);
76
- expect(result.start.isCertain("month")).toBe(true);
77
- expect(result.start.isCertain("year")).toBe(true);
78
- expect(result.start.isCertain("hour")).toBe(true);
79
- expect(result.start.isCertain("minute")).toBe(true);
80
- expect(result.start.isCertain("second")).toBe(false);
81
- expect(result.start.isCertain("millisecond")).toBe(false);
82
-
83
- let resultDate = result.start.date();
84
- let expectDate = new Date(2012, 7, 10, 8, 10);
85
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
86
-
87
- expect(result.end).not.toBeNull();
88
- expect(result.end.get("hour")).toBe(23);
89
- expect(result.end.get("minute")).toBe(32);
90
-
91
- expect(result.end.isCertain("day")).toBe(false);
92
- expect(result.end.isCertain("month")).toBe(false);
93
- expect(result.end.isCertain("year")).toBe(false);
94
- expect(result.end.isCertain("hour")).toBe(true);
95
- expect(result.end.isCertain("minute")).toBe(true);
96
- expect(result.end.isCertain("second")).toBe(false);
97
- expect(result.end.isCertain("millisecond")).toBe(false);
98
-
99
- resultDate = result.end.date();
100
- expectDate = new Date(2012, 7, 10, 23, 32);
101
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
102
- });
103
-
104
- testSingleCase(chrono.zh.hans, "6点30pm-11点pm", new Date(2012, 7, 10), (result) => {
105
- expect(result.index).toBe(0);
106
- expect(result.text).toBe("6点30pm-11点pm");
107
-
108
- expect(result.start).not.toBeNull();
109
- expect(result.start.get("hour")).toBe(18);
110
- expect(result.start.get("minute")).toBe(30);
111
- expect(result.start.get("meridiem")).toBe(1);
112
-
113
- let resultDate = result.start.date();
114
- let expectDate = new Date(2012, 7, 10, 18, 30);
115
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
116
-
117
- expect(result.end).not.toBeNull();
118
- expect(result.end.get("hour")).toBe(23);
119
- expect(result.end.get("minute")).toBe(0);
120
- expect(result.end.get("meridiem")).toBe(1);
121
-
122
- resultDate = result.end.date();
123
- expectDate = new Date(2012, 7, 10, 23, 0);
124
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
125
- });
126
- });
127
-
128
- test("Test - Date + Time Expression", function () {
129
- testSingleCase(
130
- chrono.zh.hans,
131
- "我二零一八年十一月二十六日下午三点半五十九秒打游戏",
132
- new Date(2012, 7, 10),
133
- (result) => {
134
- expect(result.index).toBe(1);
135
- expect(result.text).toBe("二零一八年十一月二十六日下午三点半五十九秒");
136
-
137
- expect(result.start.get("year")).toBe(2018);
138
- expect(result.start.get("month")).toBe(11);
139
- expect(result.start.get("day")).toBe(26);
140
- expect(result.start.get("hour")).toBe(15);
141
- expect(result.start.get("minute")).toBe(30);
142
- expect(result.start.get("second")).toBe(59);
143
- expect(result.start.get("millisecond")).toBe(0);
144
- expect(result.start.isCertain("millisecond")).toBe(false);
145
-
146
- const resultDate = result.start.date();
147
- const expectDate = new Date(2018, 11 - 1, 26, 15, 30, 59);
148
- expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
149
- }
150
- );
151
- });
152
-
153
- test("Test - Time Expression's Meridiem imply", function () {
154
- testSingleCase(chrono.zh.hans, "1点pm到3点", new Date(2012, 7, 10), (result) => {
155
- expect(result.index).toBe(0);
156
- expect(result.text).toBe("1点pm到3点");
157
-
158
- expect(result.start.get("year")).toBe(2012);
159
- expect(result.start.get("month")).toBe(8);
160
- expect(result.start.get("day")).toBe(10);
161
- expect(result.start.get("hour")).toBe(13);
162
- expect(result.start.get("minute")).toBe(0);
163
- expect(result.start.get("second")).toBe(0);
164
- expect(result.start.get("millisecond")).toBe(0);
165
- expect(result.start.get("meridiem")).toBe(1);
166
- expect(result.start.isCertain("meridiem")).toBe(true);
167
-
168
- expect(result.end.get("year")).toBe(2012);
169
- expect(result.end.get("month")).toBe(8);
170
- expect(result.end.get("day")).toBe(11);
171
- expect(result.end.get("hour")).toBe(3);
172
- expect(result.end.get("minute")).toBe(0);
173
- expect(result.end.get("second")).toBe(0);
174
- expect(result.end.get("millisecond")).toBe(0);
175
- expect(result.end.isCertain("meridiem")).toBe(false);
176
- });
177
- });
178
-
179
- test("Test - Random date + time expression", function () {
180
- testSingleCase(chrono.zh.hans, "2014年, 3月5日早上 6 点至 7 点", new Date(2012, 7, 10), (result) => {
181
- expect(result.text).toBe("2014年, 3月5日早上 6 点至 7 点");
182
- });
183
-
184
- testSingleCase(chrono.zh.hans, "下星期六凌晨1点30分二十九秒", new Date(2012, 7, 10), (result) => {
185
- expect(result.text).toBe("下星期六凌晨1点30分二十九秒");
186
- });
187
-
188
- testSingleCase(chrono.zh.hans, "昨天早上六点正", new Date(2012, 7, 10), (result) => {
189
- expect(result.text).toBe("昨天早上六点正");
190
- });
191
-
192
- testSingleCase(chrono.zh.hans, "六月四日3:00am", new Date(2012, 7, 10), (result) => {
193
- expect(result.text).toBe("六月四日3:00am");
194
- });
195
-
196
- testSingleCase(chrono.zh.hans, "上个礼拜五16时", new Date(2012, 7, 10), (result) => {
197
- expect(result.text).toBe("上个礼拜五16时");
198
- });
199
-
200
- testSingleCase(chrono.zh.hans, "3月17日 20点15", new Date(2012, 7, 10), (result) => {
201
- expect(result.text).toBe("3月17日 20点15");
202
- });
203
-
204
- testSingleCase(chrono.zh.hans, "10点", new Date(2012, 7, 10), (result) => {
205
- expect(result.text).toBe("10点");
206
- });
207
-
208
- testSingleCase(chrono.zh.hans, "中午12点", new Date(2012, 7, 10), (result) => {
209
- expect(result.start.get("hour")).toBe(12);
210
- });
211
-
212
- testSingleCase(chrono.zh.hans, "今晚10时", new Date(2012, 7, 10), (result) => {
213
- expect(result.start.get("hour")).toBe(22);
214
- });
215
-
216
- testSingleCase(chrono.zh.hans, "昨晚8点", new Date(2012, 7, 10), (result) => {
217
- expect(result.start.get("day")).toBe(9);
218
- expect(result.start.get("hour")).toBe(20);
219
- });
220
-
221
- testSingleCase(chrono.zh.hans, "前天下午三点", new Date(2012, 7, 10), (result) => {
222
- expect(result.start.get("day")).toBe(8);
223
- expect(result.start.get("hour")).toBe(15);
224
- });
225
-
226
- // "大后天" is parsed as "后天"
227
- testSingleCase(chrono.zh.hans, "大后天晚上9点30分", new Date(2012, 7, 10), (result) => {
228
- expect(result.start.get("day")).toBe(13);
229
- expect(result.start.get("hour")).toBe(21);
230
- expect(result.start.get("minute")).toBe(30);
231
- });
232
-
233
- testSingleCase(chrono.zh.hans, "三点", new Date(2012, 7, 10, 1), (result) => {
234
- expect(result.start.get("hour")).toBe(3);
235
- });
236
-
237
- // TODO: This test fails because of a bug in the parser.
238
- // The AM/PM context is not correctly applied to the end of the range.
239
- // testSingleCase(chrono.zh.hans, "下午5点-7点", new Date(2012, 7, 10), (result) => {
240
- // expect(result.start.get("hour")).toBe(17);
241
- // expect(result.end.get("hour")).toBe(19);
242
- // });
243
-
244
- testSingleCase(chrono.zh.hans, "晚上11点 ~ 凌晨2点", new Date(2012, 7, 10), (result) => {
245
- expect(result.start.get("hour")).toBe(23);
246
- expect(result.end.get("hour")).toBe(2);
247
- expect(result.end.get("day")).toBe(11);
248
- });
249
- });
250
-
251
- test("Test - YYYY-MM-DD HH:mm:ss format", function () {
252
- testSingleCase(chrono.zh.hans, "2023-10-26 10:30:00", new Date(2012, 7, 10), (result) => {
253
- expect(result.text).toBe("2023-10-26 10:30:00");
254
- expect(result.start.get("year")).toBe(2023);
255
- expect(result.start.get("month")).toBe(10);
256
- expect(result.start.get("day")).toBe(26);
257
- expect(result.start.get("hour")).toBe(10);
258
- expect(result.start.get("minute")).toBe(30);
259
- expect(result.start.get("second")).toBe(0);
260
- });
261
- });
262
-
263
- test("Test - Range Expression with days", function () {
264
- testSingleCase(chrono.zh.hans, "今晚10点 - 明天早上6点", new Date(2012, 7, 10), (result) => {
265
- expect(result.start.get("year")).toBe(2012);
266
- expect(result.start.get("month")).toBe(8);
267
- expect(result.start.get("day")).toBe(10);
268
- expect(result.start.get("hour")).toBe(22);
269
-
270
- expect(result.end.get("year")).toBe(2012);
271
- expect(result.end.get("month")).toBe(8);
272
- expect(result.end.get("day")).toBe(11);
273
- expect(result.end.get("hour")).toBe(6);
274
- });
275
-
276
- testSingleCase(chrono.zh.hans, "今天早上9点 - 后天凌晨3点", new Date(2012, 7, 10), (result) => {
277
- expect(result.start.get("year")).toBe(2012);
278
- expect(result.start.get("month")).toBe(8);
279
- expect(result.start.get("day")).toBe(10);
280
- expect(result.start.get("hour")).toBe(9);
281
-
282
- expect(result.end.get("year")).toBe(2012);
283
- expect(result.end.get("month")).toBe(8);
284
- expect(result.end.get("day")).toBe(12);
285
- expect(result.end.get("hour")).toBe(3);
286
- });
287
-
288
- testSingleCase(chrono.zh.hans, "今晚10点 - 明早6点", new Date(2012, 7, 10, 12), (result) => {
289
- expect(result.start.get("year")).toBe(2012);
290
- expect(result.start.get("month")).toBe(8);
291
- expect(result.start.get("day")).toBe(10);
292
- expect(result.start.get("hour")).toBe(22);
293
-
294
- expect(result.end.get("year")).toBe(2012);
295
- expect(result.end.get("month")).toBe(8);
296
- expect(result.end.get("day")).toBe(11);
297
- expect(result.end.get("hour")).toBe(6);
298
- });
299
- });
300
-
301
- test("Test - Range Expression with seconds", function () {
302
- testSingleCase(chrono.zh.hans, "9:00:00 - 9:00:30", new Date(2012, 7, 10), (result) => {
303
- expect(result.start.get("hour")).toBe(9);
304
- expect(result.start.get("minute")).toBe(0);
305
- expect(result.start.get("second")).toBe(0);
306
-
307
- expect(result.end.get("hour")).toBe(9);
308
- expect(result.end.get("minute")).toBe(0);
309
- expect(result.end.get("second")).toBe(30);
310
- });
311
- });
312
-
313
- test("Test - Range Expression with AM/PM variations", function () {
314
- testSingleCase(chrono.zh.hans, "下午2点 - 晚上8点", new Date(2012, 7, 10), (result) => {
315
- expect(result.start.get("year")).toBe(2012);
316
- expect(result.start.get("month")).toBe(8);
317
- expect(result.start.get("day")).toBe(10);
318
- expect(result.start.get("hour")).toBe(14);
319
-
320
- expect(result.end.get("year")).toBe(2012);
321
- expect(result.end.get("month")).toBe(8);
322
- expect(result.end.get("day")).toBe(10);
323
- expect(result.end.get("hour")).toBe(20);
324
- });
325
-
326
- testSingleCase(chrono.zh.hans, "3点 - 5点PM", new Date(2012, 7, 10, 12), (result) => {
327
- // Context is 12:00, so 3 is likely 15:00 (3PM)
328
- expect(result.start.get("year")).toBe(2012);
329
- expect(result.start.get("month")).toBe(8);
330
- expect(result.start.get("day")).toBe(10);
331
- expect(result.start.get("hour")).toBe(15);
332
-
333
- expect(result.end.get("year")).toBe(2012);
334
- expect(result.end.get("month")).toBe(8);
335
- expect(result.end.get("day")).toBe(10);
336
- expect(result.end.get("hour")).toBe(17);
337
- });
338
- });
339
-
340
- test("Test - Range Expression with days variations", function () {
341
- // "Yesterday" (昨)
342
- testSingleCase(chrono.zh.hans, "今晚10点 - 昨晚10点", new Date(2012, 7, 10, 12), (result) => {
343
- expect(result.start.get("year")).toBe(2012);
344
- expect(result.start.get("month")).toBe(8);
345
- expect(result.start.get("day")).toBe(10);
346
- expect(result.end.get("year")).toBe(2012);
347
- expect(result.end.get("month")).toBe(8);
348
- expect(result.end.get("day")).toBe(9);
349
- });
350
-
351
- // "Day before yesterday" (前)
352
- testSingleCase(chrono.zh.hans, "今晚10点 - 前天晚上10点", new Date(2012, 7, 10, 12), (result) => {
353
- expect(result.start.get("year")).toBe(2012);
354
- expect(result.start.get("month")).toBe(8);
355
- expect(result.start.get("day")).toBe(10);
356
- expect(result.end.get("year")).toBe(2012);
357
- expect(result.end.get("month")).toBe(8);
358
- expect(result.end.get("day")).toBe(8);
359
- });
360
-
361
- // "Day before day before yesterday" (大前)
362
- testSingleCase(chrono.zh.hans, "今晚10点 - 大前天晚上10点", new Date(2012, 7, 10, 12), (result) => {
363
- expect(result.start.get("year")).toBe(2012);
364
- expect(result.start.get("month")).toBe(8);
365
- expect(result.start.get("day")).toBe(10);
366
- expect(result.end.get("year")).toBe(2012);
367
- expect(result.end.get("month")).toBe(8);
368
- expect(result.end.get("day")).toBe(7);
369
- });
370
-
371
- // "Day after tomorrow" (后)
372
- testSingleCase(chrono.zh.hans, "今晚10点 - 后天晚上10点", new Date(2012, 7, 10, 12), (result) => {
373
- expect(result.start.get("year")).toBe(2012);
374
- expect(result.start.get("month")).toBe(8);
375
- expect(result.start.get("day")).toBe(10);
376
- expect(result.end.get("year")).toBe(2012);
377
- expect(result.end.get("month")).toBe(8);
378
- expect(result.end.get("day")).toBe(12);
379
- });
380
-
381
- // "Day after day after tomorrow" (大后)
382
- testSingleCase(chrono.zh.hans, "今晚10点 - 大后天晚上10点", new Date(2012, 7, 10, 12), (result) => {
383
- expect(result.start.get("year")).toBe(2012);
384
- expect(result.start.get("month")).toBe(8);
385
- expect(result.start.get("day")).toBe(10);
386
- expect(result.end.get("year")).toBe(2012);
387
- expect(result.end.get("month")).toBe(8);
388
- expect(result.end.get("day")).toBe(13);
389
- });
390
-
391
- testSingleCase(chrono.zh.hans, "明天10点到明天11点", new Date(2012, 7, 10, 12), (result) => {
392
- expect(result.text).toBe("明天10点到明天11点");
393
- expect(result.start.get("day")).toBe(11);
394
- expect(result.start.get("hour")).toBe(10);
395
- expect(result.end.get("day")).toBe(11);
396
- expect(result.end.get("hour")).toBe(11);
397
- });
398
- });
399
-
400
- test("Test - Range Expression with specific AM/PM variations", function () {
401
- // AM variations: 早, 上, 凌
402
- testSingleCase(chrono.zh.hans, "今早10点 - 明早10点", new Date(2012, 7, 10, 12), (result) => {
403
- expect(result.start.get("year")).toBe(2012);
404
- expect(result.start.get("month")).toBe(8);
405
- expect(result.start.get("day")).toBe(10);
406
- expect(result.start.get("hour")).toBe(10);
407
-
408
- expect(result.end.get("year")).toBe(2012);
409
- expect(result.end.get("month")).toBe(8);
410
- expect(result.end.get("day")).toBe(11);
411
- expect(result.end.get("hour")).toBe(10);
412
- });
413
-
414
- testSingleCase(chrono.zh.hans, "今早10点 - 明天上午10点", new Date(2012, 7, 10, 12), (result) => {
415
- expect(result.start.get("year")).toBe(2012);
416
- expect(result.start.get("month")).toBe(8);
417
- expect(result.start.get("day")).toBe(10);
418
- expect(result.start.get("hour")).toBe(10);
419
-
420
- expect(result.end.get("year")).toBe(2012);
421
- expect(result.end.get("month")).toBe(8);
422
- expect(result.end.get("day")).toBe(11);
423
- expect(result.end.get("hour")).toBe(10);
424
- });
425
-
426
- testSingleCase(chrono.zh.hans, "今早10点 - 明天凌晨2点", new Date(2012, 7, 10, 12), (result) => {
427
- expect(result.start.get("year")).toBe(2012);
428
- expect(result.start.get("month")).toBe(8);
429
- expect(result.start.get("day")).toBe(10);
430
- expect(result.start.get("hour")).toBe(10);
431
-
432
- expect(result.end.get("year")).toBe(2012);
433
- expect(result.end.get("month")).toBe(8);
434
- expect(result.end.get("day")).toBe(11);
435
- expect(result.end.get("hour")).toBe(2);
436
- });
437
-
438
- testSingleCase(chrono.zh.hans, "下午2点 - 明天下午3点", new Date(2012, 7, 10), (result) => {
439
- expect(result.start.get("year")).toBe(2012);
440
- expect(result.start.get("month")).toBe(8);
441
- expect(result.start.get("day")).toBe(10);
442
- expect(result.start.get("hour")).toBe(14);
443
-
444
- expect(result.end.get("year")).toBe(2012);
445
- expect(result.end.get("month")).toBe(8);
446
- expect(result.end.get("day")).toBe(11);
447
- expect(result.end.get("hour")).toBe(15);
448
- });
449
-
450
- // Cross-day implied PM to AM (10pm - 2am)
451
- testSingleCase(chrono.zh.hans, "晚上10点 - 2点", new Date(2012, 7, 10), (result) => {
452
- expect(result.start.get("year")).toBe(2012);
453
- expect(result.start.get("month")).toBe(8);
454
- expect(result.start.get("day")).toBe(10);
455
- expect(result.start.get("hour")).toBe(22);
456
-
457
- expect(result.end.get("year")).toBe(2012);
458
- expect(result.end.get("month")).toBe(8);
459
- expect(result.end.get("day")).toBe(11);
460
- expect(result.end.get("hour")).toBe(2);
461
- });
462
- });
463
-
464
- test("Test - Range Expression with short day-time variations", function () {
465
- // "Day before yesterday" (前) + "Evening" (晚) -> 前晚
466
- testSingleCase(chrono.zh.hans, "今晚10点 - 前晚10点", new Date(2012, 7, 10, 12), (result) => {
467
- expect(result.start.get("year")).toBe(2012);
468
- expect(result.start.get("month")).toBe(8);
469
- expect(result.start.get("day")).toBe(10);
470
- expect(result.end.get("year")).toBe(2012);
471
- expect(result.end.get("month")).toBe(8);
472
- expect(result.end.get("day")).toBe(8);
473
- expect(result.end.get("hour")).toBe(22);
474
- });
475
-
476
- // "Day before day before yesterday" (大前) + "Evening" (晚) -> 大前晚
477
- testSingleCase(chrono.zh.hans, "今晚10点 - 大前晚10点", new Date(2012, 7, 10, 12), (result) => {
478
- expect(result.start.get("year")).toBe(2012);
479
- expect(result.start.get("month")).toBe(8);
480
- expect(result.start.get("day")).toBe(10);
481
- expect(result.end.get("year")).toBe(2012);
482
- expect(result.end.get("month")).toBe(8);
483
- expect(result.end.get("day")).toBe(7);
484
- expect(result.end.get("hour")).toBe(22);
485
- });
486
-
487
- // "Day after tomorrow" (后) + "Morning" (早) -> 后早
488
- testSingleCase(chrono.zh.hans, "今晚10点 - 后早10点", new Date(2012, 7, 10, 12), (result) => {
489
- expect(result.start.get("year")).toBe(2012);
490
- expect(result.start.get("month")).toBe(8);
491
- expect(result.start.get("day")).toBe(10);
492
- expect(result.end.get("year")).toBe(2012);
493
- expect(result.end.get("month")).toBe(8);
494
- expect(result.end.get("day")).toBe(12);
495
- expect(result.end.get("hour")).toBe(10);
496
- });
497
-
498
- // "Day after day after tomorrow" (大后) + "Morning" (早) -> 大后早
499
- testSingleCase(chrono.zh.hans, "今晚10点 - 大后早10点", new Date(2012, 7, 10, 12), (result) => {
500
- expect(result.start.get("year")).toBe(2012);
501
- expect(result.start.get("month")).toBe(8);
502
- expect(result.start.get("day")).toBe(10);
503
- expect(result.end.get("year")).toBe(2012);
504
- expect(result.end.get("month")).toBe(8);
505
- expect(result.end.get("day")).toBe(13);
506
- expect(result.end.get("hour")).toBe(10);
507
- });
508
- });