chrono-node 2.3.2 → 2.3.6
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 +1 -1
- 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/de/constants.js +1 -1
- package/dist/locales/en/constants.js +1 -1
- package/dist/locales/en/parsers/ENRelativeDateFormatParser.js +3 -3
- package/dist/locales/en/parsers/ENTimeUnitAgoFormatParser.js +1 -1
- package/dist/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +1 -1
- package/dist/locales/en/parsers/ENTimeUnitLaterFormatParser.js +1 -1
- package/dist/locales/en/parsers/ENTimeUnitWithinFormatParser.js +1 -1
- package/dist/locales/fr/constants.js +1 -1
- package/dist/locales/fr/parsers/FRTimeUnitAgoFormatParser.js +1 -1
- package/dist/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js +1 -1
- package/dist/locales/fr/parsers/FRTimeUnitWithinFormatParser.js +1 -1
- package/dist/locales/nl/parsers/NLRelativeDateFormatParser.js +3 -3
- package/dist/locales/nl/parsers/NLTimeUnitAgoFormatParser.js +1 -1
- package/dist/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js +1 -1
- package/dist/locales/nl/parsers/NLTimeUnitLaterFormatParser.js +1 -1
- package/dist/locales/nl/parsers/NLTimeUnitWithinFormatParser.js +1 -1
- 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.d.ts +2 -2
- package/dist/results.js +18 -12
- package/dist/timezone.d.ts +1 -1
- package/dist/timezone.js +3 -0
- 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/de/constants.ts +1 -1
- package/src/locales/en/constants.ts +1 -1
- package/src/locales/en/parsers/ENMonthNameLittleEndianParser.ts +0 -2
- package/src/locales/en/parsers/ENRelativeDateFormatParser.ts +3 -3
- package/src/locales/en/parsers/ENTimeUnitAgoFormatParser.ts +1 -1
- package/src/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.ts +1 -1
- package/src/locales/en/parsers/ENTimeUnitLaterFormatParser.ts +1 -1
- package/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts +1 -1
- package/src/locales/fr/constants.ts +1 -1
- package/src/locales/fr/parsers/FRTimeUnitAgoFormatParser.ts +1 -1
- package/src/locales/fr/parsers/FRTimeUnitRelativeFormatParser.ts +1 -1
- package/src/locales/fr/parsers/FRTimeUnitWithinFormatParser.ts +1 -1
- package/src/locales/nl/parsers/NLRelativeDateFormatParser.ts +3 -3
- package/src/locales/nl/parsers/NLTimeUnitAgoFormatParser.ts +1 -1
- package/src/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.ts +1 -1
- package/src/locales/nl/parsers/NLTimeUnitLaterFormatParser.ts +1 -1
- package/src/locales/nl/parsers/NLTimeUnitWithinFormatParser.ts +1 -1
- 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 +22 -12
- package/src/timezone.ts +5 -1
- package/src/utils/dayjs.ts +6 -0
- package/test/en/en_casual.test.ts +11 -0
- package/test/en/en_month.test.ts +13 -0
- package/test/en/en_relative.test.ts +8 -0
- package/test/en/en_time_units_ago.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/en/negative_cases.test.ts +2 -0
- package/test/test_util.ts +5 -2
- 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
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as chrono from "../../src/";
|
|
2
2
|
import { testSingleCase, testUnexpectedResult } from "../test_util";
|
|
3
|
+
import { Meridiem } from "../../src/";
|
|
3
4
|
|
|
4
5
|
test("Test - Single Expression", function () {
|
|
5
6
|
testSingleCase(chrono, "5 days ago, we did something", new Date(2012, 7, 10), (result) => {
|
|
@@ -31,6 +32,7 @@ test("Test - Single Expression", function () {
|
|
|
31
32
|
expect(result.text).toBe("15 minute ago");
|
|
32
33
|
expect(result.start.get("hour")).toBe(11);
|
|
33
34
|
expect(result.start.get("minute")).toBe(59);
|
|
35
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
|
34
36
|
|
|
35
37
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
|
|
36
38
|
});
|
|
@@ -40,6 +42,7 @@ test("Test - Single Expression", function () {
|
|
|
40
42
|
expect(result.text).toBe("15 minute earlier");
|
|
41
43
|
expect(result.start.get("hour")).toBe(11);
|
|
42
44
|
expect(result.start.get("minute")).toBe(59);
|
|
45
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
|
43
46
|
|
|
44
47
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
|
|
45
48
|
});
|
|
@@ -49,6 +52,7 @@ test("Test - Single Expression", function () {
|
|
|
49
52
|
expect(result.text).toBe("15 minute before");
|
|
50
53
|
expect(result.start.get("hour")).toBe(11);
|
|
51
54
|
expect(result.start.get("minute")).toBe(59);
|
|
55
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
|
52
56
|
|
|
53
57
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
|
|
54
58
|
});
|
|
@@ -58,6 +62,7 @@ test("Test - Single Expression", function () {
|
|
|
58
62
|
expect(result.text).toBe("12 hours ago");
|
|
59
63
|
expect(result.start.get("hour")).toBe(0);
|
|
60
64
|
expect(result.start.get("minute")).toBe(14);
|
|
65
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
|
61
66
|
|
|
62
67
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 14));
|
|
63
68
|
});
|
|
@@ -67,6 +72,7 @@ test("Test - Single Expression", function () {
|
|
|
67
72
|
expect(result.text).toBe("1h ago");
|
|
68
73
|
expect(result.start.get("hour")).toBe(11);
|
|
69
74
|
expect(result.start.get("minute")).toBe(14);
|
|
75
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
|
70
76
|
});
|
|
71
77
|
|
|
72
78
|
testSingleCase(chrono, "1hr ago", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
@@ -74,6 +80,7 @@ test("Test - Single Expression", function () {
|
|
|
74
80
|
expect(result.text).toBe("1hr ago");
|
|
75
81
|
expect(result.start.get("hour")).toBe(11);
|
|
76
82
|
expect(result.start.get("minute")).toBe(14);
|
|
83
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
|
77
84
|
});
|
|
78
85
|
|
|
79
86
|
testSingleCase(chrono, " half an hour ago", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
@@ -81,6 +88,7 @@ test("Test - Single Expression", function () {
|
|
|
81
88
|
expect(result.text).toBe("half an hour ago");
|
|
82
89
|
expect(result.start.get("hour")).toBe(11);
|
|
83
90
|
expect(result.start.get("minute")).toBe(44);
|
|
91
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
|
84
92
|
|
|
85
93
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 44));
|
|
86
94
|
});
|
|
@@ -90,6 +98,7 @@ test("Test - Single Expression", function () {
|
|
|
90
98
|
expect(result.text).toBe("12 hours ago");
|
|
91
99
|
expect(result.start.get("hour")).toBe(0);
|
|
92
100
|
expect(result.start.get("minute")).toBe(14);
|
|
101
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
|
93
102
|
|
|
94
103
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 14));
|
|
95
104
|
});
|
|
@@ -100,6 +109,7 @@ test("Test - Single Expression", function () {
|
|
|
100
109
|
expect(result.start.get("hour")).toBe(12);
|
|
101
110
|
expect(result.start.get("minute")).toBe(13);
|
|
102
111
|
expect(result.start.get("second")).toBe(48);
|
|
112
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
|
103
113
|
|
|
104
114
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13, 48));
|
|
105
115
|
});
|
|
@@ -110,6 +120,7 @@ test("Test - Single Expression", function () {
|
|
|
110
120
|
expect(result.start.get("hour")).toBe(12);
|
|
111
121
|
expect(result.start.get("minute")).toBe(13);
|
|
112
122
|
expect(result.start.get("second")).toBe(57);
|
|
123
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
|
113
124
|
|
|
114
125
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13, 57));
|
|
115
126
|
});
|
|
@@ -131,6 +142,7 @@ test("Test - Single Expression", function () {
|
|
|
131
142
|
expect(result.text).toBe("half An hour ago");
|
|
132
143
|
expect(result.start.get("hour")).toBe(11);
|
|
133
144
|
expect(result.start.get("minute")).toBe(44);
|
|
145
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
|
134
146
|
|
|
135
147
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 44));
|
|
136
148
|
});
|
|
@@ -152,6 +164,7 @@ test("Test - Single Expression", function () {
|
|
|
152
164
|
expect(result.text).toBe("a min before");
|
|
153
165
|
expect(result.start.get("hour")).toBe(12);
|
|
154
166
|
expect(result.start.get("minute")).toBe(13);
|
|
167
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
|
155
168
|
|
|
156
169
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13));
|
|
157
170
|
});
|
|
@@ -213,6 +226,7 @@ test("Test - Nested time ago", function () {
|
|
|
213
226
|
expect(result.start.get("day")).toBe(10);
|
|
214
227
|
expect(result.start.get("hour")).toBe(7);
|
|
215
228
|
expect(result.start.get("minute")).toBe(1);
|
|
229
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
|
216
230
|
});
|
|
217
231
|
|
|
218
232
|
testSingleCase(chrono, "1 day 21 hours ago ", new Date(2012, 7, 10, 22, 30), (result) => {
|
|
@@ -220,6 +234,7 @@ test("Test - Nested time ago", function () {
|
|
|
220
234
|
expect(result.start.get("day")).toBe(9);
|
|
221
235
|
expect(result.start.get("hour")).toBe(1);
|
|
222
236
|
expect(result.start.get("minute")).toBe(30);
|
|
237
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
|
223
238
|
});
|
|
224
239
|
|
|
225
240
|
testSingleCase(chrono, "3 min 49 sec ago ", new Date(2012, 7, 10, 22, 30), (result) => {
|
|
@@ -228,6 +243,7 @@ test("Test - Nested time ago", function () {
|
|
|
228
243
|
expect(result.start.get("hour")).toBe(22);
|
|
229
244
|
expect(result.start.get("minute")).toBe(26);
|
|
230
245
|
expect(result.start.get("second")).toBe(11);
|
|
246
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
|
231
247
|
});
|
|
232
248
|
});
|
|
233
249
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as chrono from "../../src/";
|
|
2
2
|
import { testSingleCase } from "../test_util";
|
|
3
|
+
import { Meridiem } from "../../src/";
|
|
3
4
|
|
|
4
5
|
test("Test - Later Expression", function () {
|
|
5
6
|
testSingleCase(chrono, "2 days later", new Date(2012, 7, 10, 12), (result) => {
|
|
@@ -77,6 +78,7 @@ test("Test - From now Expression", () => {
|
|
|
77
78
|
expect(result.text).toBe("15 minute from now");
|
|
78
79
|
expect(result.start.get("hour")).toBe(12);
|
|
79
80
|
expect(result.start.get("minute")).toBe(29);
|
|
81
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
|
80
82
|
|
|
81
83
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 29));
|
|
82
84
|
});
|
|
@@ -86,6 +88,7 @@ test("Test - From now Expression", () => {
|
|
|
86
88
|
expect(result.text).toBe("15 minutes earlier");
|
|
87
89
|
expect(result.start.get("hour")).toBe(11);
|
|
88
90
|
expect(result.start.get("minute")).toBe(59);
|
|
91
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
|
89
92
|
|
|
90
93
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
|
|
91
94
|
});
|
|
@@ -95,6 +98,7 @@ test("Test - From now Expression", () => {
|
|
|
95
98
|
expect(result.text).toBe("15 minute out");
|
|
96
99
|
expect(result.start.get("hour")).toBe(12);
|
|
97
100
|
expect(result.start.get("minute")).toBe(29);
|
|
101
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
|
98
102
|
|
|
99
103
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 29));
|
|
100
104
|
});
|
|
@@ -115,6 +119,7 @@ test("Test - From now Expression", () => {
|
|
|
115
119
|
expect(result.start.get("day")).toBe(11);
|
|
116
120
|
expect(result.start.get("hour")).toBe(0);
|
|
117
121
|
expect(result.start.get("minute")).toBe(14);
|
|
122
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
|
|
118
123
|
});
|
|
119
124
|
|
|
120
125
|
testSingleCase(chrono, " half an hour from now", new Date(2012, 7, 10, 12, 14), (result) => {
|
|
@@ -122,6 +127,7 @@ test("Test - From now Expression", () => {
|
|
|
122
127
|
expect(result.text).toBe("half an hour from now");
|
|
123
128
|
expect(result.start.get("hour")).toBe(12);
|
|
124
129
|
expect(result.start.get("minute")).toBe(44);
|
|
130
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
|
125
131
|
|
|
126
132
|
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 44));
|
|
127
133
|
});
|
|
@@ -81,20 +81,95 @@ test("Test - Parsing date with timezone abbreviation", function () {
|
|
|
81
81
|
});
|
|
82
82
|
|
|
83
83
|
test("Test - Not parsing timezone from relative time", function () {
|
|
84
|
-
|
|
84
|
+
{
|
|
85
|
+
const refInstant = new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)");
|
|
86
|
+
const expectedInstant = new Date("Sun Nov 29 2020 14:24:13 GMT+0900 (Japan Standard Time)");
|
|
87
|
+
|
|
88
|
+
testSingleCase(chrono, "in 1 hour get eggs and milk", refInstant, (result, text) => {
|
|
89
|
+
expect(result.text).toBe("in 1 hour");
|
|
90
|
+
expect(result.start.get("timezoneOffset")).toBe(-refInstant.getTimezoneOffset());
|
|
91
|
+
expect(result.start).toBeDate(expectedInstant);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
{
|
|
96
|
+
const refInstant = new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)");
|
|
97
|
+
const expectedInstant = new Date("Sun Nov 29 2020 14:24:13 GMT+0900 (Japan Standard Time)");
|
|
98
|
+
|
|
99
|
+
testSingleCase(chrono, "in 1 hour GMT", refInstant, (result, text) => {
|
|
100
|
+
expect(result.text).toBe("in 1 hour");
|
|
101
|
+
expect(result.start).toBeDate(expectedInstant);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
{
|
|
106
|
+
const refInstant = new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)");
|
|
107
|
+
const expectedInstant = new Date("Sun Nov 29 2020 14:24:13 GMT+0900 (Japan Standard Time)");
|
|
108
|
+
|
|
109
|
+
testSingleCase(chrono, "in 1 hour GMT", { instant: refInstant, timezone: "JST" }, (result, text) => {
|
|
110
|
+
expect(result.text).toBe("in 1 hour");
|
|
111
|
+
expect(result.start).toBeDate(expectedInstant);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
{
|
|
116
|
+
const refInstant = new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)");
|
|
117
|
+
const expectedInstant = new Date("Sun Nov 29 2020 14:24:13 GMT+0900 (Japan Standard Time)");
|
|
118
|
+
|
|
119
|
+
testSingleCase(chrono, "in 1 hour GMT", { instant: refInstant, timezone: "BST" }, (result, text) => {
|
|
120
|
+
expect(result.text).toBe("in 1 hour");
|
|
121
|
+
expect(result.start).toBeDate(expectedInstant);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
});
|
|
85
125
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
126
|
+
test("Test - Relative time (Now) is not effected by timezone setting", function () {
|
|
127
|
+
const refInstant = new Date(1637674343000);
|
|
128
|
+
|
|
129
|
+
testSingleCase(chrono, "now", { instant: refInstant }, (result) => {
|
|
130
|
+
expect(result.text).toBe("now");
|
|
131
|
+
expect(result.start).toBeDate(refInstant);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
testSingleCase(chrono, "now", { instant: refInstant, timezone: null }, (result) => {
|
|
135
|
+
expect(result.text).toBe("now");
|
|
136
|
+
expect(result.start).toBeDate(refInstant);
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
testSingleCase(chrono, "now", { instant: refInstant, timezone: "BST" }, (result) => {
|
|
140
|
+
expect(result.text).toBe("now");
|
|
141
|
+
expect(result.start).toBeDate(refInstant);
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
testSingleCase(chrono, "now", { instant: refInstant, timezone: "JST" }, (result) => {
|
|
145
|
+
expect(result.text).toBe("now");
|
|
146
|
+
expect(result.start).toBeDate(refInstant);
|
|
89
147
|
});
|
|
148
|
+
});
|
|
90
149
|
|
|
91
|
-
|
|
92
|
-
|
|
150
|
+
test("Test - Relative time (2 hour later) is not effected by timezone setting", function () {
|
|
151
|
+
const refInstant = new Date(1637674343000);
|
|
152
|
+
const expectedInstant = new Date(1637674343000 + 2 * 60 * 60 * 1000);
|
|
93
153
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
154
|
+
testSingleCase(chrono, "2 hour later", { instant: refInstant }, (result) => {
|
|
155
|
+
expect(result.text).toBe("2 hour later");
|
|
156
|
+
expect(result.start).toBeDate(expectedInstant);
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
testSingleCase(chrono, "2 hour later", { instant: refInstant, timezone: null }, (result) => {
|
|
160
|
+
expect(result.text).toBe("2 hour later");
|
|
161
|
+
expect(result.start).toBeDate(expectedInstant);
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
testSingleCase(chrono, "2 hour later", { instant: refInstant, timezone: "BST" }, (result) => {
|
|
165
|
+
expect(result.text).toBe("2 hour later");
|
|
166
|
+
expect(result.start).toBeDate(expectedInstant);
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
testSingleCase(chrono, "2 hour later", { instant: refInstant, timezone: "JST" }, (result) => {
|
|
170
|
+
expect(result.text).toBe("2 hour later");
|
|
171
|
+
expect(result.start).toBeDate(expectedInstant);
|
|
172
|
+
});
|
|
98
173
|
});
|
|
99
174
|
|
|
100
175
|
test("Test - Parsing timezone from relative date when valid", function () {
|
|
@@ -21,6 +21,8 @@ test("Test - Skip random non-date patterns", function () {
|
|
|
21
21
|
testUnexpectedResult(chrono, "Total: $1,194.09 [image: View Reservation");
|
|
22
22
|
|
|
23
23
|
testUnexpectedResult(chrono, "at 6.5 kilograms");
|
|
24
|
+
|
|
25
|
+
testUnexpectedResult(chrono, "ah that is unusual", null, { forwardDate: true });
|
|
24
26
|
});
|
|
25
27
|
|
|
26
28
|
test("Test - URLs % encoded", function () {
|
package/test/test_util.ts
CHANGED
|
@@ -61,10 +61,13 @@ export function testWithExpectedDate(chrono: ChronoLike, text: string, expectedD
|
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
export function testUnexpectedResult(chrono: ChronoLike, text: string, refDate?: Date) {
|
|
64
|
+
export function testUnexpectedResult(chrono: ChronoLike, text: string, refDate?: Date, options?: ParsingOption) {
|
|
65
65
|
const debugHandler = new BufferedDebugHandler();
|
|
66
|
+
options = options || {};
|
|
67
|
+
options.debug = debugHandler;
|
|
68
|
+
|
|
66
69
|
try {
|
|
67
|
-
const results = chrono.parse(text, refDate,
|
|
70
|
+
const results = chrono.parse(text, refDate, options);
|
|
68
71
|
expect(results).toHaveLength(0);
|
|
69
72
|
} catch (e) {
|
|
70
73
|
debugHandler.executeBufferedBlocks();
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as chrono from "../../src";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - International compatible", () => {
|
|
5
|
+
testSingleCase(chrono.zh, "1994-11-05T08:15:30-05:30", new Date(2012, 7, 8), (result) => {
|
|
6
|
+
expect(result.start).not.toBeNull();
|
|
7
|
+
expect(result.start.get("year")).toBe(1994);
|
|
8
|
+
expect(result.start.get("month")).toBe(11);
|
|
9
|
+
expect(result.start.get("day")).toBe(5);
|
|
10
|
+
expect(result.start.get("hour")).toBe(8);
|
|
11
|
+
expect(result.start.get("minute")).toBe(15);
|
|
12
|
+
expect(result.start.get("second")).toBe(30);
|
|
13
|
+
expect(result.start.get("timezoneOffset")).toBe(-330);
|
|
14
|
+
expect(result.text).toBe("1994-11-05T08:15:30-05:30");
|
|
15
|
+
|
|
16
|
+
expect(result.start).toBeDate(new Date(784043130000));
|
|
17
|
+
});
|
|
18
|
+
});
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import * as chrono from "../../src";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Single Expression", function () {
|
|
5
|
+
testSingleCase(chrono.zh.hans, "我今天要打游戏", new Date(2012, 7, 10, 12), (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
|
+
|
|
14
|
+
const resultDate = result.start.date();
|
|
15
|
+
const expectDate = new Date(2012, 7, 10, 12);
|
|
16
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
testSingleCase(chrono.zh.hans, "我明日要打游戏", new Date(2012, 7, 10, 12), (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(2012);
|
|
25
|
+
expect(result.start.get("month")).toBe(8);
|
|
26
|
+
expect(result.start.get("day")).toBe(11);
|
|
27
|
+
|
|
28
|
+
const resultDate = result.start.date();
|
|
29
|
+
const expectDate = new Date(2012, 7, 11, 12);
|
|
30
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
testSingleCase(chrono.zh.hans, "我明天要打游戏", new Date(2012, 7, 10, 1), (result) => {
|
|
34
|
+
// Say.."Tomorrow" in the late night (1 AM)
|
|
35
|
+
const resultDate = result.start.date();
|
|
36
|
+
const expectDate = new Date(2012, 7, 10, 12);
|
|
37
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
testSingleCase(chrono.zh.hans, "我后天凌晨要打游戏", new Date(2012, 7, 10, 0, 0), (result) => {
|
|
41
|
+
const resultDate = result.start.date();
|
|
42
|
+
const expectDate = new Date(2012, 7, 12, 0, 0);
|
|
43
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
testSingleCase(chrono.zh.hans, "我大前天凌晨要打游戏", new Date(2012, 7, 10, 0, 0), (result) => {
|
|
47
|
+
const resultDate = result.start.date();
|
|
48
|
+
const expectDate = new Date(2012, 7, 7, 0, 0);
|
|
49
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
testSingleCase(chrono.zh.hans, "我昨日要打游戏", new Date(2012, 7, 10, 12), (result) => {
|
|
53
|
+
expect(result.index).toBe(1);
|
|
54
|
+
expect(result.text).toBe("昨日");
|
|
55
|
+
|
|
56
|
+
expect(result.start).not.toBeNull();
|
|
57
|
+
expect(result.start.get("year")).toBe(2012);
|
|
58
|
+
expect(result.start.get("month")).toBe(8);
|
|
59
|
+
expect(result.start.get("day")).toBe(9);
|
|
60
|
+
|
|
61
|
+
const resultDate = result.start.date();
|
|
62
|
+
const expectDate = new Date(2012, 7, 9, 12);
|
|
63
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
testSingleCase(chrono.zh.hans, "我昨天晚上要打游戏", new Date(2012, 7, 10, 12), (result) => {
|
|
67
|
+
expect(result.index).toBe(1);
|
|
68
|
+
expect(result.text).toBe("昨天晚上");
|
|
69
|
+
|
|
70
|
+
expect(result.start).not.toBeNull();
|
|
71
|
+
expect(result.start.get("year")).toBe(2012);
|
|
72
|
+
expect(result.start.get("month")).toBe(8);
|
|
73
|
+
expect(result.start.get("day")).toBe(9);
|
|
74
|
+
expect(result.start.get("hour")).toBe(22);
|
|
75
|
+
|
|
76
|
+
const resultDate = result.start.date();
|
|
77
|
+
const expectDate = new Date(2012, 7, 9, 22);
|
|
78
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
testSingleCase(chrono.zh.hans, "我今天早上要打游戏", new Date(2012, 7, 10, 12), (result) => {
|
|
82
|
+
expect(result.index).toBe(1);
|
|
83
|
+
expect(result.text).toBe("今天早上");
|
|
84
|
+
|
|
85
|
+
expect(result.start).not.toBeNull();
|
|
86
|
+
expect(result.start.get("year")).toBe(2012);
|
|
87
|
+
expect(result.start.get("month")).toBe(8);
|
|
88
|
+
expect(result.start.get("day")).toBe(10);
|
|
89
|
+
expect(result.start.get("hour")).toBe(6);
|
|
90
|
+
|
|
91
|
+
const resultDate = result.start.date();
|
|
92
|
+
const expectDate = new Date(2012, 7, 10, 6);
|
|
93
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
testSingleCase(chrono.zh.hans, "我下午要打游戏", new Date(2012, 7, 10, 12), (result) => {
|
|
97
|
+
expect(result.index).toBe(1);
|
|
98
|
+
expect(result.text).toBe("下午");
|
|
99
|
+
|
|
100
|
+
expect(result.start).not.toBeNull();
|
|
101
|
+
expect(result.start.get("year")).toBe(2012);
|
|
102
|
+
expect(result.start.get("month")).toBe(8);
|
|
103
|
+
expect(result.start.get("day")).toBe(10);
|
|
104
|
+
expect(result.start.get("hour")).toBe(15);
|
|
105
|
+
|
|
106
|
+
const resultDate = result.start.date();
|
|
107
|
+
const expectDate = new Date(2012, 7, 10, 15);
|
|
108
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
testSingleCase(chrono.zh.hans, "我今晚要打游戏", new Date(2012, 7, 10, 12), (result) => {
|
|
112
|
+
expect(result.index).toBe(1);
|
|
113
|
+
expect(result.text).toBe("今晚");
|
|
114
|
+
|
|
115
|
+
expect(result.start).not.toBeNull();
|
|
116
|
+
expect(result.start.get("year")).toBe(2012);
|
|
117
|
+
expect(result.start.get("month")).toBe(8);
|
|
118
|
+
expect(result.start.get("day")).toBe(10);
|
|
119
|
+
expect(result.start.get("hour")).toBe(22);
|
|
120
|
+
|
|
121
|
+
const resultDate = result.start.date();
|
|
122
|
+
const expectDate = new Date(2012, 7, 10, 22);
|
|
123
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
test("Test - Combined Expression", function () {
|
|
128
|
+
testSingleCase(chrono.zh.hans, "我今天下午5点要打游戏", new Date(2012, 7, 10, 12), (result) => {
|
|
129
|
+
expect(result.index).toBe(1);
|
|
130
|
+
expect(result.text).toBe("今天下午5点");
|
|
131
|
+
|
|
132
|
+
expect(result.start).not.toBeNull();
|
|
133
|
+
expect(result.start.get("year")).toBe(2012);
|
|
134
|
+
expect(result.start.get("month")).toBe(8);
|
|
135
|
+
expect(result.start.get("day")).toBe(10);
|
|
136
|
+
expect(result.start.get("hour")).toBe(17);
|
|
137
|
+
|
|
138
|
+
const resultDate = result.start.date();
|
|
139
|
+
const expectDate = new Date(2012, 7, 10, 17);
|
|
140
|
+
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
test("Test - Casual date range", function () {
|
|
145
|
+
testSingleCase(chrono.zh.hans, "我今天 - 下周五要打游戏", new Date(2012, 7, 4, 12), (result) => {
|
|
146
|
+
expect(result.index).toBe(1);
|
|
147
|
+
expect(result.text).toBe("今天 - 下周五");
|
|
148
|
+
|
|
149
|
+
expect(result.start).not.toBeNull();
|
|
150
|
+
expect(result.start.get("year")).toBe(2012);
|
|
151
|
+
expect(result.start.get("month")).toBe(8);
|
|
152
|
+
expect(result.start.get("day")).toBe(4);
|
|
153
|
+
expect(result.start.get("hour")).toBe(12);
|
|
154
|
+
|
|
155
|
+
const resultStartDate = result.start.date();
|
|
156
|
+
const expectStartDate = new Date(2012, 7, 4, 12);
|
|
157
|
+
expect(resultStartDate.getTime()).toBeCloseTo(expectStartDate.getTime());
|
|
158
|
+
|
|
159
|
+
expect(result.end).not.toBeNull();
|
|
160
|
+
expect(result.end.get("year")).toBe(2012);
|
|
161
|
+
expect(result.end.get("month")).toBe(8);
|
|
162
|
+
expect(result.end.get("day")).toBe(10);
|
|
163
|
+
expect(result.end.get("hour")).toBe(12);
|
|
164
|
+
|
|
165
|
+
const resultEndDate = result.end.date();
|
|
166
|
+
const expectEndDate = new Date(2012, 7, 10, 12);
|
|
167
|
+
expect(expectEndDate.getTime()).toBeCloseTo(resultEndDate.getTime());
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
testSingleCase(chrono.zh.hans, "我今日 - 下周五要打游戏", new Date(2012, 7, 10, 12), (result) => {
|
|
171
|
+
expect(result.index).toBe(1);
|
|
172
|
+
expect(result.text).toBe("今日 - 下周五");
|
|
173
|
+
|
|
174
|
+
expect(result.start).not.toBeNull();
|
|
175
|
+
expect(result.start.get("year")).toBe(2012);
|
|
176
|
+
expect(result.start.get("month")).toBe(8);
|
|
177
|
+
expect(result.start.get("day")).toBe(10);
|
|
178
|
+
expect(result.start.get("hour")).toBe(12);
|
|
179
|
+
|
|
180
|
+
const resultStartDate = result.start.date();
|
|
181
|
+
const expectStartDate = new Date(2012, 7, 10, 12);
|
|
182
|
+
expect(expectStartDate.getTime()).toBeCloseTo(resultStartDate.getTime());
|
|
183
|
+
|
|
184
|
+
expect(result.end).not.toBeNull();
|
|
185
|
+
expect(result.end.get("year")).toBe(2012);
|
|
186
|
+
expect(result.end.get("month")).toBe(8);
|
|
187
|
+
expect(result.end.get("day")).toBe(17);
|
|
188
|
+
expect(result.end.get("hour")).toBe(12);
|
|
189
|
+
|
|
190
|
+
const resultEndDate = result.end.date();
|
|
191
|
+
const expectEndDate = new Date(2012, 7, 17, 12);
|
|
192
|
+
expect(expectEndDate.getTime()).toBeCloseTo(resultEndDate.getTime());
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
test("Test - Random text", function () {
|
|
197
|
+
testSingleCase(chrono.zh.hans, "今日夜晚", new Date(2012, 1 - 1, 1, 12), (result) => {
|
|
198
|
+
expect(result.text).toBe("今日夜晚");
|
|
199
|
+
expect(result.start.get("year")).toBe(2012);
|
|
200
|
+
expect(result.start.get("month")).toBe(1);
|
|
201
|
+
expect(result.start.get("day")).toBe(1);
|
|
202
|
+
expect(result.start.get("hour")).toBe(22);
|
|
203
|
+
expect(result.start.get("meridiem")).toBe(1);
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
testSingleCase(chrono.zh.hans, "今晚8点正", new Date(2012, 1 - 1, 1, 12), (result) => {
|
|
207
|
+
expect(result.text).toBe("今晚8点正");
|
|
208
|
+
expect(result.start.get("hour")).toBe(20);
|
|
209
|
+
expect(result.start.get("year")).toBe(2012);
|
|
210
|
+
expect(result.start.get("month")).toBe(1);
|
|
211
|
+
expect(result.start.get("day")).toBe(1);
|
|
212
|
+
expect(result.start.get("meridiem")).toBe(1);
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
testSingleCase(chrono.zh.hans, "晚上8点", new Date(2012, 1 - 1, 1, 12), (result) => {
|
|
216
|
+
expect(result.text).toBe("晚上8点");
|
|
217
|
+
expect(result.start.get("hour")).toBe(20);
|
|
218
|
+
expect(result.start.get("year")).toBe(2012);
|
|
219
|
+
expect(result.start.get("month")).toBe(1);
|
|
220
|
+
expect(result.start.get("day")).toBe(1);
|
|
221
|
+
expect(result.start.get("meridiem")).toBe(1);
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
testSingleCase(chrono.zh.hans, "星期四", new Date(), (result) => {
|
|
225
|
+
expect(result.text).toBe("星期四");
|
|
226
|
+
expect(result.start.get("weekday")).toBe(4);
|
|
227
|
+
});
|
|
228
|
+
});
|
|
@@ -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.hans, "我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.hans, "我二零一六年,九月三号要打游戏", 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.hans, "我九月三号要打游戏", 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.hans, "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.hans, "二零一六年九月三号ー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
|
+
});
|