chrono-node 2.3.3 → 2.3.7
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.
- package/README.md +2 -2
- package/dist/common/casualReferences.js +3 -1
- package/dist/common/parsers/AbstractParserWithWordBoundary.js +2 -1
- package/dist/common/refiners/ExtractTimezoneAbbrRefiner.js +5 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -1
- package/dist/locales/en/index.js +2 -1
- package/dist/locales/en/parsers/ENRelativeDateFormatParser.js +2 -2
- package/dist/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +1 -1
- package/dist/locales/en/refiners/ENMergeRelativeDateRefiner.d.ts +7 -0
- package/dist/locales/en/refiners/ENMergeRelativeDateRefiner.js +35 -0
- package/dist/locales/zh/hans/constants.d.ts +27 -0
- package/dist/locales/zh/hans/constants.js +51 -0
- package/dist/locales/zh/hans/index.d.ts +9 -0
- package/dist/locales/zh/hans/index.js +49 -0
- package/dist/locales/zh/hans/parsers/ZHHansCasualDateParser.d.ts +7 -0
- package/dist/locales/zh/hans/parsers/ZHHansCasualDateParser.js +138 -0
- package/dist/locales/zh/hans/parsers/ZHHansDateParser.d.ts +6 -0
- package/dist/locales/zh/hans/parsers/ZHHansDateParser.js +72 -0
- package/dist/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.d.ts +6 -0
- package/dist/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js +78 -0
- package/dist/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.d.ts +7 -0
- package/dist/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js +70 -0
- package/dist/locales/zh/hans/parsers/ZHHansTimeExpressionParser.d.ts +6 -0
- package/dist/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js +438 -0
- package/dist/locales/zh/hans/parsers/ZHHansWeekdayParser.d.ts +7 -0
- package/dist/locales/zh/hans/parsers/ZHHansWeekdayParser.js +46 -0
- package/dist/locales/zh/hans/refiners/ZHHansMergeDateRangeRefiner.d.ts +4 -0
- package/dist/locales/zh/hans/refiners/ZHHansMergeDateRangeRefiner.js +12 -0
- package/dist/locales/zh/hans/refiners/ZHHansMergeDateTimeRefiner.d.ts +4 -0
- package/dist/locales/zh/hans/refiners/ZHHansMergeDateTimeRefiner.js +12 -0
- package/dist/locales/zh/hant/constants.d.ts +28 -0
- package/dist/locales/zh/hant/constants.js +52 -0
- package/dist/locales/zh/hant/index.d.ts +9 -0
- package/dist/locales/zh/hant/index.js +49 -0
- package/dist/locales/zh/hant/parsers/ZHHantCasualDateParser.d.ts +7 -0
- package/dist/locales/zh/hant/parsers/ZHHantCasualDateParser.js +138 -0
- package/dist/locales/zh/hant/parsers/ZHHantDateParser.d.ts +6 -0
- package/dist/locales/zh/hant/parsers/ZHHantDateParser.js +64 -0
- package/dist/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.d.ts +6 -0
- package/dist/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js +78 -0
- package/dist/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.d.ts +7 -0
- package/dist/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js +70 -0
- package/dist/locales/zh/hant/parsers/ZHHantTimeExpressionParser.d.ts +6 -0
- package/dist/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js +438 -0
- package/dist/locales/zh/hant/parsers/ZHHantWeekdayParser.d.ts +7 -0
- package/dist/locales/zh/hant/parsers/ZHHantWeekdayParser.js +46 -0
- package/dist/locales/zh/hant/refiners/ZHHantMergeDateRangeRefiner.d.ts +4 -0
- package/dist/locales/zh/hant/refiners/ZHHantMergeDateRangeRefiner.js +12 -0
- package/dist/locales/zh/hant/refiners/ZHHantMergeDateTimeRefiner.d.ts +4 -0
- package/dist/locales/zh/hant/refiners/ZHHantMergeDateTimeRefiner.js +12 -0
- package/dist/locales/zh/index.d.ts +2 -0
- package/dist/locales/zh/index.js +16 -0
- package/dist/results.js +8 -5
- package/dist/timezone.js +1 -1
- package/dist/utils/dayjs.js +7 -0
- package/package.json +1 -1
- package/src/common/casualReferences.ts +3 -1
- package/src/common/parsers/AbstractParserWithWordBoundary.ts +1 -1
- package/src/common/refiners/ExtractTimezoneAbbrRefiner.ts +8 -0
- package/src/index.ts +2 -1
- package/src/locales/en/index.ts +2 -1
- package/src/locales/en/parsers/ENMonthNameLittleEndianParser.ts +0 -2
- package/src/locales/en/parsers/ENRelativeDateFormatParser.ts +2 -2
- package/src/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.ts +1 -1
- package/src/locales/en/refiners/ENMergeRelativeDateRefiner.ts +58 -0
- package/src/locales/zh/hans/constants.ts +52 -0
- package/src/locales/zh/hans/index.ts +62 -0
- package/src/locales/zh/hans/parsers/ZHHansCasualDateParser.ts +128 -0
- package/src/locales/zh/hans/parsers/ZHHansDateParser.ts +75 -0
- package/src/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.ts +81 -0
- package/src/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.ts +69 -0
- package/src/locales/zh/hans/parsers/ZHHansTimeExpressionParser.ts +424 -0
- package/src/locales/zh/hans/parsers/ZHHansWeekdayParser.ts +46 -0
- package/src/locales/zh/hans/refiners/ZHHansMergeDateRangeRefiner.ts +7 -0
- package/src/locales/zh/hans/refiners/ZHHansMergeDateTimeRefiner.ts +7 -0
- package/src/locales/zh/hant/constants.ts +53 -0
- package/src/locales/zh/hant/index.ts +63 -0
- package/src/locales/zh/hant/parsers/ZHHantCasualDateParser.ts +128 -0
- package/src/locales/zh/hant/parsers/ZHHantDateParser.ts +68 -0
- package/src/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.ts +81 -0
- package/src/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.ts +69 -0
- package/src/locales/zh/hant/parsers/ZHHantTimeExpressionParser.ts +424 -0
- package/src/locales/zh/hant/parsers/ZHHantWeekdayParser.ts +46 -0
- package/src/locales/zh/hant/refiners/ZHHantMergeDateRangeRefiner.ts +7 -0
- package/src/locales/zh/hant/refiners/ZHHantMergeDateTimeRefiner.ts +7 -0
- package/src/locales/zh/index.ts +2 -0
- package/src/results.ts +11 -4
- package/src/timezone.ts +1 -1
- package/src/utils/dayjs.ts +6 -0
- package/test/en/en_casual.test.ts +11 -0
- package/test/en/en_merging_relative_dates.test.ts +51 -0
- package/test/en/en_month.test.ts +13 -0
- package/test/en/en_relative.test.ts +20 -0
- package/test/en/en_time_units_ago.test.ts +16 -0
- package/test/en/en_time_units_casual_relative.test.ts +16 -0
- package/test/en/en_time_units_later.test.ts +6 -0
- package/test/en/en_timezone_exp.test.ts +85 -10
- package/test/zh/zh.test.ts +18 -0
- package/test/zh/zh_hans_casual.test.ts +228 -0
- package/test/zh/zh_hans_date.test.ts +102 -0
- package/test/zh/zh_hans_deadline.test.ts +136 -0
- package/test/zh/zh_hans_time_exp.test.ts +182 -0
- package/test/zh/zh_hans_weekday.test.ts +132 -0
- package/test/zh/zh_hant_casual.test.ts +246 -0
- package/test/zh/zh_hant_date.test.ts +102 -0
- package/test/zh/zh_hant_deadline.test.ts +136 -0
- package/test/zh/zh_hant_time_exp.test.ts +182 -0
- package/test/zh/zh_hant_weekday.test.ts +132 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import * as chrono from "../../src";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Single Expression", function () {
|
|
5
|
+
testSingleCase(chrono.zh.hant, "雞而家全部都係雞", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
|
|
6
|
+
expect(result.index).toBe(1);
|
|
7
|
+
expect(result.text).toBe("而家");
|
|
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(10);
|
|
13
|
+
expect(result.start.get("hour")).toBe(8);
|
|
14
|
+
expect(result.start.get("minute")).toBe(9);
|
|
15
|
+
expect(result.start.get("second")).toBe(10);
|
|
16
|
+
expect(result.start.get("millisecond")).toBe(11);
|
|
17
|
+
|
|
18
|
+
const resultDate = result.start.date();
|
|
19
|
+
const expectDate = new Date(2012, 7, 10, 8, 9, 10, 11);
|
|
20
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
testSingleCase(chrono.zh.hant, "雞今日全部都係雞", new Date(2012, 7, 10, 12), (result) => {
|
|
24
|
+
expect(result.index).toBe(1);
|
|
25
|
+
expect(result.text).toBe("今日");
|
|
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(10);
|
|
31
|
+
|
|
32
|
+
const resultDate = result.start.date();
|
|
33
|
+
const expectDate = new Date(2012, 7, 10, 12);
|
|
34
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
testSingleCase(chrono.zh.hant, "雞聽日全部都係雞", new Date(2012, 7, 10, 12), (result) => {
|
|
38
|
+
expect(result.index).toBe(1);
|
|
39
|
+
expect(result.text).toBe("聽日");
|
|
40
|
+
|
|
41
|
+
expect(result.start).not.toBeNull();
|
|
42
|
+
expect(result.start.get("year")).toBe(2012);
|
|
43
|
+
expect(result.start.get("month")).toBe(8);
|
|
44
|
+
expect(result.start.get("day")).toBe(11);
|
|
45
|
+
|
|
46
|
+
const resultDate = result.start.date();
|
|
47
|
+
const expectDate = new Date(2012, 7, 11, 12);
|
|
48
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
testSingleCase(chrono.zh.hant, "雞明天全部都係雞", new Date(2012, 7, 10, 1), (result) => {
|
|
52
|
+
// Say.."Tomorrow" in the late night (1 AM)
|
|
53
|
+
const resultDate = result.start.date();
|
|
54
|
+
const expectDate = new Date(2012, 7, 10, 12);
|
|
55
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
testSingleCase(chrono.zh.hant, "雞後天凌晨全部都係雞", new Date(2012, 7, 10, 0, 0), (result) => {
|
|
59
|
+
const resultDate = result.start.date();
|
|
60
|
+
const expectDate = new Date(2012, 7, 12, 0, 0);
|
|
61
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
testSingleCase(chrono.zh.hant, "雞大前天凌晨全部都係雞", new Date(2012, 7, 10, 0, 0), (result) => {
|
|
65
|
+
const resultDate = result.start.date();
|
|
66
|
+
const expectDate = new Date(2012, 7, 7, 0, 0);
|
|
67
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
testSingleCase(chrono.zh.hant, "雞琴日全部都係雞", new Date(2012, 7, 10, 12), (result) => {
|
|
71
|
+
expect(result.index).toBe(1);
|
|
72
|
+
expect(result.text).toBe("琴日");
|
|
73
|
+
|
|
74
|
+
expect(result.start).not.toBeNull();
|
|
75
|
+
expect(result.start.get("year")).toBe(2012);
|
|
76
|
+
expect(result.start.get("month")).toBe(8);
|
|
77
|
+
expect(result.start.get("day")).toBe(9);
|
|
78
|
+
|
|
79
|
+
const resultDate = result.start.date();
|
|
80
|
+
const expectDate = new Date(2012, 7, 9, 12);
|
|
81
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
testSingleCase(chrono.zh.hant, "雞昨天晚上全部都係雞", new Date(2012, 7, 10, 12), (result) => {
|
|
85
|
+
expect(result.index).toBe(1);
|
|
86
|
+
expect(result.text).toBe("昨天晚上");
|
|
87
|
+
|
|
88
|
+
expect(result.start).not.toBeNull();
|
|
89
|
+
expect(result.start.get("year")).toBe(2012);
|
|
90
|
+
expect(result.start.get("month")).toBe(8);
|
|
91
|
+
expect(result.start.get("day")).toBe(9);
|
|
92
|
+
expect(result.start.get("hour")).toBe(22);
|
|
93
|
+
|
|
94
|
+
const resultDate = result.start.date();
|
|
95
|
+
const expectDate = new Date(2012, 7, 9, 22);
|
|
96
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
testSingleCase(chrono.zh.hant, "雞今日朝早全部都係雞", new Date(2012, 7, 10, 12), (result) => {
|
|
100
|
+
expect(result.index).toBe(1);
|
|
101
|
+
expect(result.text).toBe("今日朝早");
|
|
102
|
+
|
|
103
|
+
expect(result.start).not.toBeNull();
|
|
104
|
+
expect(result.start.get("year")).toBe(2012);
|
|
105
|
+
expect(result.start.get("month")).toBe(8);
|
|
106
|
+
expect(result.start.get("day")).toBe(10);
|
|
107
|
+
expect(result.start.get("hour")).toBe(6);
|
|
108
|
+
|
|
109
|
+
const resultDate = result.start.date();
|
|
110
|
+
const expectDate = new Date(2012, 7, 10, 6);
|
|
111
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
testSingleCase(chrono.zh.hant, "雞晏晝全部都係雞", new Date(2012, 7, 10, 12), (result) => {
|
|
115
|
+
expect(result.index).toBe(1);
|
|
116
|
+
expect(result.text).toBe("晏晝");
|
|
117
|
+
|
|
118
|
+
expect(result.start).not.toBeNull();
|
|
119
|
+
expect(result.start.get("year")).toBe(2012);
|
|
120
|
+
expect(result.start.get("month")).toBe(8);
|
|
121
|
+
expect(result.start.get("day")).toBe(10);
|
|
122
|
+
expect(result.start.get("hour")).toBe(15);
|
|
123
|
+
|
|
124
|
+
const resultDate = result.start.date();
|
|
125
|
+
const expectDate = new Date(2012, 7, 10, 15);
|
|
126
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
testSingleCase(chrono.zh.hant, "雞今晚全部都係雞", new Date(2012, 7, 10, 12), (result) => {
|
|
130
|
+
expect(result.index).toBe(1);
|
|
131
|
+
expect(result.text).toBe("今晚");
|
|
132
|
+
|
|
133
|
+
expect(result.start).not.toBeNull();
|
|
134
|
+
expect(result.start.get("year")).toBe(2012);
|
|
135
|
+
expect(result.start.get("month")).toBe(8);
|
|
136
|
+
expect(result.start.get("day")).toBe(10);
|
|
137
|
+
expect(result.start.get("hour")).toBe(22);
|
|
138
|
+
|
|
139
|
+
const resultDate = result.start.date();
|
|
140
|
+
const expectDate = new Date(2012, 7, 10, 22);
|
|
141
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
test("Test - Combined Expression", function () {
|
|
146
|
+
testSingleCase(chrono.zh.hant, "雞今日晏晝5點全部都係雞", new Date(2012, 7, 10, 12), (result) => {
|
|
147
|
+
expect(result.index).toBe(1);
|
|
148
|
+
expect(result.text).toBe("今日晏晝5點");
|
|
149
|
+
|
|
150
|
+
expect(result.start).not.toBeNull();
|
|
151
|
+
expect(result.start.get("year")).toBe(2012);
|
|
152
|
+
expect(result.start.get("month")).toBe(8);
|
|
153
|
+
expect(result.start.get("day")).toBe(10);
|
|
154
|
+
expect(result.start.get("hour")).toBe(17);
|
|
155
|
+
|
|
156
|
+
const resultDate = result.start.date();
|
|
157
|
+
const expectDate = new Date(2012, 7, 10, 17);
|
|
158
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
test("Test - Casual date range", function () {
|
|
163
|
+
testSingleCase(chrono.zh.hant, "雞今日 - 下禮拜五全部都係雞", new Date(2012, 7, 4, 12), (result) => {
|
|
164
|
+
expect(result.index).toBe(1);
|
|
165
|
+
expect(result.text).toBe("今日 - 下禮拜五");
|
|
166
|
+
|
|
167
|
+
expect(result.start).not.toBeNull();
|
|
168
|
+
expect(result.start.get("year")).toBe(2012);
|
|
169
|
+
expect(result.start.get("month")).toBe(8);
|
|
170
|
+
expect(result.start.get("day")).toBe(4);
|
|
171
|
+
expect(result.start.get("hour")).toBe(12);
|
|
172
|
+
|
|
173
|
+
const resultStartDate = result.start.date();
|
|
174
|
+
const expectStartDate = new Date(2012, 7, 4, 12);
|
|
175
|
+
expect(resultStartDate.getTime()).toBeCloseTo(expectStartDate.getTime());
|
|
176
|
+
|
|
177
|
+
expect(result.end).not.toBeNull();
|
|
178
|
+
expect(result.end.get("year")).toBe(2012);
|
|
179
|
+
expect(result.end.get("month")).toBe(8);
|
|
180
|
+
expect(result.end.get("day")).toBe(10);
|
|
181
|
+
expect(result.end.get("hour")).toBe(12);
|
|
182
|
+
|
|
183
|
+
const resultEndDate = result.end.date();
|
|
184
|
+
const expectEndDate = new Date(2012, 7, 10, 12);
|
|
185
|
+
expect(expectEndDate.getTime()).toBeCloseTo(resultEndDate.getTime());
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
testSingleCase(chrono.zh.hant, "雞今日 - 下禮拜五全部都係雞", new Date(2012, 7, 10, 12), (result) => {
|
|
189
|
+
expect(result.index).toBe(1);
|
|
190
|
+
expect(result.text).toBe("今日 - 下禮拜五");
|
|
191
|
+
|
|
192
|
+
expect(result.start).not.toBeNull();
|
|
193
|
+
expect(result.start.get("year")).toBe(2012);
|
|
194
|
+
expect(result.start.get("month")).toBe(8);
|
|
195
|
+
expect(result.start.get("day")).toBe(10);
|
|
196
|
+
expect(result.start.get("hour")).toBe(12);
|
|
197
|
+
|
|
198
|
+
const resultStartDate = result.start.date();
|
|
199
|
+
const expectStartDate = new Date(2012, 7, 10, 12);
|
|
200
|
+
expect(expectStartDate.getTime()).toBeCloseTo(resultStartDate.getTime());
|
|
201
|
+
|
|
202
|
+
expect(result.end).not.toBeNull();
|
|
203
|
+
expect(result.end.get("year")).toBe(2012);
|
|
204
|
+
expect(result.end.get("month")).toBe(8);
|
|
205
|
+
expect(result.end.get("day")).toBe(17);
|
|
206
|
+
expect(result.end.get("hour")).toBe(12);
|
|
207
|
+
|
|
208
|
+
const resultEndDate = result.end.date();
|
|
209
|
+
const expectEndDate = new Date(2012, 7, 17, 12);
|
|
210
|
+
expect(expectEndDate.getTime()).toBeCloseTo(resultEndDate.getTime());
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
test("Test - Random text", function () {
|
|
215
|
+
testSingleCase(chrono.zh.hant, "今日夜晚", new Date(2012, 1 - 1, 1, 12), (result) => {
|
|
216
|
+
expect(result.text).toBe("今日夜晚");
|
|
217
|
+
expect(result.start.get("year")).toBe(2012);
|
|
218
|
+
expect(result.start.get("month")).toBe(1);
|
|
219
|
+
expect(result.start.get("day")).toBe(1);
|
|
220
|
+
expect(result.start.get("hour")).toBe(22);
|
|
221
|
+
expect(result.start.get("meridiem")).toBe(1);
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
testSingleCase(chrono.zh.hant, "今晚8點正", new Date(2012, 1 - 1, 1, 12), (result) => {
|
|
225
|
+
expect(result.text).toBe("今晚8點正");
|
|
226
|
+
expect(result.start.get("hour")).toBe(20);
|
|
227
|
+
expect(result.start.get("year")).toBe(2012);
|
|
228
|
+
expect(result.start.get("month")).toBe(1);
|
|
229
|
+
expect(result.start.get("day")).toBe(1);
|
|
230
|
+
expect(result.start.get("meridiem")).toBe(1);
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
testSingleCase(chrono.zh.hant, "晚上8點", new Date(2012, 1 - 1, 1, 12), (result) => {
|
|
234
|
+
expect(result.text).toBe("晚上8點");
|
|
235
|
+
expect(result.start.get("hour")).toBe(20);
|
|
236
|
+
expect(result.start.get("year")).toBe(2012);
|
|
237
|
+
expect(result.start.get("month")).toBe(1);
|
|
238
|
+
expect(result.start.get("day")).toBe(1);
|
|
239
|
+
expect(result.start.get("meridiem")).toBe(1);
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
testSingleCase(chrono.zh.hant, "星期四", new Date(), (result) => {
|
|
243
|
+
expect(result.text).toBe("星期四");
|
|
244
|
+
expect(result.start.get("weekday")).toBe(4);
|
|
245
|
+
});
|
|
246
|
+
});
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import * as chrono from "../../src";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Single Expression", function () {
|
|
5
|
+
testSingleCase(chrono.zh.hant, "雞2016年9月3號全部都係雞", new Date(2012, 8 - 1, 10), (result) => {
|
|
6
|
+
expect(result.index).toBe(1);
|
|
7
|
+
expect(result.text).toBe("2016年9月3號");
|
|
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(3);
|
|
13
|
+
|
|
14
|
+
const resultDate = result.start.date();
|
|
15
|
+
const expectDate = new Date(2016, 9 - 1, 3, 12);
|
|
16
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
testSingleCase(chrono.zh.hant, "雞二零一六年,九月三號全部都係雞", new Date(2012, 8 - 1, 10), (result) => {
|
|
20
|
+
expect(result.index).toBe(1);
|
|
21
|
+
expect(result.text).toBe("二零一六年,九月三號");
|
|
22
|
+
|
|
23
|
+
expect(result.start).not.toBeNull();
|
|
24
|
+
expect(result.start.get("year")).toBe(2016);
|
|
25
|
+
expect(result.start.get("month")).toBe(9);
|
|
26
|
+
expect(result.start.get("day")).toBe(3);
|
|
27
|
+
|
|
28
|
+
const resultDate = result.start.date();
|
|
29
|
+
const expectDate = new Date(2016, 9 - 1, 3, 12);
|
|
30
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
testSingleCase(chrono.zh.hant, "雞九月三號全部都係雞", new Date(2014, 8 - 1, 10), (result) => {
|
|
34
|
+
expect(result.index).toBe(1);
|
|
35
|
+
expect(result.text).toBe("九月三號");
|
|
36
|
+
|
|
37
|
+
expect(result.start).not.toBeNull();
|
|
38
|
+
expect(result.start.get("year")).toBe(2014);
|
|
39
|
+
expect(result.start.get("month")).toBe(9);
|
|
40
|
+
expect(result.start.get("day")).toBe(3);
|
|
41
|
+
|
|
42
|
+
const resultDate = result.start.date();
|
|
43
|
+
const expectDate = new Date(2014, 9 - 1, 3, 12);
|
|
44
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test("Test - Range Expression", function () {
|
|
49
|
+
testSingleCase(chrono.zh.hant, "2016年9月3號-2017年10月24號", new Date(2012, 8 - 1, 10), (result) => {
|
|
50
|
+
expect(result.index).toBe(0);
|
|
51
|
+
expect(result.text).toBe("2016年9月3號-2017年10月24號");
|
|
52
|
+
|
|
53
|
+
expect(result.start).not.toBeNull();
|
|
54
|
+
expect(result.start.get("year")).toBe(2016);
|
|
55
|
+
expect(result.start.get("month")).toBe(9);
|
|
56
|
+
expect(result.start.get("day")).toBe(3);
|
|
57
|
+
|
|
58
|
+
{
|
|
59
|
+
const resultDate = result.start.date();
|
|
60
|
+
const expectDate = new Date(2016, 9 - 1, 3, 12);
|
|
61
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
expect(result.end).not.toBeNull();
|
|
65
|
+
expect(result.end.get("year")).toBe(2017);
|
|
66
|
+
expect(result.end.get("month")).toBe(10);
|
|
67
|
+
expect(result.end.get("day")).toBe(24);
|
|
68
|
+
|
|
69
|
+
{
|
|
70
|
+
const resultDate = result.end.date();
|
|
71
|
+
const expectDate = new Date(2017, 10 - 1, 24, 12);
|
|
72
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
testSingleCase(chrono.zh.hant, "二零一六年九月三號ー2017年10月24號", new Date(2012, 8 - 1, 10), (result) => {
|
|
77
|
+
expect(result.index).toBe(0);
|
|
78
|
+
expect(result.text).toBe("二零一六年九月三號ー2017年10月24號");
|
|
79
|
+
|
|
80
|
+
expect(result.start).not.toBeNull();
|
|
81
|
+
expect(result.start.get("year")).toBe(2016);
|
|
82
|
+
expect(result.start.get("month")).toBe(9);
|
|
83
|
+
expect(result.start.get("day")).toBe(3);
|
|
84
|
+
|
|
85
|
+
{
|
|
86
|
+
const resultDate = result.start.date();
|
|
87
|
+
const expectDate = new Date(2016, 9 - 1, 3, 12);
|
|
88
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
expect(result.end).not.toBeNull();
|
|
92
|
+
expect(result.end.get("year")).toBe(2017);
|
|
93
|
+
expect(result.end.get("month")).toBe(10);
|
|
94
|
+
expect(result.end.get("day")).toBe(24);
|
|
95
|
+
|
|
96
|
+
{
|
|
97
|
+
const resultDate = result.end.date();
|
|
98
|
+
const expectDate = new Date(2017, 10 - 1, 24, 12);
|
|
99
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
});
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import * as chrono from "../../src";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Single Expression", function () {
|
|
5
|
+
testSingleCase(chrono.zh.hant, "五日內我地有d野做", new Date(2012, 7, 10), (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(2012);
|
|
11
|
+
expect(result.start.get("month")).toBe(8);
|
|
12
|
+
expect(result.start.get("day")).toBe(15);
|
|
13
|
+
|
|
14
|
+
const resultDate = result.start.date();
|
|
15
|
+
const expectDate = new Date(2012, 8 - 1, 15, 12);
|
|
16
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
testSingleCase(chrono.zh.hant, "5日之內我地有d野做", new Date(2012, 7, 10), (result) => {
|
|
20
|
+
expect(result.index).toBe(0);
|
|
21
|
+
expect(result.text).toBe("5日之內");
|
|
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(15);
|
|
27
|
+
|
|
28
|
+
const resultDate = result.start.date();
|
|
29
|
+
const expectDate = new Date(2012, 8 - 1, 15, 12);
|
|
30
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
testSingleCase(chrono.zh.hant, "十日內我地有d野做", new Date(2012, 7, 10), (result) => {
|
|
34
|
+
expect(result.index).toBe(0);
|
|
35
|
+
expect(result.text).toBe("十日內");
|
|
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(20);
|
|
41
|
+
|
|
42
|
+
const resultDate = result.start.date();
|
|
43
|
+
const expectDate = new Date(2012, 8 - 1, 20, 12);
|
|
44
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
testSingleCase(chrono.zh.hant, "五分鐘後", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
48
|
+
expect(result.index).toBe(0);
|
|
49
|
+
expect(result.text).toBe("五分鐘後");
|
|
50
|
+
|
|
51
|
+
const resultDate = result.start.date();
|
|
52
|
+
const expectDate = new Date(2012, 7, 10, 12, 19);
|
|
53
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
testSingleCase(chrono.zh.hant, "一個鐘之內", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
57
|
+
expect(result.index).toBe(0);
|
|
58
|
+
expect(result.text).toBe("一個鐘之內");
|
|
59
|
+
|
|
60
|
+
const resultDate = result.start.date();
|
|
61
|
+
const expectDate = new Date(2012, 7, 10, 13, 14);
|
|
62
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
testSingleCase(chrono.zh.hant, "5分鐘之後我就收皮", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
66
|
+
expect(result.index).toBe(0);
|
|
67
|
+
expect(result.text).toBe("5分鐘之後");
|
|
68
|
+
|
|
69
|
+
const resultDate = result.start.date();
|
|
70
|
+
const expectDate = new Date(2012, 7, 10, 12, 19);
|
|
71
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
testSingleCase(chrono.zh.hant, "係5秒之後你就會收皮", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
75
|
+
expect(result.index).toBe(1);
|
|
76
|
+
expect(result.text).toBe("5秒之後");
|
|
77
|
+
|
|
78
|
+
const resultDate = result.start.date();
|
|
79
|
+
const expectDate = new Date(2012, 7, 10, 12, 14, 5);
|
|
80
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
testSingleCase(chrono.zh.hant, "半小時之內", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
84
|
+
expect(result.index).toBe(0);
|
|
85
|
+
expect(result.text).toBe("半小時之內");
|
|
86
|
+
|
|
87
|
+
const resultDate = result.start.date();
|
|
88
|
+
const expectDate = new Date(2012, 7, 10, 12, 44);
|
|
89
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
testSingleCase(chrono.zh.hant, "兩個禮拜內答覆我", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
93
|
+
expect(result.index).toBe(0);
|
|
94
|
+
expect(result.text).toBe("兩個禮拜內");
|
|
95
|
+
|
|
96
|
+
const resultDate = result.start.date();
|
|
97
|
+
const expectDate = new Date(2012, 7, 24, 12);
|
|
98
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
testSingleCase(chrono.zh.hant, "1個月之內答覆我", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
102
|
+
expect(result.index).toBe(0);
|
|
103
|
+
expect(result.text).toBe("1個月之內");
|
|
104
|
+
|
|
105
|
+
const resultDate = result.start.date();
|
|
106
|
+
const expectDate = new Date(2012, 8, 10, 12);
|
|
107
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
testSingleCase(chrono.zh.hant, "幾個月之內答覆我", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
111
|
+
expect(result.index).toBe(0);
|
|
112
|
+
expect(result.text).toBe("幾個月之內");
|
|
113
|
+
|
|
114
|
+
const resultDate = result.start.date();
|
|
115
|
+
const expectDate = new Date(2012, 10, 10, 12);
|
|
116
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
testSingleCase(chrono.zh.hant, "一年內答覆我", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
120
|
+
expect(result.index).toBe(0);
|
|
121
|
+
expect(result.text).toBe("一年內");
|
|
122
|
+
|
|
123
|
+
const resultDate = result.start.date();
|
|
124
|
+
const expectDate = new Date(2013, 7, 10, 12);
|
|
125
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
testSingleCase(chrono.zh.hant, "1年之內答覆我", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
129
|
+
expect(result.index).toBe(0);
|
|
130
|
+
expect(result.text).toBe("1年之內");
|
|
131
|
+
|
|
132
|
+
const resultDate = result.start.date();
|
|
133
|
+
const expectDate = new Date(2013, 7, 10, 12);
|
|
134
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
135
|
+
});
|
|
136
|
+
});
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import * as chrono from "../../src";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Single Expression", function () {
|
|
5
|
+
testSingleCase(chrono.zh.hant, "雞上午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.hant, "雞後天凌晨全部都係雞", 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.hant, "雞大前天凌晨全部都係雞", 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
|
+
|
|
37
|
+
test("Test - Range Expression", function () {
|
|
38
|
+
testSingleCase(chrono.zh.hant, "雞由今朝八點十分至下午11點32分全部都係雞", new Date(2012, 7, 10), (result) => {
|
|
39
|
+
expect(result.index).toBe(1);
|
|
40
|
+
expect(result.text).toBe("由今朝八點十分至下午11點32分");
|
|
41
|
+
|
|
42
|
+
expect(result.start).not.toBeNull();
|
|
43
|
+
expect(result.start.get("hour")).toBe(8);
|
|
44
|
+
expect(result.start.get("minute")).toBe(10);
|
|
45
|
+
|
|
46
|
+
expect(result.start.isCertain("day")).toBe(true);
|
|
47
|
+
expect(result.start.isCertain("month")).toBe(true);
|
|
48
|
+
expect(result.start.isCertain("year")).toBe(true);
|
|
49
|
+
expect(result.start.isCertain("hour")).toBe(true);
|
|
50
|
+
expect(result.start.isCertain("minute")).toBe(true);
|
|
51
|
+
expect(result.start.isCertain("second")).toBe(false);
|
|
52
|
+
expect(result.start.isCertain("millisecond")).toBe(false);
|
|
53
|
+
|
|
54
|
+
var resultDate = result.start.date();
|
|
55
|
+
var expectDate = new Date(2012, 7, 10, 8, 10);
|
|
56
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
57
|
+
|
|
58
|
+
expect(result.end).not.toBeNull();
|
|
59
|
+
expect(result.end.get("hour")).toBe(23);
|
|
60
|
+
expect(result.end.get("minute")).toBe(32);
|
|
61
|
+
|
|
62
|
+
expect(result.end.isCertain("day")).toBe(false);
|
|
63
|
+
expect(result.end.isCertain("month")).toBe(false);
|
|
64
|
+
expect(result.end.isCertain("year")).toBe(false);
|
|
65
|
+
expect(result.end.isCertain("hour")).toBe(true);
|
|
66
|
+
expect(result.end.isCertain("minute")).toBe(true);
|
|
67
|
+
expect(result.end.isCertain("second")).toBe(false);
|
|
68
|
+
expect(result.end.isCertain("millisecond")).toBe(false);
|
|
69
|
+
|
|
70
|
+
var resultDate = result.end.date();
|
|
71
|
+
var expectDate = new Date(2012, 7, 10, 23, 32);
|
|
72
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
testSingleCase(chrono.zh.hant, "6點30pm-11點pm", new Date(2012, 7, 10), (result) => {
|
|
76
|
+
expect(result.index).toBe(0);
|
|
77
|
+
expect(result.text).toBe("6點30pm-11點pm");
|
|
78
|
+
|
|
79
|
+
expect(result.start).not.toBeNull();
|
|
80
|
+
expect(result.start.get("hour")).toBe(18);
|
|
81
|
+
expect(result.start.get("minute")).toBe(30);
|
|
82
|
+
expect(result.start.get("meridiem")).toBe(1);
|
|
83
|
+
|
|
84
|
+
var resultDate = result.start.date();
|
|
85
|
+
var expectDate = new Date(2012, 7, 10, 18, 30);
|
|
86
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
87
|
+
|
|
88
|
+
expect(result.end).not.toBeNull();
|
|
89
|
+
expect(result.end.get("hour")).toBe(23);
|
|
90
|
+
expect(result.end.get("minute")).toBe(0);
|
|
91
|
+
expect(result.end.get("meridiem")).toBe(1);
|
|
92
|
+
|
|
93
|
+
var resultDate = result.end.date();
|
|
94
|
+
var expectDate = new Date(2012, 7, 10, 23, 0);
|
|
95
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
test("Test - Date + Time Expression", function () {
|
|
100
|
+
testSingleCase(
|
|
101
|
+
chrono.zh.hant,
|
|
102
|
+
"雞二零一八年十一月廿六日下午三時半五十九秒全部都係雞",
|
|
103
|
+
new Date(2012, 7, 10),
|
|
104
|
+
(result) => {
|
|
105
|
+
expect(result.index).toBe(1);
|
|
106
|
+
expect(result.text).toBe("二零一八年十一月廿六日下午三時半五十九秒");
|
|
107
|
+
|
|
108
|
+
expect(result.start.get("year")).toBe(2018);
|
|
109
|
+
expect(result.start.get("month")).toBe(11);
|
|
110
|
+
expect(result.start.get("day")).toBe(26);
|
|
111
|
+
expect(result.start.get("hour")).toBe(15);
|
|
112
|
+
expect(result.start.get("minute")).toBe(30);
|
|
113
|
+
expect(result.start.get("second")).toBe(59);
|
|
114
|
+
expect(result.start.get("millisecond")).toBe(0);
|
|
115
|
+
expect(result.start.isCertain("millisecond")).toBe(false);
|
|
116
|
+
|
|
117
|
+
const resultDate = result.start.date();
|
|
118
|
+
const expectDate = new Date(2018, 11 - 1, 26, 15, 30, 59);
|
|
119
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
120
|
+
}
|
|
121
|
+
);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
test("Test - Time Expression's Meridiem imply", function () {
|
|
125
|
+
testSingleCase(chrono.zh.hant, "1點pm到3點", new Date(2012, 7, 10), (result) => {
|
|
126
|
+
expect(result.index).toBe(0);
|
|
127
|
+
expect(result.text).toBe("1點pm到3點");
|
|
128
|
+
|
|
129
|
+
expect(result.start.get("year")).toBe(2012);
|
|
130
|
+
expect(result.start.get("month")).toBe(8);
|
|
131
|
+
expect(result.start.get("day")).toBe(10);
|
|
132
|
+
expect(result.start.get("hour")).toBe(13);
|
|
133
|
+
expect(result.start.get("minute")).toBe(0);
|
|
134
|
+
expect(result.start.get("second")).toBe(0);
|
|
135
|
+
expect(result.start.get("millisecond")).toBe(0);
|
|
136
|
+
expect(result.start.get("meridiem")).toBe(1);
|
|
137
|
+
expect(result.start.isCertain("meridiem")).toBe(true);
|
|
138
|
+
|
|
139
|
+
expect(result.end.get("year")).toBe(2012);
|
|
140
|
+
expect(result.end.get("month")).toBe(8);
|
|
141
|
+
expect(result.end.get("day")).toBe(11);
|
|
142
|
+
expect(result.end.get("hour")).toBe(3);
|
|
143
|
+
expect(result.end.get("minute")).toBe(0);
|
|
144
|
+
expect(result.end.get("second")).toBe(0);
|
|
145
|
+
expect(result.end.get("millisecond")).toBe(0);
|
|
146
|
+
expect(result.end.isCertain("meridiem")).toBe(false);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
test("Test - Random date + time expression", function () {
|
|
151
|
+
testSingleCase(chrono.zh.hant, "2014年, 3月5日晏晝 6 點至 7 點", new Date(2012, 7, 10), (result) => {
|
|
152
|
+
expect(result.text).toBe("2014年, 3月5日晏晝 6 點至 7 點");
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
testSingleCase(chrono.zh.hant, "下星期六凌晨1點30分廿九秒", new Date(2012, 7, 10), (result) => {
|
|
156
|
+
expect(result.text).toBe("下星期六凌晨1點30分廿九秒");
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
testSingleCase(chrono.zh.hant, "尋日朝早六點正", new Date(2012, 7, 10), (result) => {
|
|
160
|
+
expect(result.text).toBe("尋日朝早六點正");
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
testSingleCase(chrono.zh.hant, "六月四日3:00am", new Date(2012, 7, 10), (result) => {
|
|
164
|
+
expect(result.text).toBe("六月四日3:00am");
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
testSingleCase(chrono.zh.hant, "上個禮拜五16時", new Date(2012, 7, 10), (result) => {
|
|
168
|
+
expect(result.text).toBe("上個禮拜五16時");
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
testSingleCase(chrono.zh.hant, "3月17日 20點15", new Date(2012, 7, 10), (result) => {
|
|
172
|
+
expect(result.text).toBe("3月17日 20點15");
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
testSingleCase(chrono.zh.hant, "10點", new Date(2012, 7, 10), (result) => {
|
|
176
|
+
expect(result.text).toBe("10點");
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
testSingleCase(chrono.zh.hant, "中午12點", new Date(2012, 7, 10), (result) => {
|
|
180
|
+
expect(result.start.get("hour")).toBe(12);
|
|
181
|
+
});
|
|
182
|
+
});
|