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,9 +1,13 @@
1
- import * as chrono from '../../src/chrono';
2
- import { testSingleCase } from '../test_util';
1
+ var chrono = require('../../src/chrono');
3
2
 
4
3
  test("Test - Single Expression", function() {
5
4
 
6
- testSingleCase(chrono, '五日內我地有d野做', new Date(2012,7,10), (result) => {
5
+ var text = "五日內我地有d野做";
6
+ var results = chrono.parse(text, new Date(2012,7,10));
7
+ expect(results.length).toBe(1);
8
+
9
+ var result = results[0];
10
+ if(result){
7
11
  expect(result.index).toBe(0);
8
12
  expect(result.text).toBe('五日內');
9
13
 
@@ -12,12 +16,19 @@ test("Test - Single Expression", function() {
12
16
  expect(result.start.get('month')).toBe(8);
13
17
  expect(result.start.get('day')).toBe(15);
14
18
 
15
- expect(result.start).toBeDate(new Date(2012, 8-1, 15, 12));
16
- });
19
+ var resultDate = result.start.date();
20
+ var expectDate = new Date(2012, 8-1, 15, 12);
21
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
22
+ }
23
+
17
24
 
18
25
 
26
+ var text = "5日之內我地有d野做";
27
+ var results = chrono.parse(text, new Date(2012,7,10));
28
+ expect(results.length).toBe(1);
19
29
 
20
- testSingleCase(chrono, '5日之內我地有d野做', new Date(2012,7,10), (result) => {
30
+ var result = results[0];
31
+ if(result){
21
32
  expect(result.index).toBe(0);
22
33
  expect(result.text).toBe('5日之內');
23
34
 
@@ -26,11 +37,18 @@ test("Test - Single Expression", function() {
26
37
  expect(result.start.get('month')).toBe(8);
27
38
  expect(result.start.get('day')).toBe(15);
28
39
 
29
- expect(result.start).toBeDate(new Date(2012, 8-1, 15, 12));
30
- });
40
+ var resultDate = result.start.date();
41
+ var expectDate = new Date(2012, 8-1, 15, 12);
42
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
43
+ }
31
44
 
32
45
 
33
- testSingleCase(chrono, '十日內我地有d野做', new Date(2012,7,10), (result) => {
46
+ var text = "十日內我地有d野做";
47
+ var results = chrono.parse(text, new Date(2012,7,10));
48
+ expect(results.length).toBe(1);
49
+
50
+ var result = results[0];
51
+ if(result){
34
52
  expect(result.index).toBe(0);
35
53
  expect(result.text).toBe('十日內');
36
54
 
@@ -39,85 +57,157 @@ test("Test - Single Expression", function() {
39
57
  expect(result.start.get('month')).toBe(8);
40
58
  expect(result.start.get('day')).toBe(20);
41
59
 
42
- expect(result.start).toBeDate(new Date(2012, 8-1, 20, 12));
43
- });
60
+ var resultDate = result.start.date();
61
+ var expectDate = new Date(2012, 8-1, 20, 12);
62
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
63
+ }
64
+
44
65
 
66
+ var text = "五分鐘後";
67
+ var results = chrono.parse(text, new Date(2012,7,10,12,14));
68
+ expect(results.length).toBe(1);
45
69
 
46
- testSingleCase(chrono, '五分鐘後', new Date(2012,7,10,12,14), (result) => {
70
+ var result = results[0];
71
+ if(result){
47
72
  expect(result.index).toBe(0);
48
73
  expect(result.text).toBe('五分鐘後');
49
74
 
50
- expect(result.start).toBeDate(new Date(2012,7,10,12,19));
51
- });
75
+ var resultDate = result.start.date();
76
+ var expectDate = new Date(2012,7,10,12,19);
77
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
78
+ }
52
79
 
53
- testSingleCase(chrono, '一個鐘之內', new Date(2012,7,10,12,14), (result) => {
80
+ var text = "一個鐘之內";
81
+ var results = chrono.parse(text, new Date(2012,7,10,12,14));
82
+ expect(results.length).toBe(1);
83
+
84
+ var result = results[0];
85
+ if(result){
54
86
  expect(result.index).toBe(0);
55
87
  expect(result.text).toBe('一個鐘之內');
56
88
 
57
- expect(result.start).toBeDate(new Date(2012,7,10,13,14));
58
- });
89
+ var resultDate = result.start.date();
90
+ var expectDate = new Date(2012,7,10,13,14);
91
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
92
+ }
93
+
94
+ var text = "5分鐘之後我就收皮";
95
+ var results = chrono.parse(text, new Date(2012,7,10,12,14));
96
+ expect(results.length).toBe(1);
59
97
 
60
- testSingleCase(chrono, '5分鐘之後我就收皮', new Date(2012,7,10,12,14), (result) => {
98
+ var result = results[0];
99
+ if(result){
61
100
  expect(result.index).toBe(0);
62
101
  expect(result.text).toBe('5分鐘之後');
63
102
 
64
- expect(result.start).toBeDate(new Date(2012,7,10,12,19));
65
- });
103
+ var resultDate = result.start.date();
104
+ var expectDate = new Date(2012,7,10,12,19);
105
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
106
+ }
107
+
108
+ var text = "係5秒之後你就會收皮";
109
+ var results = chrono.parse(text, new Date(2012,7, 10, 12, 14));
110
+ expect(results.length).toBe(1);
66
111
 
67
- testSingleCase(chrono, '係5秒之後你就會收皮', new Date(2012,7, 10, 12, 14), (result) => {
112
+ var result = results[0];
113
+ if(result){
68
114
  expect(result.index).toBe(1);
69
115
  expect(result.text).toBe('5秒之後');
70
116
 
71
- expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 14, 5));
72
- });
117
+ var resultDate = result.start.date();
118
+ var expectDate = new Date(2012, 7, 10, 12, 14, 5);
119
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
120
+ }
73
121
 
74
122
 
75
- testSingleCase(chrono, '半小時之內', new Date(2012,7,10,12,14), (result) => {
123
+ var text = "半小時之內";
124
+ var results = chrono.parse(text, new Date(2012,7,10,12,14));
125
+ expect(results.length).toBe(1);
126
+
127
+ var result = results[0];
128
+ if(result){
76
129
  expect(result.index).toBe(0);
77
130
  expect(result.text).toBe('半小時之內');
78
131
 
79
- expect(result.start).toBeDate(new Date(2012,7,10,12,44));
80
- });
132
+ var resultDate = result.start.date();
133
+ var expectDate = new Date(2012,7,10,12,44);
134
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
135
+ }
136
+
81
137
 
138
+ var text = "兩個禮拜內答覆我";
139
+ var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14));
140
+ expect(results.length).toBe(1);
82
141
 
83
- testSingleCase(chrono, '兩個禮拜內答覆我', new Date(2012, 7, 10, 12, 14), (result) => {
142
+ var result = results[0];
143
+ if(result){
84
144
  expect(result.index).toBe(0);
85
145
  expect(result.text).toBe('兩個禮拜內');
86
146
 
87
- expect(result.start).toBeDate(new Date(2012, 7, 24, 12));
88
- });
147
+ var resultDate = result.start.date();
148
+ var expectDate = new Date(2012, 7, 24, 12);
149
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
150
+ }
151
+
89
152
 
153
+ var text = "1個月之內答覆我";
154
+ var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14));
155
+ expect(results.length).toBe(1);
90
156
 
91
- testSingleCase(chrono, '1個月之內答覆我', new Date(2012, 7, 10, 12, 14), (result) => {
157
+ var result = results[0];
158
+ if(result){
92
159
  expect(result.index).toBe(0);
93
160
  expect(result.text).toBe('1個月之內');
94
161
 
95
- expect(result.start).toBeDate(new Date(2012, 8, 10, 12));
96
- });
162
+ var resultDate = result.start.date();
163
+ var expectDate = new Date(2012, 8, 10, 12);
164
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
165
+ }
97
166
 
98
167
 
99
- testSingleCase(chrono, '幾個月之內答覆我', new Date(2012, 7, 10, 12, 14), (result) => {
168
+ var text = "幾個月之內答覆我";
169
+ var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14));
170
+ expect(results.length).toBe(1);
171
+
172
+ var result = results[0];
173
+ if(result){
100
174
  expect(result.index).toBe(0);
101
175
  expect(result.text).toBe('幾個月之內');
102
176
 
103
- expect(result.start).toBeDate(new Date(2012, 10, 10, 12));
104
- });
177
+ var resultDate = result.start.date();
178
+ var expectDate = new Date(2012, 10, 10, 12);
179
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
180
+ }
181
+
105
182
 
183
+ var text = "一年內答覆我";
184
+ var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14));
185
+ expect(results.length).toBe(1);
106
186
 
107
- testSingleCase(chrono, '一年內答覆我', new Date(2012, 7, 10, 12, 14), (result) => {
187
+ var result = results[0];
188
+ if(result){
108
189
  expect(result.index).toBe(0);
109
190
  expect(result.text).toBe('一年內');
110
191
 
111
- expect(result.start).toBeDate(new Date(2013, 7, 10, 12));
112
- });
192
+ var resultDate = result.start.date();
193
+ var expectDate = new Date(2013, 7, 10, 12);
194
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
195
+ }
196
+
113
197
 
198
+ var text = "1年之內答覆我";
199
+ var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14));
200
+ expect(results.length).toBe(1);
114
201
 
115
- testSingleCase(chrono, '1年之內答覆我', new Date(2012, 7, 10, 12, 14), (result) => {
202
+ var result = results[0];
203
+ if(result){
116
204
  expect(result.index).toBe(0);
117
205
  expect(result.text).toBe('1年之內');
118
206
 
119
- expect(result.start).toBeDate(new Date(2013, 7, 10, 12));
120
- });
207
+ var resultDate = result.start.date();
208
+ var expectDate = new Date(2013, 7, 10, 12);
209
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
210
+ }
121
211
 
122
212
 
123
213
  });
@@ -1,183 +1,226 @@
1
- import * as chrono from '../../src/chrono';
2
- import { testSingleCase } from '../test_util';
1
+ var chrono = require('../../src/chrono');
3
2
 
4
3
  test("Test - Single Expression", function() {
5
4
 
6
5
 
7
- testSingleCase(chrono, '雞上午6點13分全部都係雞', new Date(2012,7,10), (result) => {
8
- expect(result.index).toBe(1);
9
- expect(result.text).toBe('上午6點13分');
6
+ var text = "雞上午6點13分全部都係雞";
7
+ var results = chrono.parse(text, new Date(2012,7,10));
8
+ expect(results.length).toBe(1)
10
9
 
11
- expect(result.start).not.toBeNull();
12
- expect(result.start.get('hour')).toBe(6);
13
- expect(result.start.get('minute')).toBe(13);
10
+ var result = results[0];
11
+ if(result){
12
+ expect(result.index).toBe(1)
13
+ expect(result.text).toBe('上午6點13分')
14
14
 
15
- expect(result.start).toBeDate(new Date(2012, 7, 10, 6, 13))
16
- });
15
+ expect(result.start).not.toBeNull()
16
+ expect(result.start.get('hour')).toBe(6)
17
+ expect(result.start.get('minute')).toBe(13)
17
18
 
18
- testSingleCase(chrono, '雞後天凌晨全部都係雞', new Date(2012, 7, 10, 0, 0), (result) => {
19
- expect(result.index).toBe(1);
20
- expect(result.text).toBe('後天凌晨');
19
+ var resultDate = result.start.date();
20
+ var expectDate = new Date(2012, 7, 10, 6, 13);
21
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
22
+ }
21
23
 
22
- expect(result.start).toBeDate(new Date(2012, 7, 12, 0, 0))
23
- });
24
+ var text = "雞後天凌晨全部都係雞";
25
+ var results = chrono.parse(text, new Date(2012, 7, 10, 0, 0));
26
+ expect(results.length).toBe(1)
24
27
 
25
- testSingleCase(chrono, '雞大前天凌晨全部都係雞', new Date(2012, 7, 10, 0, 0), (result) => {
26
- expect(result.index).toBe(1);
27
- expect(result.text).toBe('大前天凌晨');
28
+ var result = results[0];
29
+ if(result){
30
+ expect(result.index).toBe(1)
31
+ expect(result.text).toBe('後天凌晨')
28
32
 
29
- expect(result.start).toBeDate(new Date(2012, 7, 7, 0, 0))
30
- });
33
+ var resultDate = result.start.date();
34
+ var expectDate = new Date(2012, 7, 12, 0, 0);
35
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
36
+ }
31
37
 
38
+ var text = "雞大前天凌晨全部都係雞";
39
+ var results = chrono.parse(text, new Date(2012, 7, 10, 0, 0));
40
+ expect(results.length).toBe(1)
32
41
 
33
- });
34
-
35
- test("Test - Range Expression", function() {
36
-
37
- testSingleCase(chrono, '雞由今朝八點十分至下午11點32分全部都係雞', new Date(2012,7,10), (result) => {
38
- expect(result.index).toBe(1);
39
- expect(result.text).toBe('由今朝八點十分至下午11點32分');
40
-
41
- expect(result.start).not.toBeNull();
42
- expect(result.start.get('hour')).toBe(8);
43
- expect(result.start.get('minute')).toBe(10);
44
-
45
- expect(result.start.isCertain('day')).toBe(true);
46
- expect(result.start.isCertain('month')).toBe(true);
47
- expect(result.start.isCertain('year')).toBe(true);
48
- expect(result.start.isCertain('hour')).toBe(true);
49
- expect(result.start.isCertain('minute')).toBe(true);
50
- expect(result.start.isCertain('second')).toBe(false);
51
- expect(result.start.isCertain('millisecond')).toBe(false);
42
+ var result = results[0];
43
+ if(result){
44
+ expect(result.index).toBe(1)
45
+ expect(result.text).toBe('大前天凌晨')
52
46
 
53
- expect(result.start).toBeDate(new Date(2012, 7, 10, 8, 10))
47
+ var resultDate = result.start.date();
48
+ var expectDate = new Date(2012, 7, 7, 0, 0);
49
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
50
+ }
54
51
 
55
- expect(result.end).not.toBeNull();
56
- expect(result.end.get('hour')).toBe(23);
57
- expect(result.end.get('minute')).toBe(32);
58
52
 
59
- expect(result.end.isCertain('day')).toBe(false);
60
- expect(result.end.isCertain('month')).toBe(false);
61
- expect(result.end.isCertain('year')).toBe(false);
62
- expect(result.end.isCertain('hour')).toBe(true);
63
- expect(result.end.isCertain('minute')).toBe(true);
64
- expect(result.end.isCertain('second')).toBe(false);
65
- expect(result.end.isCertain('millisecond')).toBe(false);
66
-
67
- expect(result.end).toBeDate(new Date(2012, 7, 10, 23, 32));
68
- });
69
-
70
- testSingleCase(chrono, '6點30pm-11點pm', new Date(2012,7,10), (result) => {
71
- expect(result.index).toBe(0);
72
- expect(result.text).toBe('6點30pm-11點pm');
73
-
74
- expect(result.start).not.toBeNull();
75
- expect(result.start.get('hour')).toBe(18);
76
- expect(result.start.get('minute')).toBe(30);
77
- expect(result.start.get('meridiem')).toBe(1);
78
-
79
- expect(result.start).toBeDate(new Date(2012, 7, 10, 18, 30));
53
+ });
80
54
 
81
- expect(result.end).not.toBeNull();
82
- expect(result.end.get('hour')).toBe(23);
83
- expect(result.end.get('minute')).toBe(0);
84
- expect(result.end.get('meridiem')).toBe(1);
55
+ test("Test - Range Expression", function() {
85
56
 
86
- expect(result.end).toBeDate(new Date(2012, 7, 10, 23, 0));
87
- });
57
+ var text = "雞由今朝八點十分至下午11點32分全部都係雞";
58
+ var results = chrono.parse(text, new Date(2012,7,10));
59
+ expect(results.length).toBe(1)
60
+
61
+ var result = results[0];
62
+ if(result){
63
+ expect(result.index).toBe(1)
64
+ expect(result.text).toBe('由今朝八點十分至下午11點32分')
65
+
66
+ expect(result.start).not.toBeNull()
67
+ expect(result.start.get('hour')).toBe(8)
68
+ expect(result.start.get('minute')).toBe(10)
69
+
70
+ expect(result.start.isCertain('day')).toBe(true)
71
+ expect(result.start.isCertain('month')).toBe(true)
72
+ expect(result.start.isCertain('year')).toBe(true)
73
+ expect(result.start.isCertain('hour')).toBe(true)
74
+ expect(result.start.isCertain('minute')).toBe(true)
75
+ expect(result.start.isCertain('second')).toBe(false)
76
+ expect(result.start.isCertain('millisecond')).toBe(false)
77
+
78
+ var resultDate = result.start.date();
79
+ var expectDate = new Date(2012, 7, 10, 8, 10);
80
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
81
+
82
+ expect(result.end).not.toBeNull()
83
+ expect(result.end.get('hour')).toBe(23)
84
+ expect(result.end.get('minute')).toBe(32)
85
+
86
+ expect(result.end.isCertain('day')).toBe(false)
87
+ expect(result.end.isCertain('month')).toBe(false)
88
+ expect(result.end.isCertain('year')).toBe(false)
89
+ expect(result.end.isCertain('hour')).toBe(true)
90
+ expect(result.end.isCertain('minute')).toBe(true)
91
+ expect(result.end.isCertain('second')).toBe(false)
92
+ expect(result.end.isCertain('millisecond')).toBe(false)
93
+
94
+ var resultDate = result.end.date();
95
+ var expectDate = new Date(2012, 7, 10, 23, 32);
96
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
97
+ }
98
+
99
+ var text = "6點30pm-11點pm";
100
+ var results = chrono.parse(text, new Date(2012,7,10));
101
+ expect(results.length).toBe(1)
102
+
103
+ var result = results[0];
104
+ if(result){
105
+ expect(result.index).toBe(0)
106
+ expect(result.text).toBe('6點30pm-11點pm')
107
+
108
+ expect(result.start).not.toBeNull()
109
+ expect(result.start.get('hour')).toBe(18)
110
+ expect(result.start.get('minute')).toBe(30)
111
+ expect(result.start.get('meridiem')).toBe(1)
112
+
113
+ var resultDate = result.start.date();
114
+ var expectDate = new Date(2012, 7, 10, 18, 30);
115
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
116
+
117
+ expect(result.end).not.toBeNull()
118
+ expect(result.end.get('hour')).toBe(23)
119
+ expect(result.end.get('minute')).toBe(0)
120
+ expect(result.end.get('meridiem')).toBe(1)
121
+
122
+ var resultDate = result.end.date();
123
+ var expectDate = new Date(2012, 7, 10, 23, 0);
124
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
125
+ }
88
126
 
89
127
  });
90
128
 
91
129
  test("Test - Date + Time Expression", function() {
92
130
 
93
- testSingleCase(chrono, '雞二零一八年十一月廿六日下午三時半五十九秒全部都係雞', new Date(2012,7,10), (result) => {
94
- expect(result.index).toBe(1);
95
- expect(result.text).toBe('二零一八年十一月廿六日下午三時半五十九秒');
131
+ var text = "雞二零一八年十一月廿六日下午三時半五十九秒全部都係雞";
132
+ var results = chrono.parse(text, new Date(2012,7,10));
133
+ expect(results.length).toBe(1)
96
134
 
97
- expect(result.start.get('year')).toBe(2018);
98
- expect(result.start.get('month')).toBe(11);
99
- expect(result.start.get('day')).toBe(26);
100
- expect(result.start.get('hour')).toBe(15);
101
- expect(result.start.get('minute')).toBe(30);
102
- expect(result.start.get('second')).toBe(59);
103
- expect(result.start.get('millisecond')).toBe(0);
104
- expect(result.start.isCertain('millisecond')).toBe(false);
135
+ var result = results[0];
136
+ if(result){
137
+ expect(result.index).toBe(1)
138
+ expect(result.text).toBe('二零一八年十一月廿六日下午三時半五十九秒')
105
139
 
106
- expect(result.start).toBeDate(new Date(2018, 11-1, 26, 15, 30, 59));
107
- });
140
+ expect(result.start.get('year')).toBe(2018)
141
+ expect(result.start.get('month')).toBe(11)
142
+ expect(result.start.get('day')).toBe(26)
143
+ expect(result.start.get('hour')).toBe(15)
144
+ expect(result.start.get('minute')).toBe(30)
145
+ expect(result.start.get('second')).toBe(59)
146
+ expect(result.start.get('millisecond')).toBe(0)
147
+ expect(result.start.isCertain('millisecond')).toBe(false)
108
148
 
109
- });
149
+ var resultDate = result.start.date();
150
+ var expectDate = new Date(2018, 11-1, 26, 15, 30, 59);
151
+ expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
152
+ }
153
+
154
+ })
110
155
 
111
156
 
112
157
  test("Test - Time Expression's Meridiem imply", function() {
113
158
 
114
- testSingleCase(chrono, '1點pm到3點', new Date(2012,7,10), (result) => {
115
- expect(result.index).toBe(0);
116
- expect(result.text).toBe('1點pm到3點');
117
-
118
- expect(result.start.get('year')).toBe(2012);
119
- expect(result.start.get('month')).toBe(8);
120
- expect(result.start.get('day')).toBe(10);
121
- expect(result.start.get('hour')).toBe(13);
122
- expect(result.start.get('minute')).toBe(0);
123
- expect(result.start.get('second')).toBe(0);
124
- expect(result.start.get('millisecond')).toBe(0);
125
- expect(result.start.get('meridiem')).toBe(1);
126
- expect(result.start.isCertain('meridiem')).toBe(true);
127
-
128
- expect(result.end.get('year')).toBe(2012);
129
- expect(result.end.get('month')).toBe(8);
130
- expect(result.end.get('day')).toBe(11);
131
- expect(result.end.get('hour')).toBe(3);
132
- expect(result.end.get('minute')).toBe(0);
133
- expect(result.end.get('second')).toBe(0);
134
- expect(result.end.get('millisecond')).toBe(0);
159
+ var text = "1點pm到3點";
160
+ var results = chrono.parse(text, new Date(2012,7,10));
161
+ expect(results.length).toBe(1)
162
+
163
+ var result = results[0];
164
+ if (result) {
165
+ expect(result.index).toBe(0)
166
+ expect(result.text).toBe('1點pm到3點')
167
+
168
+ expect(result.start.get('year')).toBe(2012)
169
+ expect(result.start.get('month')).toBe(8)
170
+ expect(result.start.get('day')).toBe(10)
171
+ expect(result.start.get('hour')).toBe(13)
172
+ expect(result.start.get('minute')).toBe(0)
173
+ expect(result.start.get('second')).toBe(0)
174
+ expect(result.start.get('millisecond')).toBe(0)
175
+ expect(result.start.get('meridiem')).toBe(1)
176
+ expect(result.start.isCertain('meridiem')).toBe(true)
177
+
178
+ expect(result.end.get('year')).toBe(2012)
179
+ expect(result.end.get('month')).toBe(8)
180
+ expect(result.end.get('day')).toBe(11)
181
+ expect(result.end.get('hour')).toBe(3)
182
+ expect(result.end.get('minute')).toBe(0)
183
+ expect(result.end.get('second')).toBe(0)
184
+ expect(result.end.get('millisecond')).toBe(0)
135
185
  expect(result.end.isCertain('meridiem')).toBe(false)
136
- });
137
- });
186
+ }
187
+ })
138
188
 
139
189
 
140
190
  test("Test - Random date + time expression", function() {
141
191
 
142
- testSingleCase(chrono, '2014年, 3月5日晏晝 6 點至 7 點', (result, text) => {
143
-
144
- expect(result.text).toBe(text);
145
- });
146
-
147
- testSingleCase(chrono, '下星期六凌晨1點30分廿九秒', (result, text) => {
148
-
149
- expect(result.text).toBe(text);
150
- });
192
+ var text = "2014年, 3月5日晏晝 6 點至 7 點";
193
+ var result = chrono.parse(text)[0];
194
+ expect(result.text).toBe(text)
151
195
 
152
- testSingleCase(chrono, '尋日朝早六點正', (result, text) => {
196
+ var text = "下星期六凌晨1點30分廿九秒";
197
+ var result = chrono.parse(text)[0];
198
+ expect(result.text).toBe(text)
153
199
 
154
- expect(result.text).toBe(text);
155
- });
200
+ var text = "尋日朝早六點正";
201
+ var result = chrono.parse(text)[0];
202
+ expect(result.text).toBe(text)
156
203
 
157
204
 
158
- testSingleCase(chrono, '六月四日3:00am', (result, text) => {
205
+ var text = "六月四日3:00am";
206
+ var result = chrono.parse(text)[0];
207
+ expect(result.text).toBe(text)
159
208
 
160
- expect(result.text).toBe(text);
161
- });
209
+ var text = "上個禮拜五16時";
210
+ var result = chrono.parse(text)[0];
211
+ expect(result.text).toBe(text)
162
212
 
163
- testSingleCase(chrono, '上個禮拜五16時', (result, text) => {
213
+ var text = "3月17日 20點15";
214
+ var result = chrono.parse(text)[0];
215
+ expect(result.text).toBe(text)
164
216
 
165
- expect(result.text).toBe(text);
166
- });
217
+ var text = "10點";
218
+ var result = chrono.parse(text)[0];
219
+ expect(result.text).toBe(text)
167
220
 
168
- testSingleCase(chrono, '3月17日 20點15', (result, text) => {
169
-
170
- expect(result.text).toBe(text);
171
- });
172
-
173
- testSingleCase(chrono, '10點', (result, text) => {
174
-
175
- expect(result.text).toBe(text);
176
- });
177
-
178
- testSingleCase(chrono, '中午12點', (result, text) => {
179
-
180
- expect(result.text).toBe(text);
181
- expect(result.start.get('hour')).toBe(12);
182
- });
183
- });
221
+ var text = "中午12點";
222
+ var result = chrono.parse(text)[0];
223
+ expect(result.text).toBe(text)
224
+ expect(result.start.get('hour')).toBe(12)
225
+ expect(result.start.get('hour')).toBe(12)
226
+ })