chrono-node 2.3.0 → 2.3.4

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 (74) hide show
  1. package/benchmark/benchmark.js +4 -0
  2. package/dist/common/casualReferences.js +3 -1
  3. package/dist/common/refiners/ForwardDateRefiner.js +1 -1
  4. package/dist/locales/de/constants.js +1 -1
  5. package/dist/locales/en/constants.d.ts +1 -1
  6. package/dist/locales/en/constants.js +5 -5
  7. package/dist/locales/en/parsers/ENCasualTimeParser.js +1 -1
  8. package/dist/locales/en/parsers/ENMonthNameLittleEndianParser.js +6 -8
  9. package/dist/locales/en/parsers/ENRelativeDateFormatParser.js +3 -3
  10. package/dist/locales/en/parsers/ENTimeUnitAgoFormatParser.js +3 -3
  11. package/dist/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +1 -1
  12. package/dist/locales/en/parsers/ENTimeUnitLaterFormatParser.js +2 -2
  13. package/dist/locales/en/parsers/ENTimeUnitWithinFormatParser.js +1 -1
  14. package/dist/locales/fr/constants.js +1 -1
  15. package/dist/locales/fr/parsers/FRTimeUnitAgoFormatParser.js +1 -1
  16. package/dist/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js +1 -1
  17. package/dist/locales/fr/parsers/FRTimeUnitWithinFormatParser.js +1 -1
  18. package/dist/locales/nl/constants.js +8 -5
  19. package/dist/locales/nl/index.js +12 -3
  20. package/dist/locales/nl/parsers/NLRelativeDateFormatParser.d.ts +7 -0
  21. package/dist/locales/nl/parsers/NLRelativeDateFormatParser.js +57 -0
  22. package/dist/locales/nl/parsers/NLTimeExpressionParser.d.ts +1 -0
  23. package/dist/locales/nl/parsers/NLTimeExpressionParser.js +3 -0
  24. package/dist/locales/nl/parsers/NLTimeUnitAgoFormatParser.d.ts +9 -0
  25. package/dist/locales/nl/parsers/NLTimeUnitAgoFormatParser.js +23 -0
  26. package/dist/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.d.ts +7 -0
  27. package/dist/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js +25 -0
  28. package/dist/locales/nl/parsers/NLTimeUnitLaterFormatParser.d.ts +9 -0
  29. package/dist/locales/nl/parsers/NLTimeUnitLaterFormatParser.js +22 -0
  30. package/dist/locales/nl/parsers/NLTimeUnitWithinFormatParser.js +1 -1
  31. package/dist/results.d.ts +2 -2
  32. package/dist/results.js +18 -12
  33. package/dist/timezone.d.ts +1 -1
  34. package/dist/timezone.js +3 -0
  35. package/dist/utils/pattern.js +1 -1
  36. package/package.json +1 -1
  37. package/src/common/casualReferences.ts +3 -1
  38. package/src/common/refiners/ForwardDateRefiner.ts +1 -1
  39. package/src/locales/de/constants.ts +1 -1
  40. package/src/locales/en/constants.ts +5 -5
  41. package/src/locales/en/parsers/ENCasualTimeParser.ts +1 -1
  42. package/src/locales/en/parsers/ENMonthNameLittleEndianParser.ts +9 -10
  43. package/src/locales/en/parsers/ENRelativeDateFormatParser.ts +3 -3
  44. package/src/locales/en/parsers/ENTimeUnitAgoFormatParser.ts +3 -4
  45. package/src/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.ts +1 -1
  46. package/src/locales/en/parsers/ENTimeUnitLaterFormatParser.ts +2 -2
  47. package/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts +1 -1
  48. package/src/locales/fr/constants.ts +1 -1
  49. package/src/locales/fr/parsers/FRTimeUnitAgoFormatParser.ts +1 -1
  50. package/src/locales/fr/parsers/FRTimeUnitRelativeFormatParser.ts +1 -1
  51. package/src/locales/fr/parsers/FRTimeUnitWithinFormatParser.ts +1 -1
  52. package/src/locales/nl/constants.ts +11 -5
  53. package/src/locales/nl/index.ts +12 -3
  54. package/src/locales/nl/parsers/NLRelativeDateFormatParser.ts +70 -0
  55. package/src/locales/nl/parsers/NLTimeExpressionParser.ts +4 -0
  56. package/src/locales/nl/parsers/NLTimeUnitAgoFormatParser.ts +26 -0
  57. package/src/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.ts +27 -0
  58. package/src/locales/nl/parsers/NLTimeUnitLaterFormatParser.ts +27 -0
  59. package/src/locales/nl/parsers/NLTimeUnitWithinFormatParser.ts +1 -1
  60. package/src/results.ts +22 -12
  61. package/src/timezone.ts +5 -1
  62. package/src/utils/pattern.ts +1 -1
  63. package/test/en/en_casual.test.ts +11 -0
  64. package/test/en/en_month_name_little_endian.test.ts +10 -0
  65. package/test/en/en_relative.test.ts +8 -0
  66. package/test/en/en_slash.test.ts +11 -0
  67. package/test/en/en_timezone_exp.test.ts +85 -10
  68. package/test/en/en_weekday.test.ts +69 -25
  69. package/test/en/negative_cases.test.ts +2 -0
  70. package/test/nl/nl_relative.test.ts +212 -0
  71. package/test/nl/nl_time_units_ago.test.ts +243 -0
  72. package/test/nl/nl_time_units_casual_relative.test.ts +130 -0
  73. package/test/nl/nl_time_units_later.test.ts +250 -0
  74. package/test/test_util.ts +5 -2
@@ -0,0 +1,243 @@
1
+ import * as chrono from "../../src/";
2
+ import { testSingleCase, testUnexpectedResult } from "../test_util";
3
+
4
+ test("Test - Single Expression", function () {
5
+ // 5 days ago, we did something
6
+ testSingleCase(chrono.nl, "5 dagen geleden, hebben we wat gedaan", new Date(2012, 7, 10), (result) => {
7
+ expect(result.start).not.toBeNull();
8
+ expect(result.start.get("year")).toBe(2012);
9
+ expect(result.start.get("month")).toBe(8);
10
+ expect(result.start.get("day")).toBe(5);
11
+
12
+ expect(result.index).toBe(0);
13
+ expect(result.text).toBe("5 dagen geleden");
14
+
15
+ expect(result.start).toBeDate(new Date(2012, 8 - 1, 5));
16
+ });
17
+
18
+ // 10 days ago, we did something
19
+ testSingleCase(chrono.nl, "10 dagen geleden, hebben we wat gedaan", new Date(2012, 7, 10), (result) => {
20
+ expect(result.start).not.toBeNull();
21
+ expect(result.start.get("year")).toBe(2012);
22
+ expect(result.start.get("month")).toBe(7);
23
+ expect(result.start.get("day")).toBe(31);
24
+
25
+ expect(result.index).toBe(0);
26
+ expect(result.text).toBe("10 dagen geleden");
27
+
28
+ expect(result.start).toBeDate(new Date(2012, 7 - 1, 31));
29
+ });
30
+
31
+ // 15 minute ago
32
+ testSingleCase(chrono.nl, "15 minuten geleden", new Date(2012, 7, 10, 12, 14), (result) => {
33
+ expect(result.index).toBe(0);
34
+ expect(result.text).toBe("15 minuten geleden");
35
+ expect(result.start.get("hour")).toBe(11);
36
+ expect(result.start.get("minute")).toBe(59);
37
+
38
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
39
+ });
40
+
41
+ // 15 minute earlier
42
+ testSingleCase(chrono.nl, "15 minuten eerder", new Date(2012, 7, 10, 12, 14), (result) => {
43
+ expect(result.index).toBe(0);
44
+ expect(result.text).toBe("15 minuten eerder");
45
+ expect(result.start.get("hour")).toBe(11);
46
+ expect(result.start.get("minute")).toBe(59);
47
+
48
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
49
+ });
50
+
51
+ // 15 minute before
52
+ testSingleCase(chrono.nl, "15 minuten voor", new Date(2012, 7, 10, 12, 14), (result) => {
53
+ expect(result.index).toBe(0);
54
+ expect(result.text).toBe("15 minuten voor");
55
+ expect(result.start.get("hour")).toBe(11);
56
+ expect(result.start.get("minute")).toBe(59);
57
+
58
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
59
+ });
60
+
61
+ // 12 hours ago
62
+ testSingleCase(chrono.nl, " 12 uur geleden", new Date(2012, 7, 10, 12, 14), (result) => {
63
+ expect(result.index).toBe(3);
64
+ expect(result.text).toBe("12 uur geleden");
65
+ expect(result.start.get("hour")).toBe(0);
66
+ expect(result.start.get("minute")).toBe(14);
67
+
68
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 14));
69
+ });
70
+
71
+ // 1h ago
72
+ testSingleCase(chrono.nl, "1u geleden", new Date(2012, 7, 10, 12, 14), (result) => {
73
+ expect(result.index).toBe(0);
74
+ expect(result.text).toBe("1u geleden");
75
+ expect(result.start.get("hour")).toBe(11);
76
+ expect(result.start.get("minute")).toBe(14);
77
+ });
78
+
79
+ // half an hour ago
80
+ testSingleCase(chrono.nl, " half uur geleden", new Date(2012, 7, 10, 12, 14), (result) => {
81
+ expect(result.index).toBe(3);
82
+ expect(result.text).toBe("half uur geleden");
83
+ expect(result.start.get("hour")).toBe(11);
84
+ expect(result.start.get("minute")).toBe(44);
85
+
86
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 44));
87
+ });
88
+
89
+ // 12 hours ago I did something
90
+ testSingleCase(chrono.nl, "12 uur geleden deed ik iets", new Date(2012, 7, 10, 12, 14), (result) => {
91
+ expect(result.index).toBe(0);
92
+ expect(result.text).toBe("12 uur geleden");
93
+ expect(result.start.get("hour")).toBe(0);
94
+ expect(result.start.get("minute")).toBe(14);
95
+
96
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 14));
97
+ });
98
+
99
+ // 12 seconds ago I did something
100
+ testSingleCase(chrono.nl, "12 seconden geleden deed ik iets", new Date(2012, 7, 10, 12, 14), (result) => {
101
+ expect(result.index).toBe(0);
102
+ expect(result.text).toBe("12 seconden geleden");
103
+ expect(result.start.get("hour")).toBe(12);
104
+ expect(result.start.get("minute")).toBe(13);
105
+ expect(result.start.get("second")).toBe(48);
106
+
107
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13, 48));
108
+ });
109
+
110
+ // three seconds ago I did something
111
+ testSingleCase(chrono.nl, "drie seconden geleden deed ik iets", new Date(2012, 7, 10, 12, 14), (result) => {
112
+ expect(result.index).toBe(0);
113
+ expect(result.text).toBe("drie seconden geleden");
114
+ expect(result.start.get("hour")).toBe(12);
115
+ expect(result.start.get("minute")).toBe(13);
116
+ expect(result.start.get("second")).toBe(57);
117
+
118
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13, 57));
119
+ });
120
+
121
+ // 5 Days ago, we did something
122
+ testSingleCase(chrono.nl, "5 dagen geleden, hebben we iets gedaan", new Date(2012, 7, 10), (result) => {
123
+ expect(result.start).not.toBeNull();
124
+ expect(result.start.get("year")).toBe(2012);
125
+ expect(result.start.get("month")).toBe(8);
126
+ expect(result.start.get("day")).toBe(5);
127
+
128
+ expect(result.index).toBe(0);
129
+ expect(result.text).toBe("5 dagen geleden");
130
+
131
+ expect(result.start).toBeDate(new Date(2012, 8 - 1, 5));
132
+ });
133
+
134
+ // A days ago, we did something
135
+ testSingleCase(chrono.nl, "Een dag geleden, hebben we wat gedaan", new Date(2012, 7, 10), (result) => {
136
+ expect(result.start).not.toBeNull();
137
+ expect(result.start.get("year")).toBe(2012);
138
+ expect(result.start.get("month")).toBe(8);
139
+ expect(result.start.get("day")).toBe(9);
140
+
141
+ expect(result.index).toBe(0);
142
+ expect(result.text).toBe("Een dag geleden");
143
+
144
+ expect(result.start).toBeDate(new Date(2012, 8 - 1, 9));
145
+ });
146
+
147
+ // a min before
148
+ testSingleCase(chrono.nl, "een minuut geleden", new Date(2012, 7, 10, 12, 14), (result) => {
149
+ expect(result.index).toBe(0);
150
+ expect(result.text).toBe("een minuut geleden");
151
+ expect(result.start.get("hour")).toBe(12);
152
+ expect(result.start.get("minute")).toBe(13);
153
+
154
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 13));
155
+ });
156
+ });
157
+
158
+ test("Test - Single Expression (Casual)", function () {
159
+ // 5 months ago, we did something
160
+ testSingleCase(chrono.nl, "5 maanden geleden, hebben we iets gedaan", new Date(2012, 8 - 1, 10), (result) => {
161
+ expect(result.start).not.toBeNull();
162
+ expect(result.start.get("year")).toBe(2012);
163
+ expect(result.start.get("month")).toBe(3);
164
+ expect(result.start.get("day")).toBe(10);
165
+
166
+ expect(result.index).toBe(0);
167
+ expect(result.text).toBe("5 maanden geleden");
168
+
169
+ expect(result.start).toBeDate(new Date(2012, 3 - 1, 10));
170
+ });
171
+
172
+ // 5 years ago, we did something
173
+ testSingleCase(chrono.nl, "5 jaar geleden, hebben we iets gedaan", new Date(2012, 8 - 1, 10), (result) => {
174
+ expect(result.start).not.toBeNull();
175
+ expect(result.start.get("year")).toBe(2007);
176
+ expect(result.start.get("month")).toBe(8);
177
+ expect(result.start.get("day")).toBe(10);
178
+
179
+ expect(result.index).toBe(0);
180
+ expect(result.text).toBe("5 jaar geleden");
181
+
182
+ expect(result.start).toBeDate(new Date(2007, 8 - 1, 10));
183
+ });
184
+
185
+ // a week ago, we did something
186
+ testSingleCase(chrono.nl, "een week geleden, hebben we iets gedaan", new Date(2012, 8 - 1, 3), (result) => {
187
+ expect(result.start).not.toBeNull();
188
+ expect(result.start.get("year")).toBe(2012);
189
+ expect(result.start.get("month")).toBe(7);
190
+ expect(result.start.get("day")).toBe(27);
191
+
192
+ expect(result.index).toBe(0);
193
+ expect(result.text).toBe("een week geleden");
194
+
195
+ expect(result.start).toBeDate(new Date(2012, 7 - 1, 27));
196
+ });
197
+
198
+ // a couple of days ago, we did something
199
+ testSingleCase(chrono.nl, "paar dagen geleden, hebben we iets gedaan", new Date(2012, 8 - 1, 2), (result) => {
200
+ expect(result.start).not.toBeNull();
201
+ expect(result.start.get("year")).toBe(2012);
202
+ expect(result.start.get("month")).toBe(7);
203
+ expect(result.start.get("day")).toBe(31);
204
+
205
+ expect(result.index).toBe(0);
206
+ expect(result.text).toBe("paar dagen geleden");
207
+
208
+ expect(result.start).toBeDate(new Date(2012, 7 - 1, 31));
209
+ });
210
+ });
211
+
212
+ test("Test - Nested time ago", function () {
213
+ // 15 hours 29 min ago
214
+ testSingleCase(chrono.nl, "15 uur 29 minuten geleden", new Date(2012, 7, 10, 22, 30), (result) => {
215
+ expect(result.text).toBe("15 uur 29 minuten geleden");
216
+ expect(result.start.get("day")).toBe(10);
217
+ expect(result.start.get("hour")).toBe(7);
218
+ expect(result.start.get("minute")).toBe(1);
219
+ });
220
+
221
+ // 1 day 21 hours ago
222
+ testSingleCase(chrono.nl, "1 dag 21 uur geleden ", new Date(2012, 7, 10, 22, 30), (result) => {
223
+ expect(result.text).toBe("1 dag 21 uur geleden");
224
+ expect(result.start.get("day")).toBe(9);
225
+ expect(result.start.get("hour")).toBe(1);
226
+ expect(result.start.get("minute")).toBe(30);
227
+ });
228
+
229
+ // 3 min 49 sec ago
230
+ testSingleCase(chrono.nl, "3 min 49 sec geleden ", new Date(2012, 7, 10, 22, 30), (result) => {
231
+ expect(result.text).toBe("3 min 49 sec geleden");
232
+ expect(result.start.get("day")).toBe(10);
233
+ expect(result.start.get("hour")).toBe(22);
234
+ expect(result.start.get("minute")).toBe(26);
235
+ expect(result.start.get("second")).toBe(11);
236
+ });
237
+ });
238
+
239
+ test("Test - Negative cases", function () {
240
+ testUnexpectedResult(chrono, "15 uur 29 min");
241
+ testUnexpectedResult(chrono, "een paar uur");
242
+ testUnexpectedResult(chrono, "5 dagen");
243
+ });
@@ -0,0 +1,130 @@
1
+ import * as chrono from "../../src";
2
+ import { testSingleCase } from "../test_util";
3
+
4
+ test("Test - Positive time units", () => {
5
+ // next 2 weeks
6
+ testSingleCase(chrono.nl, "komende 2 weken", new Date(2016, 10 - 1, 1, 12), (result, text) => {
7
+ expect(result.text).toBe(text);
8
+ expect(result.start.get("year")).toBe(2016);
9
+ expect(result.start.get("month")).toBe(10);
10
+ expect(result.start.get("day")).toBe(15);
11
+ });
12
+
13
+ // next 2 days
14
+ testSingleCase(chrono.nl, "komende 2 dagen", new Date(2016, 10 - 1, 1, 12), (result, text) => {
15
+ expect(result.text).toBe(text);
16
+ expect(result.start.get("year")).toBe(2016);
17
+ expect(result.start.get("month")).toBe(10);
18
+ expect(result.start.get("day")).toBe(3);
19
+ expect(result.start.get("hour")).toBe(12);
20
+ });
21
+
22
+ // next two years
23
+ testSingleCase(chrono.nl, "komende 2 jaar", new Date(2016, 10 - 1, 1, 12), (result, text) => {
24
+ expect(result.text).toBe(text);
25
+ expect(result.start.get("year")).toBe(2018);
26
+ expect(result.start.get("month")).toBe(10);
27
+ expect(result.start.get("day")).toBe(1);
28
+ expect(result.start.get("hour")).toBe(12);
29
+ });
30
+
31
+ // next 2 weeks 3 days
32
+ testSingleCase(chrono.nl, "komende 2 weken 3 dagen", new Date(2016, 10 - 1, 1, 12), (result, text) => {
33
+ expect(result.text).toBe(text);
34
+ expect(result.start.get("year")).toBe(2016);
35
+ expect(result.start.get("month")).toBe(10);
36
+ expect(result.start.get("day")).toBe(18);
37
+ expect(result.start.get("hour")).toBe(12);
38
+ });
39
+ });
40
+
41
+ test("Test - Negative time units", () => {
42
+ // last 2 weeks
43
+ testSingleCase(chrono.nl, "afgelopen 2 weken", new Date(2016, 10 - 1, 1, 12), (result, text) => {
44
+ expect(result.text).toBe(text);
45
+ expect(result.start.get("year")).toBe(2016);
46
+ expect(result.start.get("month")).toBe(9);
47
+ expect(result.start.get("day")).toBe(17);
48
+ expect(result.start.get("hour")).toBe(12);
49
+ });
50
+
51
+ // last two weeks
52
+ testSingleCase(chrono.nl, "afgelopen twee weken", new Date(2016, 10 - 1, 1, 12), (result, text) => {
53
+ expect(result.text).toBe(text);
54
+ expect(result.start.get("year")).toBe(2016);
55
+ expect(result.start.get("month")).toBe(9);
56
+ expect(result.start.get("day")).toBe(17);
57
+ expect(result.start.get("hour")).toBe(12);
58
+ });
59
+
60
+ // past 2 days
61
+ testSingleCase(chrono.nl, "afgelopen 2 dagen", new Date(2016, 10 - 1, 1, 12), (result, text) => {
62
+ expect(result.text).toBe(text);
63
+ expect(result.start.get("year")).toBe(2016);
64
+ expect(result.start.get("month")).toBe(9);
65
+ expect(result.start.get("day")).toBe(29);
66
+ expect(result.start.get("hour")).toBe(12);
67
+ });
68
+
69
+ // +2 months, 5 days
70
+ testSingleCase(chrono.nl, "+2 maanden 5 dagen", new Date(2016, 10 - 1, 1, 12), (result, text) => {
71
+ expect(result.text).toBe(text);
72
+ expect(result.start.get("year")).toBe(2016);
73
+ expect(result.start.get("month")).toBe(12);
74
+ expect(result.start.get("day")).toBe(6);
75
+ expect(result.start.get("hour")).toBe(12);
76
+ });
77
+ });
78
+
79
+ test("Test - Plus '+' sign", () => {
80
+ //+15 minutes
81
+ testSingleCase(chrono.nl.casual, "+15 minuten", new Date(2012, 7 - 1, 10, 12, 14), (result, text) => {
82
+ expect(result.text).toBe(text);
83
+ expect(result.start.get("hour")).toBe(12);
84
+ expect(result.start.get("minute")).toBe(29);
85
+
86
+ expect(result.start).toBeDate(new Date(2012, 7 - 1, 10, 12, 29));
87
+ });
88
+
89
+ testSingleCase(chrono.nl.casual, "+15min", new Date(2012, 7 - 1, 10, 12, 14), (result, text) => {
90
+ expect(result.text).toBe(text);
91
+ expect(result.start.get("hour")).toBe(12);
92
+ expect(result.start.get("minute")).toBe(29);
93
+
94
+ expect(result.start).toBeDate(new Date(2012, 7 - 1, 10, 12, 29));
95
+ });
96
+
97
+ // +1 day 2 hour
98
+ testSingleCase(chrono.nl.casual, "+1 dag 2 uur", new Date(2012, 7 - 1, 10, 12, 14), (result, text) => {
99
+ expect(result.text).toBe(text);
100
+ expect(result.start.get("day")).toBe(11);
101
+ expect(result.start.get("hour")).toBe(14);
102
+ expect(result.start.get("minute")).toBe(14);
103
+
104
+ expect(result.start).toBeDate(new Date(2012, 7 - 1, 11, 14, 14));
105
+ });
106
+ });
107
+
108
+ test("Test - Minus '-' sign", () => {
109
+ // -3y
110
+ testSingleCase(chrono.nl.casual, "-3jr", new Date(2015, 7 - 1, 10, 12, 14), (result, text) => {
111
+ expect(result.text).toBe(text);
112
+ expect(result.start.get("year")).toBe(2012);
113
+ expect(result.start.get("month")).toBe(7);
114
+ expect(result.start.get("day")).toBe(10);
115
+ expect(result.start.get("hour")).toBe(12);
116
+ expect(result.start.get("minute")).toBe(14);
117
+
118
+ expect(result.start).toBeDate(new Date(2012, 7 - 1, 10, 12, 14));
119
+ });
120
+
121
+ // -2hr5min
122
+ testSingleCase(chrono.nl, "-2u5min", new Date(2016, 10 - 1, 1, 12), (result, text) => {
123
+ expect(result.text).toBe(text);
124
+ expect(result.start.get("year")).toBe(2016);
125
+ expect(result.start.get("month")).toBe(10);
126
+ expect(result.start.get("day")).toBe(1);
127
+ expect(result.start.get("hour")).toBe(9);
128
+ expect(result.start.get("minute")).toBe(55);
129
+ });
130
+ });
@@ -0,0 +1,250 @@
1
+ import * as chrono from "../../src/";
2
+ import { testSingleCase } from "../test_util";
3
+
4
+ test("Test - Later Expression", function () {
5
+ // 2 days later
6
+ testSingleCase(chrono.nl, "2 dagen later", new Date(2012, 7, 10, 12), (result) => {
7
+ expect(result.start).not.toBeNull();
8
+ expect(result.start.get("year")).toBe(2012);
9
+ expect(result.start.get("month")).toBe(8);
10
+ expect(result.start.get("day")).toBe(12);
11
+
12
+ expect(result.index).toBe(0);
13
+ expect(result.text).toBe("2 dagen later");
14
+
15
+ expect(result.start.isCertain("day")).toBe(true);
16
+ expect(result.start.isCertain("month")).toBe(true);
17
+
18
+ expect(result.start).toBeDate(new Date(2012, 8 - 1, 12, 12));
19
+ });
20
+
21
+ // 5 minutes later
22
+ testSingleCase(chrono.nl, "5 minuten later", new Date(2012, 7, 10, 10, 0), (result) => {
23
+ expect(result.start).not.toBeNull();
24
+ expect(result.start.get("year")).toBe(2012);
25
+ expect(result.start.get("month")).toBe(8);
26
+ expect(result.start.get("day")).toBe(10);
27
+ expect(result.start.get("hour")).toBe(10);
28
+ expect(result.start.get("minute")).toBe(5);
29
+
30
+ expect(result.index).toBe(0);
31
+ expect(result.text).toBe("5 minuten later");
32
+
33
+ expect(result.start.isCertain("hour")).toBe(true);
34
+ expect(result.start.isCertain("minute")).toBe(true);
35
+
36
+ expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 10, 5));
37
+ });
38
+
39
+ // 3 week later
40
+ testSingleCase(chrono.nl, "3 weken later", new Date(2012, 7 - 1, 10, 10, 0), (result) => {
41
+ expect(result.start).not.toBeNull();
42
+ expect(result.start.get("year")).toBe(2012);
43
+ expect(result.start.get("month")).toBe(7);
44
+ expect(result.start.get("day")).toBe(31);
45
+
46
+ expect(result.index).toBe(0);
47
+ expect(result.text).toBe("3 weken later");
48
+
49
+ expect(result.start).toBeDate(new Date(2012, 7 - 1, 31, 10, 0));
50
+ });
51
+ });
52
+
53
+ test("Test - From now Expression", () => {
54
+ // 5 days from now, we did something
55
+ testSingleCase(chrono.nl, "5 dagen vanaf nu we hebben iets gedaan", new Date(2012, 7, 10), (result) => {
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(15);
60
+
61
+ expect(result.index).toBe(0);
62
+ expect(result.text).toBe("5 dagen vanaf nu");
63
+
64
+ expect(result.start).toBeDate(new Date(2012, 8 - 1, 15));
65
+ });
66
+
67
+ // 10 days from now, we did something
68
+ testSingleCase(chrono.nl, "10 dagen vanaf nu we hebben iets gedaan", new Date(2012, 7, 10), (result) => {
69
+ expect(result.start).not.toBeNull();
70
+ expect(result.start.get("year")).toBe(2012);
71
+ expect(result.start.get("month")).toBe(8);
72
+ expect(result.start.get("day")).toBe(20);
73
+
74
+ expect(result.index).toBe(0);
75
+ expect(result.text).toBe("10 dagen vanaf nu");
76
+
77
+ expect(result.start).toBeDate(new Date(2012, 8 - 1, 20));
78
+ });
79
+
80
+ // 15 minute from now
81
+ testSingleCase(chrono.nl, "15 minuten vanaf nu", new Date(2012, 7, 10, 12, 14), (result) => {
82
+ expect(result.index).toBe(0);
83
+ expect(result.text).toBe("15 minuten vanaf nu");
84
+ expect(result.start.get("hour")).toBe(12);
85
+ expect(result.start.get("minute")).toBe(29);
86
+
87
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 29));
88
+ });
89
+
90
+ // 15 minutes earlier
91
+ testSingleCase(chrono.nl, "15 minuten eerder", new Date(2012, 7, 10, 12, 14), (result) => {
92
+ expect(result.index).toBe(0);
93
+ expect(result.text).toBe("15 minuten eerder");
94
+ expect(result.start.get("hour")).toBe(11);
95
+ expect(result.start.get("minute")).toBe(59);
96
+
97
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 11, 59));
98
+ });
99
+
100
+ // 15 minute out
101
+ testSingleCase(chrono.nl, "15 minuten uit", new Date(2012, 7, 10, 12, 14), (result) => {
102
+ expect(result.index).toBe(0);
103
+ expect(result.text).toBe("15 minuten uit");
104
+ expect(result.start.get("hour")).toBe(12);
105
+ expect(result.start.get("minute")).toBe(29);
106
+
107
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 29));
108
+ });
109
+
110
+ // 12 hours from now
111
+ testSingleCase(chrono.nl, " 12 uur vanaf nu", new Date(2012, 7, 10, 12, 14), (result) => {
112
+ expect(result.index).toBe(3);
113
+ expect(result.text).toBe("12 uur vanaf nu");
114
+ expect(result.start.get("day")).toBe(11);
115
+ expect(result.start.get("hour")).toBe(0);
116
+ expect(result.start.get("minute")).toBe(14);
117
+
118
+ expect(result.start).toBeDate(new Date(2012, 7, 11, 0, 14));
119
+ });
120
+
121
+ // half an hour from now
122
+ testSingleCase(chrono.nl, " half uur vanaf nu", new Date(2012, 7, 10, 12, 14), (result) => {
123
+ expect(result.text).toBe("half uur vanaf nu");
124
+ expect(result.index).toBe(3);
125
+ expect(result.start.get("hour")).toBe(12);
126
+ expect(result.start.get("minute")).toBe(44);
127
+
128
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 44));
129
+ });
130
+
131
+ // 12 hours from now I did something
132
+ testSingleCase(chrono.nl, "Over 12 uur heb ik iets gedaan", new Date(2012, 7, 10, 12, 14), (result) => {
133
+ expect(result.index).toBe(0);
134
+ expect(result.text).toBe("Over 12 uur");
135
+ expect(result.start.get("day")).toBe(11);
136
+ expect(result.start.get("hour")).toBe(0);
137
+ expect(result.start.get("minute")).toBe(14);
138
+
139
+ expect(result.start).toBeDate(new Date(2012, 7, 11, 0, 14));
140
+ });
141
+
142
+ // 12 seconds from now I did something
143
+ testSingleCase(chrono.nl, "Over 12 seconden heb ik iets gedaan", new Date(2012, 7, 10, 12, 14), (result) => {
144
+ expect(result.index).toBe(0);
145
+ expect(result.text).toBe("Over 12 seconden");
146
+ expect(result.start.get("hour")).toBe(12);
147
+ expect(result.start.get("minute")).toBe(14);
148
+ expect(result.start.get("second")).toBe(12);
149
+
150
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 14, 12));
151
+ });
152
+
153
+ // three seconds from now I did something
154
+ testSingleCase(chrono.nl, "over drie seconden heb ik iets gedaan", new Date(2012, 7, 10, 12, 14), (result) => {
155
+ expect(result.index).toBe(0);
156
+ expect(result.text).toBe("over drie seconden");
157
+ expect(result.start.get("hour")).toBe(12);
158
+ expect(result.start.get("minute")).toBe(14);
159
+ expect(result.start.get("second")).toBe(3);
160
+
161
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 14, 3));
162
+ });
163
+
164
+ // 5 Days from now, we did something
165
+ testSingleCase(chrono.nl, "Over 5 dagen hebben we iets gedaan", new Date(2012, 7, 10), (result) => {
166
+ expect(result.start).not.toBeNull();
167
+ expect(result.start.get("year")).toBe(2012);
168
+ expect(result.start.get("month")).toBe(8);
169
+ expect(result.start.get("day")).toBe(15);
170
+
171
+ expect(result.index).toBe(0);
172
+ expect(result.text).toBe("Over 5 dagen");
173
+
174
+ expect(result.start).toBeDate(new Date(2012, 8 - 1, 15));
175
+ });
176
+
177
+ // half An hour from now
178
+ testSingleCase(chrono.nl, " half uur vanaf nu", new Date(2012, 7, 10, 12, 14), (result) => {
179
+ expect(result.index).toBe(3);
180
+ expect(result.text).toBe("half uur vanaf nu");
181
+ expect(result.start.get("hour")).toBe(12);
182
+ expect(result.start.get("minute")).toBe(44);
183
+
184
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 44));
185
+ });
186
+
187
+ // A days from now, we did something
188
+ testSingleCase(chrono.nl, "Over een dag hebben we iets gedaan", new Date(2012, 7, 10), (result) => {
189
+ expect(result.start).not.toBeNull();
190
+ expect(result.start.get("year")).toBe(2012);
191
+ expect(result.start.get("month")).toBe(8);
192
+ expect(result.start.get("day")).toBe(11);
193
+
194
+ expect(result.index).toBe(0);
195
+ expect(result.text).toBe("Over een dag");
196
+
197
+ expect(result.start).toBeDate(new Date(2012, 8 - 1, 11));
198
+ });
199
+
200
+ // a min out
201
+ testSingleCase(chrono.nl, "een minuutje uit", new Date(2012, 7, 10, 12, 14), (result) => {
202
+ expect(result.index).toBe(0);
203
+ expect(result.text).toBe("een minuutje uit");
204
+ expect(result.start.get("hour")).toBe(12);
205
+ expect(result.start.get("minute")).toBe(15);
206
+
207
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 15));
208
+ });
209
+
210
+ // in 1 hour
211
+ testSingleCase(chrono.nl, "in 1 uur", new Date(2012, 7, 10, 12, 14), (result) => {
212
+ expect(result.index).toBe(0);
213
+ expect(result.text).toBe("in 1 uur");
214
+ expect(result.start.get("hour")).toBe(13);
215
+ expect(result.start.get("minute")).toBe(14);
216
+
217
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 13, 14));
218
+ });
219
+
220
+ // in 1.5 hours
221
+ testSingleCase(chrono.nl, "over 1,5 uur", new Date(2012, 7, 10, 12, 40), (result) => {
222
+ expect(result.index).toBe(0);
223
+ expect(result.text).toBe("over 1,5 uur");
224
+ expect(result.start.get("hour")).toBe(14);
225
+ expect(result.start.get("minute")).toBe(10);
226
+
227
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 14, 10));
228
+ });
229
+ });
230
+
231
+ test("Test - Strict mode", function () {
232
+ // 15 minutes from now
233
+ testSingleCase(chrono.nl.strict, "15 minuten vanaf nu", new Date(2012, 7, 10, 12, 14), (result, text) => {
234
+ expect(result.text).toBe(text);
235
+ expect(result.start.get("hour")).toBe(12);
236
+ expect(result.start.get("minute")).toBe(29);
237
+
238
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 29));
239
+ });
240
+
241
+ // 25 minutes later
242
+ testSingleCase(chrono.nl.strict, "25 minuten later", new Date(2012, 7, 10, 12, 40), (result) => {
243
+ expect(result.index).toBe(0);
244
+ expect(result.text).toBe("25 minuten later");
245
+ expect(result.start.get("hour")).toBe(13);
246
+ expect(result.start.get("minute")).toBe(5);
247
+
248
+ expect(result.start).toBeDate(new Date(2012, 7, 10, 13, 5));
249
+ });
250
+ });
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, { debug: debugHandler });
70
+ const results = chrono.parse(text, refDate, options);
68
71
  expect(results).toHaveLength(0);
69
72
  } catch (e) {
70
73
  debugHandler.executeBufferedBlocks();