chrono-node 1.4.7 → 1.4.9

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 (69) hide show
  1. package/dist/chrono.js +711 -809
  2. package/dist/chrono.js.map +1 -1
  3. package/dist/chrono.min.js +1 -1
  4. package/dist/chrono.min.js.map +1 -1
  5. package/package.json +1 -1
  6. package/src/chrono.js +57 -59
  7. package/src/options.js +30 -29
  8. package/src/parsers/en/ENDeadlineFormatParser.js +9 -9
  9. package/src/result.js +119 -119
  10. package/test/de/de.test.js +36 -51
  11. package/test/de/de_casual.test.js +242 -141
  12. package/test/de/de_dash.test.js +5 -8
  13. package/test/de/de_deadline.test.js +151 -47
  14. package/test/de/de_little_endian.test.js +207 -58
  15. package/test/de/de_time_ago.test.js +167 -52
  16. package/test/de/de_time_exp.test.js +135 -121
  17. package/test/de/de_weekday.test.js +94 -31
  18. package/test/en/en.test.js +118 -89
  19. package/test/en/en_casual.test.js +149 -134
  20. package/test/en/en_dash.test.js +17 -11
  21. package/test/en/en_deadline.test.js +93 -69
  22. package/test/en/en_inter_std.test.js +28 -7
  23. package/test/en/en_little_endian.test.js +76 -26
  24. package/test/en/en_middle_endian.test.js +63 -21
  25. package/test/en/en_month.test.js +6 -2
  26. package/test/en/en_option_forward.test.js +120 -112
  27. package/test/en/en_relative.test.js +155 -172
  28. package/test/en/en_slash.test.js +156 -115
  29. package/test/en/en_time_ago.test.js +61 -21
  30. package/test/en/en_time_exp.test.js +228 -209
  31. package/test/en/en_time_from_now.test.js +70 -24
  32. package/test/en/en_time_later.test.js +16 -6
  33. package/test/en/en_weekday.test.js +39 -13
  34. package/test/es/es_casual.test.js +143 -120
  35. package/test/es/es_dash.test.js +7 -8
  36. package/test/es/es_deadline.test.js +69 -35
  37. package/test/es/es_little_endian.test.js +250 -145
  38. package/test/es/es_slash.test.js +17 -12
  39. package/test/es/es_time_ago.test.js +21 -7
  40. package/test/es/es_time_exp.test.js +154 -160
  41. package/test/fr/fr_casual.test.js +153 -124
  42. package/test/fr/fr_dash.test.js +13 -6
  43. package/test/fr/fr_deadline.test.js +163 -44
  44. package/test/fr/fr_little_endian.test.js +262 -81
  45. package/test/fr/fr_relative.test.js +188 -196
  46. package/test/fr/fr_slash.test.js +41 -14
  47. package/test/fr/fr_time_ago.test.js +30 -10
  48. package/test/fr/fr_time_exp.test.js +619 -567
  49. package/test/fr/fr_weekday.test.js +24 -8
  50. package/test/ja/ja_casual.test.js +41 -26
  51. package/test/ja/ja_standard.test.js +322 -207
  52. package/test/nl/nl.test.js +18 -20
  53. package/test/nl/nl_dash.test.js +26 -26
  54. package/test/nl/nl_little_endian.test.js +100 -51
  55. package/test/nl/nl_time_exp.test.js +37 -13
  56. package/test/nl/nl_weekday.test.js +39 -13
  57. package/test/pt/pt_casual.test.js +222 -156
  58. package/test/pt/pt_dash.test.js +7 -6
  59. package/test/pt/pt_deadline.test.js +51 -17
  60. package/test/pt/pt_little_endian.test.js +251 -144
  61. package/test/pt/pt_slash.test.js +38 -25
  62. package/test/pt/pt_time_ago.test.js +128 -80
  63. package/test/pt/pt_time_exp.test.js +191 -173
  64. package/test/test_util.js +1 -5
  65. package/test/zh/zh_hant_casual.test.js +184 -87
  66. package/test/zh/zh_hant_date.test.js +109 -75
  67. package/test/zh/zh_hant_deadline.test.js +131 -41
  68. package/test/zh/zh_hant_time_exp.test.js +184 -141
  69. package/test/zh/zh_hant_weekday.test.js +64 -22
@@ -1,764 +1,816 @@
1
1
  import * as chrono from '../../src/chrono';
2
- import { testSingleCase, testUnexpectedResult } from '../test_util';
2
+ import { testSingleCase } from '../test_util';
3
3
 
4
4
  test("Test - Single Expression", function() {
5
5
 
6
6
 
7
7
  testSingleCase(chrono.fr, "8h10", new Date(2012,7,10), (result) => {
8
- expect(result.index).toBe(0);
9
- expect(result.text).toBe('8h10');
8
+ expect(result.index).toBe(0)
9
+ expect(result.text).toBe('8h10')
10
10
 
11
- expect(result.start).not.toBeNull();
12
- expect(result.start.get('hour')).toBe(8);
13
- expect(result.start.get('minute')).toBe(10);
11
+ expect(result.start).not.toBeNull()
12
+ expect(result.start.get('hour')).toBe(8)
13
+ expect(result.start.get('minute')).toBe(10)
14
14
 
15
15
 
16
- expect(result.start.isCertain('day')).toBe(false);
17
- expect(result.start.isCertain('month')).toBe(false);
18
- expect(result.start.isCertain('year')).toBe(false);
19
- expect(result.start.isCertain('hour')).toBe(true);
20
- expect(result.start.isCertain('minute')).toBe(true);
21
- expect(result.start.isCertain('second')).toBe(false);
22
- expect(result.start.isCertain('millisecond')).toBe(false);
16
+ expect(result.start.isCertain('day')).toBe(false)
17
+ expect(result.start.isCertain('month')).toBe(false)
18
+ expect(result.start.isCertain('year')).toBe(false)
19
+ expect(result.start.isCertain('hour')).toBe(true)
20
+ expect(result.start.isCertain('minute')).toBe(true)
21
+ expect(result.start.isCertain('second')).toBe(false)
22
+ expect(result.start.isCertain('millisecond')).toBe(false)
23
23
 
24
- expect(result.start).toBeDate(new Date(2012, 7, 10, 8, 10));
24
+ var resultDate = result.start.date();
25
+ var expectDate = new Date(2012, 7, 10, 8, 10);
26
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
25
27
  });
26
28
 
27
29
  testSingleCase(chrono.fr, "8h10m", new Date(2012,7,10), (result) => {
28
- expect(result.index).toBe(0);
29
- expect(result.text).toBe('8h10m');
30
+ expect(result.index).toBe(0)
31
+ expect(result.text).toBe('8h10m')
30
32
 
31
- expect(result.start).not.toBeNull();
32
- expect(result.start.get('hour')).toBe(8);
33
- expect(result.start.get('minute')).toBe(10);
33
+ expect(result.start).not.toBeNull()
34
+ expect(result.start.get('hour')).toBe(8)
35
+ expect(result.start.get('minute')).toBe(10)
34
36
 
35
37
 
36
- expect(result.start.isCertain('day')).toBe(false);
37
- expect(result.start.isCertain('month')).toBe(false);
38
- expect(result.start.isCertain('year')).toBe(false);
39
- expect(result.start.isCertain('hour')).toBe(true);
40
- expect(result.start.isCertain('minute')).toBe(true);
41
- expect(result.start.isCertain('second')).toBe(false);
42
- expect(result.start.isCertain('millisecond')).toBe(false);
38
+ expect(result.start.isCertain('day')).toBe(false)
39
+ expect(result.start.isCertain('month')).toBe(false)
40
+ expect(result.start.isCertain('year')).toBe(false)
41
+ expect(result.start.isCertain('hour')).toBe(true)
42
+ expect(result.start.isCertain('minute')).toBe(true)
43
+ expect(result.start.isCertain('second')).toBe(false)
44
+ expect(result.start.isCertain('millisecond')).toBe(false)
43
45
 
44
- expect(result.start).toBeDate(new Date(2012, 7, 10, 8, 10));
46
+ var resultDate = result.start.date();
47
+ var expectDate = new Date(2012, 7, 10, 8, 10);
48
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
45
49
  });
46
50
 
47
51
  testSingleCase(chrono.fr, "8h10m00", new Date(2012,7,10), (result) => {
48
- expect(result.index).toBe(0);
49
- expect(result.text).toBe('8h10m00');
52
+ expect(result.index).toBe(0)
53
+ expect(result.text).toBe('8h10m00')
50
54
 
51
- expect(result.start).not.toBeNull();
52
- expect(result.start.get('hour')).toBe(8);
53
- expect(result.start.get('minute')).toBe(10);
55
+ expect(result.start).not.toBeNull()
56
+ expect(result.start.get('hour')).toBe(8)
57
+ expect(result.start.get('minute')).toBe(10)
54
58
 
55
59
 
56
- expect(result.start.isCertain('day')).toBe(false);
57
- expect(result.start.isCertain('month')).toBe(false);
58
- expect(result.start.isCertain('year')).toBe(false);
59
- expect(result.start.isCertain('hour')).toBe(true);
60
- expect(result.start.isCertain('minute')).toBe(true);
61
- expect(result.start.isCertain('second')).toBe(true);
62
- expect(result.start.isCertain('millisecond')).toBe(false);
60
+ expect(result.start.isCertain('day')).toBe(false)
61
+ expect(result.start.isCertain('month')).toBe(false)
62
+ expect(result.start.isCertain('year')).toBe(false)
63
+ expect(result.start.isCertain('hour')).toBe(true)
64
+ expect(result.start.isCertain('minute')).toBe(true)
65
+ expect(result.start.isCertain('second')).toBe(true)
66
+ expect(result.start.isCertain('millisecond')).toBe(false)
63
67
 
64
- expect(result.start).toBeDate(new Date(2012, 7, 10, 8, 10));
68
+ var resultDate = result.start.date();
69
+ var expectDate = new Date(2012, 7, 10, 8, 10);
70
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
65
71
  });
66
72
 
67
73
  testSingleCase(chrono.fr, "8h10m00s", new Date(2012,7,10), (result) => {
68
- expect(result.index).toBe(0);
69
- expect(result.text).toBe('8h10m00s');
74
+ expect(result.index).toBe(0)
75
+ expect(result.text).toBe('8h10m00s')
70
76
 
71
- expect(result.start).not.toBeNull();
72
- expect(result.start.get('hour')).toBe(8);
73
- expect(result.start.get('minute')).toBe(10);
77
+ expect(result.start).not.toBeNull()
78
+ expect(result.start.get('hour')).toBe(8)
79
+ expect(result.start.get('minute')).toBe(10)
74
80
 
75
81
 
76
- expect(result.start.isCertain('day')).toBe(false);
77
- expect(result.start.isCertain('month')).toBe(false);
78
- expect(result.start.isCertain('year')).toBe(false);
79
- expect(result.start.isCertain('hour')).toBe(true);
80
- expect(result.start.isCertain('minute')).toBe(true);
81
- expect(result.start.isCertain('second')).toBe(true);
82
- expect(result.start.isCertain('millisecond')).toBe(false);
82
+ expect(result.start.isCertain('day')).toBe(false)
83
+ expect(result.start.isCertain('month')).toBe(false)
84
+ expect(result.start.isCertain('year')).toBe(false)
85
+ expect(result.start.isCertain('hour')).toBe(true)
86
+ expect(result.start.isCertain('minute')).toBe(true)
87
+ expect(result.start.isCertain('second')).toBe(true)
88
+ expect(result.start.isCertain('millisecond')).toBe(false)
83
89
 
84
- expect(result.start).toBeDate(new Date(2012, 7, 10, 8, 10));
90
+ var resultDate = result.start.date();
91
+ var expectDate = new Date(2012, 7, 10, 8, 10);
92
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
85
93
  });
86
94
 
87
95
  testSingleCase(chrono.fr, "8:10 PM", new Date(2012,7,10), (result) => {
88
- expect(result.index).toBe(0);
89
- expect(result.text).toBe('8:10 PM');
96
+ expect(result.index).toBe(0)
97
+ expect(result.text).toBe('8:10 PM')
90
98
 
91
- expect(result.start).not.toBeNull();
92
- expect(result.start.get('hour')).toBe(20);
93
- expect(result.start.get('minute')).toBe(10);
94
- expect(result.start.isCertain('second')).toBe(false);
95
- expect(result.start.isCertain('millisecond')).toBe(false);
99
+ expect(result.start).not.toBeNull()
100
+ expect(result.start.get('hour')).toBe(20)
101
+ expect(result.start.get('minute')).toBe(10)
102
+ expect(result.start.isCertain('second')).toBe(false)
103
+ expect(result.start.isCertain('millisecond')).toBe(false)
96
104
 
97
105
 
98
- expect(result.start).toBeDate(new Date(2012, 7, 10, 20, 10));
106
+ var resultDate = result.start.date();
107
+ var expectDate = new Date(2012, 7, 10, 20, 10);
108
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
99
109
  });
100
110
 
101
111
  testSingleCase(chrono.fr, "8h10 PM", new Date(2012,7,10), (result) => {
102
- expect(result.index).toBe(0);
103
- expect(result.text).toBe('8h10 PM');
112
+ expect(result.index).toBe(0)
113
+ expect(result.text).toBe('8h10 PM')
104
114
 
105
- expect(result.start).not.toBeNull();
106
- expect(result.start.get('hour')).toBe(20);
107
- expect(result.start.get('minute')).toBe(10);
108
- expect(result.start.isCertain('second')).toBe(false);
109
- expect(result.start.isCertain('millisecond')).toBe(false);
115
+ expect(result.start).not.toBeNull()
116
+ expect(result.start.get('hour')).toBe(20)
117
+ expect(result.start.get('minute')).toBe(10)
118
+ expect(result.start.isCertain('second')).toBe(false)
119
+ expect(result.start.isCertain('millisecond')).toBe(false)
110
120
 
111
121
 
112
- expect(result.start).toBeDate(new Date(2012, 7, 10, 20, 10));
122
+ var resultDate = result.start.date();
123
+ var expectDate = new Date(2012, 7, 10, 20, 10);
124
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
113
125
  });
114
126
 
115
127
 
116
128
  testSingleCase(chrono.fr, "1230pm", new Date(2012,7,10), (result) => {
117
- expect(result.index).toBe(0);
118
- expect(result.text).toBe('1230pm');
129
+ expect(result.index).toBe(0)
130
+ expect(result.text).toBe('1230pm')
119
131
 
120
- expect(result.start).not.toBeNull();
121
- expect(result.start.get('hour')).toBe(12);
122
- expect(result.start.get('minute')).toBe(30);
123
- expect(result.start.isCertain('second')).toBe(false);
124
- expect(result.start.isCertain('millisecond')).toBe(false);
132
+ expect(result.start).not.toBeNull()
133
+ expect(result.start.get('hour')).toBe(12)
134
+ expect(result.start.get('minute')).toBe(30)
135
+ expect(result.start.isCertain('second')).toBe(false)
136
+ expect(result.start.isCertain('millisecond')).toBe(false)
125
137
 
126
138
 
127
- expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 30));
139
+ var resultDate = result.start.date();
140
+ var expectDate = new Date(2012, 7, 10, 12, 30);
141
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
128
142
  });
129
-
143
+
130
144
  testSingleCase(chrono.fr, "5:16p", new Date(2012,7,10), (result) => {
131
- expect(result.index).toBe(0);
132
- expect(result.text).toBe('5:16p');
145
+ expect(result.index).toBe(0)
146
+ expect(result.text).toBe('5:16p')
133
147
 
134
- expect(result.start).not.toBeNull();
135
- expect(result.start.get('hour')).toBe(17);
136
- expect(result.start.get('minute')).toBe(16);
137
- expect(result.start.isCertain('second')).toBe(false);
138
- expect(result.start.isCertain('millisecond')).toBe(false);
148
+ expect(result.start).not.toBeNull()
149
+ expect(result.start.get('hour')).toBe(17)
150
+ expect(result.start.get('minute')).toBe(16)
151
+ expect(result.start.isCertain('second')).toBe(false)
152
+ expect(result.start.isCertain('millisecond')).toBe(false)
139
153
 
140
154
 
141
- expect(result.start).toBeDate(new Date(2012, 7, 10, 17, 16));
155
+ var resultDate = result.start.date();
156
+ var expectDate = new Date(2012, 7, 10, 17, 16);
157
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
142
158
  });
143
159
 
144
160
  testSingleCase(chrono.fr, "5h16p", new Date(2012,7,10), (result) => {
145
- expect(result.index).toBe(0);
146
- expect(result.text).toBe('5h16p');
161
+ expect(result.index).toBe(0)
162
+ expect(result.text).toBe('5h16p')
147
163
 
148
- expect(result.start).not.toBeNull();
149
- expect(result.start.get('hour')).toBe(17);
150
- expect(result.start.get('minute')).toBe(16);
151
- expect(result.start.isCertain('second')).toBe(false);
152
- expect(result.start.isCertain('millisecond')).toBe(false);
164
+ expect(result.start).not.toBeNull()
165
+ expect(result.start.get('hour')).toBe(17)
166
+ expect(result.start.get('minute')).toBe(16)
167
+ expect(result.start.isCertain('second')).toBe(false)
168
+ expect(result.start.isCertain('millisecond')).toBe(false)
153
169
 
154
170
 
155
- expect(result.start).toBeDate(new Date(2012, 7, 10, 17, 16));
171
+ var resultDate = result.start.date();
172
+ var expectDate = new Date(2012, 7, 10, 17, 16);
173
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
156
174
  });
157
175
 
158
176
  testSingleCase(chrono.fr, "5h16mp", new Date(2012,7,10), (result) => {
159
- expect(result.index).toBe(0);
160
- expect(result.text).toBe('5h16mp');
177
+ expect(result.index).toBe(0)
178
+ expect(result.text).toBe('5h16mp')
161
179
 
162
- expect(result.start).not.toBeNull();
163
- expect(result.start.get('hour')).toBe(17);
164
- expect(result.start.get('minute')).toBe(16);
165
- expect(result.start.isCertain('second')).toBe(false);
166
- expect(result.start.isCertain('millisecond')).toBe(false);
180
+ expect(result.start).not.toBeNull()
181
+ expect(result.start.get('hour')).toBe(17)
182
+ expect(result.start.get('minute')).toBe(16)
183
+ expect(result.start.isCertain('second')).toBe(false)
184
+ expect(result.start.isCertain('millisecond')).toBe(false)
167
185
 
168
186
 
169
- expect(result.start).toBeDate(new Date(2012, 7, 10, 17, 16));
187
+ var resultDate = result.start.date();
188
+ var expectDate = new Date(2012, 7, 10, 17, 16);
189
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
170
190
  });
171
191
 
172
192
  testSingleCase(chrono.fr, "5:16 p.m.", new Date(2012,7,10), (result) => {
173
- expect(result.index).toBe(0);
174
- expect(result.text).toBe('5:16 p.m.');
193
+ expect(result.index).toBe(0)
194
+ expect(result.text).toBe('5:16 p.m.')
175
195
 
176
- expect(result.start).not.toBeNull();
177
- expect(result.start.get('hour')).toBe(17);
178
- expect(result.start.get('minute')).toBe(16);
179
- expect(result.start.isCertain('second')).toBe(false);
180
- expect(result.start.isCertain('millisecond')).toBe(false);
196
+ expect(result.start).not.toBeNull()
197
+ expect(result.start.get('hour')).toBe(17)
198
+ expect(result.start.get('minute')).toBe(16)
199
+ expect(result.start.isCertain('second')).toBe(false)
200
+ expect(result.start.isCertain('millisecond')).toBe(false)
181
201
 
182
202
 
183
- expect(result.start).toBeDate(new Date(2012, 7, 10, 17, 16));
203
+ var resultDate = result.start.date();
204
+ var expectDate = new Date(2012, 7, 10, 17, 16);
205
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
184
206
  });
185
207
 
186
208
  testSingleCase(chrono.fr, "5h16 p.m.", new Date(2012,7,10), (result) => {
187
- expect(result.index).toBe(0);
188
- expect(result.text).toBe('5h16 p.m.');
209
+ expect(result.index).toBe(0)
210
+ expect(result.text).toBe('5h16 p.m.')
189
211
 
190
- expect(result.start).not.toBeNull();
191
- expect(result.start.get('hour')).toBe(17);
192
- expect(result.start.get('minute')).toBe(16);
193
- expect(result.start.isCertain('second')).toBe(false);
194
- expect(result.start.isCertain('millisecond')).toBe(false);
212
+ expect(result.start).not.toBeNull()
213
+ expect(result.start.get('hour')).toBe(17)
214
+ expect(result.start.get('minute')).toBe(16)
215
+ expect(result.start.isCertain('second')).toBe(false)
216
+ expect(result.start.isCertain('millisecond')).toBe(false)
195
217
 
196
218
 
197
- expect(result.start).toBeDate(new Date(2012, 7, 10, 17, 16));
219
+ var resultDate = result.start.date();
220
+ var expectDate = new Date(2012, 7, 10, 17, 16);
221
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
198
222
  });
199
223
 
200
224
  testSingleCase(chrono.fr, "RDV à 6.13 AM", new Date(2012,7,10), (result) => {
201
- expect(result.index).toBe(4);
202
- expect(result.text).toBe('à 6.13 AM');
225
+ expect(result.index).toBe(4)
226
+ expect(result.text).toBe('à 6.13 AM')
203
227
 
204
- expect(result.start).not.toBeNull();
205
- expect(result.start.get('hour')).toBe(6);
206
- expect(result.start.get('minute')).toBe(13);
228
+ expect(result.start).not.toBeNull()
229
+ expect(result.start.get('hour')).toBe(6)
230
+ expect(result.start.get('minute')).toBe(13)
207
231
 
208
- expect(result.start).toBeDate(new Date(2012, 7, 10, 6, 13));
232
+ var resultDate = result.start.date();
233
+ var expectDate = new Date(2012, 7, 10, 6, 13);
234
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
209
235
  });
210
236
 
211
237
 
212
238
  testSingleCase(chrono.fr, "13h-15h", new Date(2012,7,10), (result) => {
213
- expect(result.index).toBe(0);
214
- expect(result.text).toBe('13h-15h');
239
+ expect(result.index).toBe(0)
240
+ expect(result.text).toBe('13h-15h')
215
241
 
216
- expect(result.start).not.toBeNull();
217
- expect(result.start.get('hour')).toBe(13);
218
- expect(result.start.get('minute')).toBe(0);
219
- expect(result.start.get('meridiem')).toBe(1);
242
+ expect(result.start).not.toBeNull()
243
+ expect(result.start.get('hour')).toBe(13)
244
+ expect(result.start.get('minute')).toBe(0)
245
+ expect(result.start.get('meridiem')).toBe(1)
220
246
 
221
- expect(result.start).toBeDate(new Date(2012, 7, 10, 13, 0));
247
+ var resultDate = result.start.date();
248
+ var expectDate = new Date(2012, 7, 10, 13, 0);
249
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
222
250
 
223
- expect(result.end).not.toBeNull();
224
- expect(result.end.get('hour')).toBe(15);
225
- expect(result.end.get('minute')).toBe(0);
226
- expect(result.end.get('meridiem')).toBe(1);
251
+ expect(result.end).not.toBeNull()
252
+ expect(result.end.get('hour')).toBe(15)
253
+ expect(result.end.get('minute')).toBe(0)
254
+ expect(result.end.get('meridiem')).toBe(1)
227
255
 
228
- expect(result.end).toBeDate(new Date(2012, 7, 10, 15, 0));
256
+ var resultDate = result.end.date();
257
+ var expectDate = new Date(2012, 7, 10, 15, 0);
258
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
229
259
  });
230
260
 
231
261
  testSingleCase(chrono.fr, "13-15h", new Date(2012,7,10), (result) => {
232
- expect(result.index).toBe(0);
233
- expect(result.text).toBe('13-15h');
262
+ expect(result.index).toBe(0)
263
+ expect(result.text).toBe('13-15h')
234
264
 
235
- expect(result.start).not.toBeNull();
236
- expect(result.start.get('hour')).toBe(13);
237
- expect(result.start.get('minute')).toBe(0);
238
- expect(result.start.get('meridiem')).toBe(1);
265
+ expect(result.start).not.toBeNull()
266
+ expect(result.start.get('hour')).toBe(13)
267
+ expect(result.start.get('minute')).toBe(0)
268
+ expect(result.start.get('meridiem')).toBe(1)
239
269
 
240
- expect(result.start).toBeDate(new Date(2012, 7, 10, 13, 0));
270
+ var resultDate = result.start.date();
271
+ var expectDate = new Date(2012, 7, 10, 13, 0);
272
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
241
273
 
242
- expect(result.end).not.toBeNull();
243
- expect(result.end.get('hour')).toBe(15);
244
- expect(result.end.get('minute')).toBe(0);
245
- expect(result.end.get('meridiem')).toBe(1);
274
+ expect(result.end).not.toBeNull()
275
+ expect(result.end.get('hour')).toBe(15)
276
+ expect(result.end.get('minute')).toBe(0)
277
+ expect(result.end.get('meridiem')).toBe(1)
246
278
 
247
- expect(result.end).toBeDate(new Date(2012, 7, 10, 15, 0));
279
+ var resultDate = result.end.date();
280
+ var expectDate = new Date(2012, 7, 10, 15, 0);
281
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
248
282
  });
249
283
 
250
284
  testSingleCase(chrono.fr, "1-3pm", new Date(2012,7,10), (result) => {
251
- expect(result.index).toBe(0);
252
- expect(result.text).toBe('1-3pm');
285
+ expect(result.index).toBe(0)
286
+ expect(result.text).toBe('1-3pm')
253
287
 
254
- expect(result.start).not.toBeNull();
255
- expect(result.start.get('hour')).toBe(13);
256
- expect(result.start.get('minute')).toBe(0);
257
- expect(result.start.get('meridiem')).toBe(1);
288
+ expect(result.start).not.toBeNull()
289
+ expect(result.start.get('hour')).toBe(13)
290
+ expect(result.start.get('minute')).toBe(0)
291
+ expect(result.start.get('meridiem')).toBe(1)
258
292
 
259
- expect(result.start).toBeDate(new Date(2012, 7, 10, 13, 0));
293
+ var resultDate = result.start.date();
294
+ var expectDate = new Date(2012, 7, 10, 13, 0);
295
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
260
296
 
261
- expect(result.end).not.toBeNull();
262
- expect(result.end.get('hour')).toBe(15);
263
- expect(result.end.get('minute')).toBe(0);
264
- expect(result.end.get('meridiem')).toBe(1);
297
+ expect(result.end).not.toBeNull()
298
+ expect(result.end.get('hour')).toBe(15)
299
+ expect(result.end.get('minute')).toBe(0)
300
+ expect(result.end.get('meridiem')).toBe(1)
265
301
 
266
- expect(result.end).toBeDate(new Date(2012, 7, 10, 15, 0));
302
+ var resultDate = result.end.date();
303
+ var expectDate = new Date(2012, 7, 10, 15, 0);
304
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
267
305
  });
268
306
 
269
307
 
270
308
  testSingleCase(chrono.fr, "11pm-2", new Date(2012,7,10), (result) => {
271
- expect(result.index).toBe(0);
272
- expect(result.text).toBe('11pm-2');
309
+ expect(result.index).toBe(0)
310
+ expect(result.text).toBe('11pm-2')
273
311
 
274
- expect(result.start).not.toBeNull();
275
- expect(result.start.get('hour')).toBe(23);
276
- expect(result.start.get('minute')).toBe(0);
277
- expect(result.start.get('meridiem')).toBe(1);
312
+ expect(result.start).not.toBeNull()
313
+ expect(result.start.get('hour')).toBe(23)
314
+ expect(result.start.get('minute')).toBe(0)
315
+ expect(result.start.get('meridiem')).toBe(1)
278
316
 
279
- expect(result.start).toBeDate(new Date(2012, 7, 10, 23, 0));
317
+ var resultDate = result.start.date();
318
+ var expectDate = new Date(2012, 7, 10, 23, 0);
319
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
280
320
 
281
- expect(result.end).not.toBeNull();
282
- expect(result.end.get('hour')).toBe(2);
283
- expect(result.end.get('minute')).toBe(0);
284
- expect(result.end.get('meridiem')).toBe(0);
321
+ expect(result.end).not.toBeNull()
322
+ expect(result.end.get('hour')).toBe(2)
323
+ expect(result.end.get('minute')).toBe(0)
324
+ expect(result.end.get('meridiem')).toBe(0)
285
325
 
286
- expect(result.end).toBeDate(new Date(2012, 7, 11, 2, 0));
326
+ var resultDate = result.end.date();
327
+ var expectDate = new Date(2012, 7, 11, 2, 0);
328
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
287
329
  });
288
330
  });
289
331
 
290
332
  test("Test - Range Expression", function() {
291
333
 
292
334
  testSingleCase(chrono.fr, "8:10 - 12.32", new Date(2012,7,10), (result) => {
293
- expect(result.index).toBe(0);
294
- expect(result.text).toBe('8:10 - 12.32');
295
-
296
- expect(result.start).not.toBeNull();
297
- expect(result.start.get('hour')).toBe(8);
298
- expect(result.start.get('minute')).toBe(10);
299
-
300
- expect(result.start.isCertain('day')).toBe(false);
301
- expect(result.start.isCertain('month')).toBe(false);
302
- expect(result.start.isCertain('year')).toBe(false);
303
- expect(result.start.isCertain('hour')).toBe(true);
304
- expect(result.start.isCertain('minute')).toBe(true);
305
- expect(result.start.isCertain('second')).toBe(false);
306
- expect(result.start.isCertain('millisecond')).toBe(false);
307
-
308
- expect(result.start).toBeDate(new Date(2012, 7, 10, 8, 10));
309
-
310
- expect(result.end).not.toBeNull();
311
- expect(result.end.get('hour')).toBe(12);
312
- expect(result.end.get('minute')).toBe(32);
313
-
314
- expect(result.end.isCertain('day')).toBe(false);
315
- expect(result.end.isCertain('month')).toBe(false);
316
- expect(result.end.isCertain('year')).toBe(false);
317
- expect(result.end.isCertain('hour')).toBe(true);
318
- expect(result.end.isCertain('minute')).toBe(true);
319
- expect(result.end.isCertain('second')).toBe(false);
320
- expect(result.end.isCertain('millisecond')).toBe(false);
321
-
322
- expect(result.end).toBeDate(new Date(2012, 7, 10, 12, 32));
335
+ expect(result.index).toBe(0)
336
+ expect(result.text).toBe('8:10 - 12.32')
337
+
338
+ expect(result.start).not.toBeNull()
339
+ expect(result.start.get('hour')).toBe(8)
340
+ expect(result.start.get('minute')).toBe(10)
341
+
342
+ expect(result.start.isCertain('day')).toBe(false)
343
+ expect(result.start.isCertain('month')).toBe(false)
344
+ expect(result.start.isCertain('year')).toBe(false)
345
+ expect(result.start.isCertain('hour')).toBe(true)
346
+ expect(result.start.isCertain('minute')).toBe(true)
347
+ expect(result.start.isCertain('second')).toBe(false)
348
+ expect(result.start.isCertain('millisecond')).toBe(false)
349
+
350
+ var resultDate = result.start.date();
351
+ var expectDate = new Date(2012, 7, 10, 8, 10);
352
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
353
+
354
+ expect(result.end).not.toBeNull()
355
+ expect(result.end.get('hour')).toBe(12)
356
+ expect(result.end.get('minute')).toBe(32)
357
+
358
+ expect(result.end.isCertain('day')).toBe(false)
359
+ expect(result.end.isCertain('month')).toBe(false)
360
+ expect(result.end.isCertain('year')).toBe(false)
361
+ expect(result.end.isCertain('hour')).toBe(true)
362
+ expect(result.end.isCertain('minute')).toBe(true)
363
+ expect(result.end.isCertain('second')).toBe(false)
364
+ expect(result.end.isCertain('millisecond')).toBe(false)
365
+
366
+ var resultDate = result.end.date();
367
+ var expectDate = new Date(2012, 7, 10, 12, 32);
368
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
323
369
  });
324
370
 
325
371
  testSingleCase(chrono.fr, "8:10 - 12h32", new Date(2012,7,10), (result) => {
326
- expect(result.index).toBe(0);
327
- expect(result.text).toBe('8:10 - 12h32');
328
-
329
- expect(result.start).not.toBeNull();
330
- expect(result.start.get('hour')).toBe(8);
331
- expect(result.start.get('minute')).toBe(10);
332
-
333
- expect(result.start.isCertain('day')).toBe(false);
334
- expect(result.start.isCertain('month')).toBe(false);
335
- expect(result.start.isCertain('year')).toBe(false);
336
- expect(result.start.isCertain('hour')).toBe(true);
337
- expect(result.start.isCertain('minute')).toBe(true);
338
- expect(result.start.isCertain('second')).toBe(false);
339
- expect(result.start.isCertain('millisecond')).toBe(false);
340
-
341
- expect(result.start).toBeDate(new Date(2012, 7, 10, 8, 10));
342
-
343
- expect(result.end).not.toBeNull();
344
- expect(result.end.get('hour')).toBe(12);
345
- expect(result.end.get('minute')).toBe(32);
346
-
347
- expect(result.end.isCertain('day')).toBe(false);
348
- expect(result.end.isCertain('month')).toBe(false);
349
- expect(result.end.isCertain('year')).toBe(false);
350
- expect(result.end.isCertain('hour')).toBe(true);
351
- expect(result.end.isCertain('minute')).toBe(true);
352
- expect(result.end.isCertain('second')).toBe(false);
353
- expect(result.end.isCertain('millisecond')).toBe(false);
354
-
355
- expect(result.end).toBeDate(new Date(2012, 7, 10, 12, 32));
372
+ expect(result.index).toBe(0)
373
+ expect(result.text).toBe('8:10 - 12h32')
374
+
375
+ expect(result.start).not.toBeNull()
376
+ expect(result.start.get('hour')).toBe(8)
377
+ expect(result.start.get('minute')).toBe(10)
378
+
379
+ expect(result.start.isCertain('day')).toBe(false)
380
+ expect(result.start.isCertain('month')).toBe(false)
381
+ expect(result.start.isCertain('year')).toBe(false)
382
+ expect(result.start.isCertain('hour')).toBe(true)
383
+ expect(result.start.isCertain('minute')).toBe(true)
384
+ expect(result.start.isCertain('second')).toBe(false)
385
+ expect(result.start.isCertain('millisecond')).toBe(false)
386
+
387
+ var resultDate = result.start.date();
388
+ var expectDate = new Date(2012, 7, 10, 8, 10);
389
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
390
+
391
+ expect(result.end).not.toBeNull()
392
+ expect(result.end.get('hour')).toBe(12)
393
+ expect(result.end.get('minute')).toBe(32)
394
+
395
+ expect(result.end.isCertain('day')).toBe(false)
396
+ expect(result.end.isCertain('month')).toBe(false)
397
+ expect(result.end.isCertain('year')).toBe(false)
398
+ expect(result.end.isCertain('hour')).toBe(true)
399
+ expect(result.end.isCertain('minute')).toBe(true)
400
+ expect(result.end.isCertain('second')).toBe(false)
401
+ expect(result.end.isCertain('millisecond')).toBe(false)
402
+
403
+ var resultDate = result.end.date();
404
+ var expectDate = new Date(2012, 7, 10, 12, 32);
405
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
356
406
  });
357
407
 
358
408
 
359
409
  testSingleCase(chrono.fr, " from 6:30pm to 11:00pm ", new Date(2012,7,10), (result) => {
360
- expect(result.index).toBe(1);
361
- expect(result.text).toBe('from 6:30pm to 11:00pm');
410
+ expect(result.index).toBe(1)
411
+ expect(result.text).toBe('from 6:30pm to 11:00pm')
362
412
 
363
- expect(result.start).not.toBeNull();
364
- expect(result.start.get('hour')).toBe(18);
365
- expect(result.start.get('minute')).toBe(30);
366
- expect(result.start.get('meridiem')).toBe(1);
413
+ expect(result.start).not.toBeNull()
414
+ expect(result.start.get('hour')).toBe(18)
415
+ expect(result.start.get('minute')).toBe(30)
416
+ expect(result.start.get('meridiem')).toBe(1)
367
417
 
368
- expect(result.start).toBeDate(new Date(2012, 7, 10, 18, 30));
418
+ var resultDate = result.start.date();
419
+ var expectDate = new Date(2012, 7, 10, 18, 30);
420
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
369
421
 
370
- expect(result.end).not.toBeNull();
371
- expect(result.end.get('hour')).toBe(23);
372
- expect(result.end.get('minute')).toBe(0);
373
- expect(result.end.get('meridiem')).toBe(1);
422
+ expect(result.end).not.toBeNull()
423
+ expect(result.end.get('hour')).toBe(23)
424
+ expect(result.end.get('minute')).toBe(0)
425
+ expect(result.end.get('meridiem')).toBe(1)
374
426
 
375
- expect(result.end).toBeDate(new Date(2012, 7, 10, 23, 0));
427
+ var resultDate = result.end.date();
428
+ var expectDate = new Date(2012, 7, 10, 23, 0);
429
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
376
430
  });
377
431
 
378
432
  });
379
433
 
380
434
  test("Test - Impossible", function() {
381
435
 
382
- testUnexpectedResult(chrono.fr, '8:62', new Date(2012,7,10));
436
+ var text = "8:62";
437
+ var results = chrono.fr.parse(text, new Date(2012,7,10));
438
+ expect(results.length).toBe(0)
383
439
 
384
- testUnexpectedResult(chrono.fr, '25:12', new Date(2012,7,10));
440
+ var text = "25:12";
441
+ var results = chrono.fr.parse(text, new Date(2012,7,10));
442
+ expect(results.length).toBe(0)
385
443
 
386
- testUnexpectedResult(chrono.fr, '12h12:99s', new Date(2012,7,10));
444
+ var text = "12h12:99s";
445
+ var results = chrono.fr.parse(text, new Date(2012,7,10));
446
+ expect(results.length).toBe(0)
387
447
 
388
448
 
389
- testUnexpectedResult(chrono.fr, '13.12 PM', new Date(2012,7,10))
449
+ var text = "13.12 PM";
450
+ var results = chrono.fr.parse(text, new Date(2012,7,10));
451
+ expect(results.length).toBe(0)
390
452
  });
391
453
 
392
454
  test("Test - Date + Time Expression", function() {
393
455
 
394
456
  testSingleCase(chrono.fr, "Quelque chose se passe le 2014-04-18 à 3h00", new Date(2012,7,10), (result) => {
395
- expect(result.index).toBe(26);
396
- expect(result.text).toBe('2014-04-18 à 3h00');
397
-
398
- expect(result.start.get('year')).toBe(2014);
399
- expect(result.start.get('month')).toBe(4);
400
- expect(result.start.get('day')).toBe(18);
401
- expect(result.start.get('hour')).toBe(3);
402
- expect(result.start.get('minute')).toBe(0);
403
- expect(result.start.get('second')).toBe(0);
404
- expect(result.start.get('millisecond')).toBe(0);
405
- expect(result.start.isCertain('millisecond')).toBe(false);
406
-
407
- expect(result.start).toBeDate(new Date(2014, 4-1, 18, 3, 0));
457
+ expect(result.index).toBe(26)
458
+ expect(result.text).toBe('2014-04-18 à 3h00')
459
+
460
+ expect(result.start.get('year')).toBe(2014)
461
+ expect(result.start.get('month')).toBe(4)
462
+ expect(result.start.get('day')).toBe(18)
463
+ expect(result.start.get('hour')).toBe(3)
464
+ expect(result.start.get('minute')).toBe(0)
465
+ expect(result.start.get('second')).toBe(0)
466
+ expect(result.start.get('millisecond')).toBe(0)
467
+ expect(result.start.isCertain('millisecond')).toBe(false)
468
+
469
+ var resultDate = result.start.date();
470
+ var expectDate = new Date(2014, 4-1, 18, 3, 0);
471
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
408
472
  });
409
473
 
410
474
  testSingleCase(chrono.fr, "Quelque chose se passe le 10 Août 2012 à 10:12:59", new Date(2012,7,10), (result) => {
411
- expect(result.index).toBe(26);
412
- expect(result.text).toBe('10 Août 2012 à 10:12:59');
413
-
414
- expect(result.start.get('year')).toBe(2012);
415
- expect(result.start.get('month')).toBe(8);
416
- expect(result.start.get('day')).toBe(10);
417
- expect(result.start.get('hour')).toBe(10);
418
- expect(result.start.get('minute')).toBe(12);
419
- expect(result.start.get('second')).toBe(59);
420
- expect(result.start.get('millisecond')).toBe(0);
421
- expect(result.start.isCertain('millisecond')).toBe(false);
422
-
423
- expect(result.start).toBeDate(new Date(2012, 8-1, 10, 10, 12, 59));
475
+ expect(result.index).toBe(26)
476
+ expect(result.text).toBe('10 Août 2012 à 10:12:59')
477
+
478
+ expect(result.start.get('year')).toBe(2012)
479
+ expect(result.start.get('month')).toBe(8)
480
+ expect(result.start.get('day')).toBe(10)
481
+ expect(result.start.get('hour')).toBe(10)
482
+ expect(result.start.get('minute')).toBe(12)
483
+ expect(result.start.get('second')).toBe(59)
484
+ expect(result.start.get('millisecond')).toBe(0)
485
+ expect(result.start.isCertain('millisecond')).toBe(false)
486
+
487
+ var resultDate = result.start.date();
488
+ var expectDate = new Date(2012, 8-1, 10, 10, 12, 59);
489
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
424
490
  });
425
491
 
426
492
  testSingleCase(chrono.fr, "Quelque chose se passe le 15juin 2016 20h", new Date(2016,6,10), (result) => {
427
- expect(result.index).toBe(26);
428
- expect(result.text).toBe('15juin 2016 20h');
429
-
430
- expect(result.start.get('year')).toBe(2016);
431
- expect(result.start.get('month')).toBe(6);
432
- expect(result.start.get('day')).toBe(15);
433
- expect(result.start.get('hour')).toBe(20);
434
- expect(result.start.get('minute')).toBe(0);
435
- expect(result.start.get('second')).toBe(0);
436
- expect(result.start.get('millisecond')).toBe(0);
437
- expect(result.start.isCertain('millisecond')).toBe(false);
438
-
439
- expect(result.start).toBeDate(new Date(2016, 6-1, 15, 20, 0, 0));
493
+ expect(result.index).toBe(26)
494
+ expect(result.text).toBe('15juin 2016 20h')
495
+
496
+ expect(result.start.get('year')).toBe(2016)
497
+ expect(result.start.get('month')).toBe(6)
498
+ expect(result.start.get('day')).toBe(15)
499
+ expect(result.start.get('hour')).toBe(20)
500
+ expect(result.start.get('minute')).toBe(0)
501
+ expect(result.start.get('second')).toBe(0)
502
+ expect(result.start.get('millisecond')).toBe(0)
503
+ expect(result.start.isCertain('millisecond')).toBe(false)
504
+
505
+ var resultDate = result.start.date();
506
+ var expectDate = new Date(2016, 6-1, 15, 20, 0, 0);
507
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
440
508
  });
441
509
 
442
510
  testSingleCase(chrono.fr, "Quelque chose se passe le 2014-04-18 7:00 - 8h00 ...", new Date(2012,7,10), (result) => {
443
- expect(result.index).toBe(26);
444
- expect(result.text).toBe('2014-04-18 7:00 - 8h00');
445
-
446
- expect(result.start.get('year')).toBe(2014);
447
- expect(result.start.get('month')).toBe(4);
448
- expect(result.start.get('day')).toBe(18);
449
- expect(result.start.get('hour')).toBe(7);
450
- expect(result.start.get('minute')).toBe(0);
451
- expect(result.start.get('second')).toBe(0);
452
- expect(result.start.get('millisecond')).toBe(0);
453
- expect(result.start.isCertain('meridiem')).toBe(false);
454
- expect(result.start.isCertain('millisecond')).toBe(false);
455
-
456
- expect(result.start).toBeDate(new Date(2014, 4-1, 18, 7, 0));
457
-
458
-
459
- expect(result.end.get('year')).toBe(2014);
460
- expect(result.end.get('month')).toBe(4);
461
- expect(result.end.get('day')).toBe(18);
462
- expect(result.end.get('hour')).toBe(8);
463
- expect(result.end.get('minute')).toBe(0);
464
- expect(result.end.get('second')).toBe(0);
465
- expect(result.end.get('millisecond')).toBe(0);
466
- expect(result.end.isCertain('meridiem')).toBe(false);
467
- expect(result.end.isCertain('millisecond')).toBe(false);
468
-
469
- expect(result.end).toBeDate(new Date(2014, 4-1, 18, 8, 0));
511
+ expect(result.index).toBe(26)
512
+ expect(result.text).toBe('2014-04-18 7:00 - 8h00')
513
+
514
+ expect(result.start.get('year')).toBe(2014)
515
+ expect(result.start.get('month')).toBe(4)
516
+ expect(result.start.get('day')).toBe(18)
517
+ expect(result.start.get('hour')).toBe(7)
518
+ expect(result.start.get('minute')).toBe(0)
519
+ expect(result.start.get('second')).toBe(0)
520
+ expect(result.start.get('millisecond')).toBe(0)
521
+ expect(result.start.isCertain('meridiem')).toBe(false)
522
+ expect(result.start.isCertain('millisecond')).toBe(false)
523
+
524
+ var resultDate = result.start.date();
525
+ var expectDate = new Date(2014, 4-1, 18, 7, 0);
526
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
527
+
528
+
529
+ expect(result.end.get('year')).toBe(2014)
530
+ expect(result.end.get('month')).toBe(4)
531
+ expect(result.end.get('day')).toBe(18)
532
+ expect(result.end.get('hour')).toBe(8)
533
+ expect(result.end.get('minute')).toBe(0)
534
+ expect(result.end.get('second')).toBe(0)
535
+ expect(result.end.get('millisecond')).toBe(0)
536
+ expect(result.end.isCertain('meridiem')).toBe(false)
537
+ expect(result.end.isCertain('millisecond')).toBe(false)
538
+
539
+ var resultDate = result.end.date();
540
+ var expectDate = new Date(2014, 4-1, 18, 8, 0);
541
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
470
542
  });
471
543
 
472
544
 
473
545
 
474
546
  testSingleCase(chrono.fr, "Quelque chose se passe le 2014-04-18 de 7:00 à 20:00 ...", new Date(2012,7,10), (result) => {
475
- expect(result.index).toBe(26);
476
- expect(result.text).toBe('2014-04-18 de 7:00 à 20:00');
477
-
478
- expect(result.start.get('year')).toBe(2014);
479
- expect(result.start.get('month')).toBe(4);
480
- expect(result.start.get('day')).toBe(18);
481
- expect(result.start.get('hour')).toBe(7);
482
- expect(result.start.get('minute')).toBe(0);
483
- expect(result.start.get('second')).toBe(0);
484
- expect(result.start.get('millisecond')).toBe(0);
485
- expect(result.start.isCertain('meridiem')).toBe(false);
486
- expect(result.start.isCertain('millisecond')).toBe(false);
487
-
488
- expect(result.start).toBeDate(new Date(2014, 4-1, 18, 7, 0));
489
-
490
-
491
- expect(result.end.get('year')).toBe(2014);
492
- expect(result.end.get('month')).toBe(4);
493
- expect(result.end.get('day')).toBe(18);
494
- expect(result.end.get('hour')).toBe(20);
495
- expect(result.end.get('minute')).toBe(0);
496
- expect(result.end.get('second')).toBe(0);
497
- expect(result.end.get('millisecond')).toBe(0);
498
- expect(result.start.isCertain('meridiem')).toBe(false);
499
- expect(result.end.isCertain('millisecond')).toBe(false);
500
-
501
- expect(result.end).toBeDate(new Date(2014, 4-1, 18, 20, 0));
547
+ expect(result.index).toBe(26)
548
+ expect(result.text).toBe('2014-04-18 de 7:00 à 20:00')
549
+
550
+ expect(result.start.get('year')).toBe(2014)
551
+ expect(result.start.get('month')).toBe(4)
552
+ expect(result.start.get('day')).toBe(18)
553
+ expect(result.start.get('hour')).toBe(7)
554
+ expect(result.start.get('minute')).toBe(0)
555
+ expect(result.start.get('second')).toBe(0)
556
+ expect(result.start.get('millisecond')).toBe(0)
557
+ expect(result.start.isCertain('meridiem')).toBe(false)
558
+ expect(result.start.isCertain('millisecond')).toBe(false)
559
+
560
+ var resultDate = result.start.date();
561
+ var expectDate = new Date(2014, 4-1, 18, 7, 0);
562
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
563
+
564
+
565
+ expect(result.end.get('year')).toBe(2014)
566
+ expect(result.end.get('month')).toBe(4)
567
+ expect(result.end.get('day')).toBe(18)
568
+ expect(result.end.get('hour')).toBe(20)
569
+ expect(result.end.get('minute')).toBe(0)
570
+ expect(result.end.get('second')).toBe(0)
571
+ expect(result.end.get('millisecond')).toBe(0)
572
+ expect(result.start.isCertain('meridiem')).toBe(false)
573
+ expect(result.end.isCertain('millisecond')).toBe(false)
574
+
575
+ var resultDate = result.end.date();
576
+ var expectDate = new Date(2014, 4-1, 18, 20, 0);
577
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
502
578
  });
503
- });
579
+ })
504
580
 
505
581
 
506
582
  test("Test - Time Expression's Meridiem imply", function() {
507
583
 
508
584
  testSingleCase(chrono.fr, "1pm-3", new Date(2012,7,10), (result) => {
509
- expect(result.index).toBe(0);
510
- expect(result.text).toBe('1pm-3');
511
-
512
- expect(result.start.get('year')).toBe(2012);
513
- expect(result.start.get('month')).toBe(8);
514
- expect(result.start.get('day')).toBe(10);
515
- expect(result.start.get('hour')).toBe(13);
516
- expect(result.start.get('minute')).toBe(0);
517
- expect(result.start.get('second')).toBe(0);
518
- expect(result.start.get('millisecond')).toBe(0);
519
- expect(result.start.get('meridiem')).toBe(1);
520
- expect(result.start.isCertain('meridiem')).toBe(true);
521
-
522
- expect(result.end.get('year')).toBe(2012);
523
- expect(result.end.get('month')).toBe(8);
524
- expect(result.end.get('day')).toBe(11);
525
- expect(result.end.get('hour')).toBe(3);
526
- expect(result.end.get('minute')).toBe(0);
527
- expect(result.end.get('second')).toBe(0);
528
- expect(result.end.get('millisecond')).toBe(0);
585
+ expect(result.index).toBe(0)
586
+ expect(result.text).toBe('1pm-3')
587
+
588
+ expect(result.start.get('year')).toBe(2012)
589
+ expect(result.start.get('month')).toBe(8)
590
+ expect(result.start.get('day')).toBe(10)
591
+ expect(result.start.get('hour')).toBe(13)
592
+ expect(result.start.get('minute')).toBe(0)
593
+ expect(result.start.get('second')).toBe(0)
594
+ expect(result.start.get('millisecond')).toBe(0)
595
+ expect(result.start.get('meridiem')).toBe(1)
596
+ expect(result.start.isCertain('meridiem')).toBe(true)
597
+
598
+ expect(result.end.get('year')).toBe(2012)
599
+ expect(result.end.get('month')).toBe(8)
600
+ expect(result.end.get('day')).toBe(11)
601
+ expect(result.end.get('hour')).toBe(3)
602
+ expect(result.end.get('minute')).toBe(0)
603
+ expect(result.end.get('second')).toBe(0)
604
+ expect(result.end.get('millisecond')).toBe(0)
529
605
  expect(result.end.isCertain('meridiem')).toBe(false)
530
606
  });
531
607
 
532
608
  testSingleCase(chrono.fr, "18-04-2014 1pm-3", new Date(2012,7,10), (result) => {
533
- expect(result.index).toBe(0);
534
- expect(result.text).toBe('18-04-2014 1pm-3');
535
-
536
- expect(result.start.get('year')).toBe(2014);
537
- expect(result.start.get('month')).toBe(4);
538
- expect(result.start.get('day')).toBe(18);
539
- expect(result.start.get('hour')).toBe(13);
540
- expect(result.start.get('minute')).toBe(0);
541
- expect(result.start.get('second')).toBe(0);
542
- expect(result.start.get('millisecond')).toBe(0);
543
- expect(result.start.get('meridiem')).toBe(1);
544
- expect(result.start.isCertain('meridiem')).toBe(true);
545
-
546
- expect(result.end.get('year')).toBe(2014);
547
- expect(result.end.get('month')).toBe(4);
548
- expect(result.end.get('day')).toBe(19);
549
- expect(result.end.get('hour')).toBe(3);
550
- expect(result.end.get('minute')).toBe(0);
551
- expect(result.end.get('second')).toBe(0);
552
- expect(result.end.get('millisecond')).toBe(0);
609
+ expect(result.index).toBe(0)
610
+ expect(result.text).toBe('18-04-2014 1pm-3')
611
+
612
+ expect(result.start.get('year')).toBe(2014)
613
+ expect(result.start.get('month')).toBe(4)
614
+ expect(result.start.get('day')).toBe(18)
615
+ expect(result.start.get('hour')).toBe(13)
616
+ expect(result.start.get('minute')).toBe(0)
617
+ expect(result.start.get('second')).toBe(0)
618
+ expect(result.start.get('millisecond')).toBe(0)
619
+ expect(result.start.get('meridiem')).toBe(1)
620
+ expect(result.start.isCertain('meridiem')).toBe(true)
621
+
622
+ expect(result.end.get('year')).toBe(2014)
623
+ expect(result.end.get('month')).toBe(4)
624
+ expect(result.end.get('day')).toBe(19)
625
+ expect(result.end.get('hour')).toBe(3)
626
+ expect(result.end.get('minute')).toBe(0)
627
+ expect(result.end.get('second')).toBe(0)
628
+ expect(result.end.get('millisecond')).toBe(0)
553
629
  expect(result.end.isCertain('meridiem')).toBe(false)
554
630
  });
555
631
 
556
632
  testSingleCase(chrono.fr, "aujourd'hui de 1pm-3", new Date(2012,7,10), (result) => {
557
- expect(result.index).toBe(0);
558
- expect(result.text).toBe("aujourd'hui de 1pm-3");
559
-
560
- expect(result.start.get('year')).toBe(2012);
561
- expect(result.start.get('month')).toBe(8);
562
- expect(result.start.get('day')).toBe(10);
563
- expect(result.start.get('hour')).toBe(13);
564
- expect(result.start.get('minute')).toBe(0);
565
- expect(result.start.get('second')).toBe(0);
566
- expect(result.start.get('millisecond')).toBe(0);
567
- expect(result.start.get('meridiem')).toBe(1);
568
- expect(result.start.isCertain('meridiem')).toBe(true);
569
-
570
- expect(result.end.get('year')).toBe(2012);
571
- expect(result.end.get('month')).toBe(8);
572
- expect(result.end.get('day')).toBe(11);
573
- expect(result.end.get('hour')).toBe(3);
574
- expect(result.end.get('minute')).toBe(0);
575
- expect(result.end.get('second')).toBe(0);
576
- expect(result.end.get('millisecond')).toBe(0);
633
+ expect(result.index).toBe(0)
634
+ expect(result.text).toBe("aujourd'hui de 1pm-3")
635
+
636
+ expect(result.start.get('year')).toBe(2012)
637
+ expect(result.start.get('month')).toBe(8)
638
+ expect(result.start.get('day')).toBe(10)
639
+ expect(result.start.get('hour')).toBe(13)
640
+ expect(result.start.get('minute')).toBe(0)
641
+ expect(result.start.get('second')).toBe(0)
642
+ expect(result.start.get('millisecond')).toBe(0)
643
+ expect(result.start.get('meridiem')).toBe(1)
644
+ expect(result.start.isCertain('meridiem')).toBe(true)
645
+
646
+ expect(result.end.get('year')).toBe(2012)
647
+ expect(result.end.get('month')).toBe(8)
648
+ expect(result.end.get('day')).toBe(11)
649
+ expect(result.end.get('hour')).toBe(3)
650
+ expect(result.end.get('minute')).toBe(0)
651
+ expect(result.end.get('second')).toBe(0)
652
+ expect(result.end.get('millisecond')).toBe(0)
577
653
  expect(result.end.isCertain('meridiem')).toBe(false)
578
654
  });
579
655
 
580
656
  testSingleCase(chrono.fr, "ajd de 1am-3", new Date(2012,7,10), (result) => {
581
- expect(result.index).toBe(0);
582
- expect(result.text).toBe('ajd de 1am-3');
583
-
584
- expect(result.start.get('year')).toBe(2012);
585
- expect(result.start.get('month')).toBe(8);
586
- expect(result.start.get('day')).toBe(10);
587
- expect(result.start.get('hour')).toBe(1);
588
- expect(result.start.get('minute')).toBe(0);
589
- expect(result.start.get('second')).toBe(0);
590
- expect(result.start.get('millisecond')).toBe(0);
591
- expect(result.start.get('meridiem')).toBe(0);
592
- expect(result.start.isCertain('meridiem')).toBe(true);
593
-
594
- expect(result.end.get('year')).toBe(2012);
595
- expect(result.end.get('month')).toBe(8);
596
- expect(result.end.get('day')).toBe(10);
597
- expect(result.end.get('hour')).toBe(3);
598
- expect(result.end.get('minute')).toBe(0);
599
- expect(result.end.get('second')).toBe(0);
600
- expect(result.end.get('millisecond')).toBe(0);
657
+ expect(result.index).toBe(0)
658
+ expect(result.text).toBe('ajd de 1am-3')
659
+
660
+ expect(result.start.get('year')).toBe(2012)
661
+ expect(result.start.get('month')).toBe(8)
662
+ expect(result.start.get('day')).toBe(10)
663
+ expect(result.start.get('hour')).toBe(1)
664
+ expect(result.start.get('minute')).toBe(0)
665
+ expect(result.start.get('second')).toBe(0)
666
+ expect(result.start.get('millisecond')).toBe(0)
667
+ expect(result.start.get('meridiem')).toBe(0)
668
+ expect(result.start.isCertain('meridiem')).toBe(true)
669
+
670
+ expect(result.end.get('year')).toBe(2012)
671
+ expect(result.end.get('month')).toBe(8)
672
+ expect(result.end.get('day')).toBe(10)
673
+ expect(result.end.get('hour')).toBe(3)
674
+ expect(result.end.get('minute')).toBe(0)
675
+ expect(result.end.get('second')).toBe(0)
676
+ expect(result.end.get('millisecond')).toBe(0)
601
677
  expect(result.end.isCertain('meridiem')).toBe(false)
602
678
  });
603
- });
679
+ })
604
680
 
605
681
 
606
682
  test("Test - Timezone extraction", function() {
607
683
 
608
- testSingleCase(chrono.fr, 'Vendredi à 2 pm', new Date(2016, 3, 28), (result, text) => {
684
+ var text = "Vendredi à 2 pm";
685
+ var result = chrono.fr.parse(text, new Date(2016, 3, 28))[0];
686
+ expect(result.text).toBe(text)
687
+ expect(result.start.isCertain('timezoneOffset')).toBe(false)
688
+ expect(!result.start.get('timezoneOffset')).not.toBeNull()
609
689
 
610
- expect(result.text).toBe(text);
611
- expect(result.start.isCertain('timezoneOffset')).toBe(false);
612
- expect(!result.start.get('timezoneOffset')).not.toBeNull();
613
- });
614
690
 
691
+ var text = "vendredi 2 pm EST";
692
+ var result = chrono.fr.parse(text, new Date(2016, 3, 28))[0];
693
+ expect(result.text).toBe(text)
694
+ expect(result.start.isCertain('timezoneOffset')).toBe(true)
695
+ expect(result.start.get('timezoneOffset')).toBe(-300)
615
696
 
616
- testSingleCase(chrono.fr, 'vendredi 2 pm EST', new Date(2016, 3, 28), (result, text) => {
697
+ var text = "vendredi 15h CET";
698
+ var result = chrono.fr.parse(text, new Date(2016, 3, 28))[0];
699
+ expect(result.text).toBe(text)
700
+ expect(result.start.isCertain('timezoneOffset')).toBe(true)
701
+ expect(result.start.get('timezoneOffset')).toBe(60)
617
702
 
618
- expect(result.text).toBe(text);
619
- expect(result.start.isCertain('timezoneOffset')).toBe(true);
620
- expect(result.start.get('timezoneOffset')).toBe(-300);
621
- });
703
+ var text = "vendredi 15h cest";
704
+ var result = chrono.fr.parse(text, new Date(2016, 3, 28))[0];
705
+ expect(result.text).toBe(text)
706
+ expect(result.start.isCertain('timezoneOffset')).toBe(true)
707
+ expect(result.start.get('timezoneOffset')).toBe(120)
622
708
 
623
- testSingleCase(chrono.fr, 'vendredi 15h CET', new Date(2016, 3, 28), (result, text) => {
709
+ var text = "Vendredi à 2 pm est";
710
+ var result = chrono.fr.parse(text, new Date(2016, 3, 28))[0];
711
+ expect(result.text).toBe(text)
712
+ expect(result.start.isCertain('timezoneOffset')).toBe(true)
713
+ expect(result.start.get('timezoneOffset')).toBe(-300)
624
714
 
625
- expect(result.text).toBe(text);
626
- expect(result.start.isCertain('timezoneOffset')).toBe(true);
627
- expect(result.start.get('timezoneOffset')).toBe(60);
628
- });
629
715
 
630
- testSingleCase(chrono.fr, 'vendredi 15h cest', new Date(2016, 3, 28), (result, text) => {
716
+ var text = "Vendredi à 2 pm j'ai rdv...";
717
+ var result = chrono.fr.parse(text, new Date(2016, 3, 28))[0];
718
+ expect(result.text).toBe('Vendredi à 2 pm')
719
+ expect(result.start.isCertain('timezoneOffset')).toBe(false)
720
+ expect(!result.start.get('timezoneOffset')).not.toBeNull()
631
721
 
632
- expect(result.text).toBe(text);
633
- expect(result.start.isCertain('timezoneOffset')).toBe(true);
634
- expect(result.start.get('timezoneOffset')).toBe(120);
635
- });
636
-
637
- testSingleCase(chrono.fr, 'Vendredi à 2 pm est', new Date(2016, 3, 28), (result, text) => {
638
-
639
- expect(result.text).toBe(text);
640
- expect(result.start.isCertain('timezoneOffset')).toBe(true);
641
- expect(result.start.get('timezoneOffset')).toBe(-300);
642
- });
643
-
644
-
645
- testSingleCase(chrono.fr, "Vendredi à 2 pm j'ai rdv...", new Date(2016, 3, 28), (result, text) => {
646
-
647
- expect(result.text).toBe('Vendredi à 2 pm');
648
- expect(result.start.isCertain('timezoneOffset')).toBe(false);
649
- expect(!result.start.get('timezoneOffset')).not.toBeNull();
650
- });
651
-
652
-
653
- testSingleCase(chrono.fr, 'Vendredi à 2 pm je vais faire quelque chose', new Date(2016, 3, 28), (result, text) => {
654
-
655
- expect(result.text).toBe('Vendredi à 2 pm');
656
- expect(result.start.isCertain('timezoneOffset')).toBe(false);
657
- expect(!result.start.get('timezoneOffset')).not.toBeNull();
658
- });
659
722
 
660
- });
723
+ var text = "Vendredi à 2 pm je vais faire quelque chose";
724
+ var result = chrono.fr.parse(text, new Date(2016, 3, 28))[0];
725
+ expect(result.text).toBe('Vendredi à 2 pm')
726
+ expect(result.start.isCertain('timezoneOffset')).toBe(false)
727
+ expect(!result.start.get('timezoneOffset')).not.toBeNull()
728
+ })
661
729
 
662
730
 
663
731
  test("Test - Random date + time expression", function() {
664
732
 
665
- testSingleCase(chrono.fr, 'lundi 29/4/2013 630-930am', (result, text) => {
666
-
667
- expect(result.text).toBe(text);
668
- });
669
-
670
- testSingleCase(chrono.fr, 'mercredi 1/5/2013 1115am', (result, text) => {
671
-
672
- expect(result.text).toBe(text);
673
- });
674
-
675
- testSingleCase(chrono.fr, 'vendredi 3/5/2013 1230pm', (result, text) => {
676
-
677
- expect(result.text).toBe(text);
678
- });
679
-
680
-
681
- testSingleCase(chrono.fr, 'dimanche 6/5/2013 750am-910am', (result, text) => {
682
-
683
- expect(result.text).toBe(text);
684
- });
685
-
686
- testSingleCase(chrono.fr, 'lundi 13/5/2013 630-930am', (result, text) => {
687
-
688
- expect(result.text).toBe(text);
689
- });
690
-
691
- testSingleCase(chrono.fr, 'wednesday 5/15/2013 1030am', (result, text) => {
692
-
693
- expect(result.text).toBe(text);
694
- });
695
-
696
- testSingleCase(chrono.fr, 'Vendredi 21/6/2013 2:30', (result, text) => {
697
-
698
- expect(result.text).toBe(text);
699
- });
700
-
701
- testSingleCase(chrono.fr, 'mardi 7/2/2013 1-230 pm', (result, text) => {
702
-
703
- expect(result.text).toBe(text);
704
- });
705
-
706
- testSingleCase(chrono.fr, 'mardi 7/2/2013 1-23h0', (result, text) => {
707
-
708
- expect(result.text).toBe(text);
709
- });
710
-
711
- testSingleCase(chrono.fr, 'mardi 7/2/2013 1h-23h0m', (result, text) => {
712
-
713
- expect(result.text).toBe(text);
714
- });
715
-
716
- testSingleCase(chrono.fr, 'Lundi, 24/6/2013, 7:00pm - 8:30pm', (result, text) => {
717
-
718
- expect(result.text).toBe(text);
719
- });
720
-
721
- testSingleCase(chrono.fr, 'Jeudi6/5/2013 de 7h à 10h', (result, text) => {
722
-
723
- expect(result.text).toBe(text);
724
- });
725
-
726
- testSingleCase(chrono.fr, 'Mercredi, 3 juil 2013 14h', (result, text) => {
727
-
728
- expect(result.text).toBe(text);
729
- });
730
-
731
-
732
- testSingleCase(chrono.fr, '18h', (result, text) => {
733
-
734
- expect(result.text).toBe(text);
735
- });
736
-
737
-
738
- testSingleCase(chrono.fr, '18-22h', (result, text) => {
739
-
740
- expect(result.text).toBe(text);
741
- });
742
-
743
- testSingleCase(chrono.fr, '11h-13', (result, text) => {
744
-
745
- expect(result.text).toBe(text);
746
- });
747
-
748
- testSingleCase(chrono.fr, 'à 12h', (result, text) => {
749
- expect(result.text).toBe(text);
750
- });
751
-
752
- testSingleCase(chrono.fr, 'a midi', (result, text) => {
753
-
754
- expect(result.text).toBe(text);
755
- expect(result.start.get('hour')).toBe(12);
756
- });
757
-
758
- testSingleCase(chrono.fr, 'à minuit', (result, text) => {
759
-
760
- expect(result.text).toBe(text)
761
- });
762
-
763
- testUnexpectedResult(chrono.fr, 'that I need to know or am I covered?');
764
- });
733
+ var text = "lundi 29/4/2013 630-930am";
734
+ var result = chrono.fr.parse(text)[0];
735
+ expect(result.text).toBe(text)
736
+
737
+ var text = "mercredi 1/5/2013 1115am";
738
+ var result = chrono.fr.parse(text)[0];
739
+ expect(result.text).toBe(text)
740
+
741
+ var text = "vendredi 3/5/2013 1230pm";
742
+ var result = chrono.fr.parse(text)[0];
743
+ expect(result.text).toBe(text)
744
+
745
+
746
+ var text = "dimanche 6/5/2013 750am-910am";
747
+ var result = chrono.fr.parse(text)[0];
748
+ expect(result.text).toBe(text)
749
+
750
+ var text = "lundi 13/5/2013 630-930am";
751
+ var result = chrono.fr.parse(text)[0];
752
+ expect(result.text).toBe(text)
753
+
754
+ var text = "wednesday 5/15/2013 1030am";
755
+ var result = chrono.fr.parse(text)[0];
756
+ expect(result.text).toBe(text)
757
+
758
+ var text = "Vendredi 21/6/2013 2:30";
759
+ var result = chrono.fr.parse(text)[0];
760
+ expect(result.text).toBe(text)
761
+
762
+ var text = "mardi 7/2/2013 1-230 pm";
763
+ var result = chrono.fr.parse(text)[0];
764
+ expect(result.text).toBe(text)
765
+
766
+ var text = "mardi 7/2/2013 1-23h0";
767
+ var result = chrono.fr.parse(text)[0];
768
+ expect(result.text).toBe(text)
769
+
770
+ var text = "mardi 7/2/2013 1h-23h0m";
771
+ var result = chrono.fr.parse(text)[0];
772
+ expect(result.text).toBe(text)
773
+
774
+ var text = "Lundi, 24/6/2013, 7:00pm - 8:30pm";
775
+ var result = chrono.fr.parse(text)[0];
776
+ expect(result.text).toBe(text)
777
+
778
+ var text = "Jeudi6/5/2013 de 7h à 10h";
779
+ var result = chrono.fr.parse(text)[0];
780
+ expect(result.text).toBe(text)
781
+
782
+ var text = "Mercredi, 3 juil 2013 14h";
783
+ var result = chrono.fr.parse(text)[0];
784
+ expect(result.text).toBe(text)
785
+
786
+
787
+ var text = "18h";
788
+ var result = chrono.fr.parse(text)[0];
789
+ expect(result.text).toBe(text)
790
+
791
+
792
+ var text = "18-22h";
793
+ var result = chrono.fr.parse(text)[0];
794
+ expect(result.text).toBe(text)
795
+
796
+ var text = "11h-13";
797
+ var result = chrono.fr.parse(text)[0];
798
+ expect(result.text).toBe(text)
799
+
800
+ var text = "that I need to know or am I covered?";
801
+ var result = chrono.fr.parse(text);
802
+ expect(result.length).toBe(0)
803
+
804
+ var text = "à 12h";
805
+ var result = chrono.fr.parse(text)[0];
806
+ expect(result.text).toBe(text)
807
+
808
+ var text = "a midi";
809
+ var result = chrono.fr.parse(text)[0];
810
+ expect(result.text).toBe(text)
811
+ expect(result.start.get('hour')).toBe(12)
812
+
813
+ var text = "à minuit";
814
+ var result = chrono.fr.parse(text)[0];
815
+ expect(result.text).toBe(text)
816
+ })