chronic 0.1.4 → 0.2.0

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.
data/test/test_parsing.rb CHANGED
@@ -2,481 +2,535 @@ require 'chronic'
2
2
  require 'test/unit'
3
3
 
4
4
  class TestParsing < Test::Unit::TestCase
5
+ # Wed Aug 16 14:00:00 UTC 2006
6
+ TIME_2006_08_16_14_00_00 = Time.local(2006, 8, 16, 14, 0, 0, 0)
5
7
 
6
8
  def setup
7
- # Wed Aug 16 14:00:00 UTC 2006
8
- @time_2006_08_16_14_00_00 = Time.local(2006, 8, 16, 14, 0, 0, 0)
9
- @time_2006_08_16_03_00_00 = Time.local(2006, 8, 16, 3, 0, 0, 0)
9
+ @time_2006_08_16_14_00_00 = TIME_2006_08_16_14_00_00
10
10
  end
11
11
 
12
- def test__parse_guess_dates
12
+ def test_parse_guess_dates
13
13
  # rm_sd
14
14
 
15
- time = Chronic.parse("may 27", :now => @time_2006_08_16_14_00_00)
15
+ time = parse_now("may 27")
16
16
  assert_equal Time.local(2007, 5, 27, 12), time
17
17
 
18
- time = Chronic.parse("may 28", :now => @time_2006_08_16_14_00_00, :context => :past)
18
+ time = parse_now("may 28", :context => :past)
19
19
  assert_equal Time.local(2006, 5, 28, 12), time
20
20
 
21
- time = Chronic.parse("may 28 5pm", :now => @time_2006_08_16_14_00_00, :context => :past)
21
+ time = parse_now("may 28 5pm", :context => :past)
22
22
  assert_equal Time.local(2006, 5, 28, 17), time
23
23
 
24
- time = Chronic.parse("may 28 at 5pm", :now => @time_2006_08_16_14_00_00, :context => :past)
24
+ time = parse_now("may 28 at 5pm", :context => :past)
25
25
  assert_equal Time.local(2006, 5, 28, 17), time
26
26
 
27
+ time = parse_now("may 28 at 5:32.19pm", :context => :past)
28
+ assert_equal Time.local(2006, 5, 28, 17, 32, 19), time
29
+
27
30
  # rm_od
28
31
 
29
- time = Chronic.parse("may 27th", :now => @time_2006_08_16_14_00_00)
32
+ time = parse_now("may 27th")
30
33
  assert_equal Time.local(2007, 5, 27, 12), time
31
34
 
32
- time = Chronic.parse("may 27th", :now => @time_2006_08_16_14_00_00, :context => :past)
35
+ time = parse_now("may 27th", :context => :past)
33
36
  assert_equal Time.local(2006, 5, 27, 12), time
34
37
 
35
- time = Chronic.parse("may 27th 5:00 pm", :now => @time_2006_08_16_14_00_00, :context => :past)
38
+ time = parse_now("may 27th 5:00 pm", :context => :past)
36
39
  assert_equal Time.local(2006, 5, 27, 17), time
37
40
 
38
- time = Chronic.parse("may 27th at 5pm", :now => @time_2006_08_16_14_00_00, :context => :past)
41
+ time = parse_now("may 27th at 5pm", :context => :past)
39
42
  assert_equal Time.local(2006, 5, 27, 17), time
40
43
 
41
- time = Chronic.parse("may 27th at 5", :now => @time_2006_08_16_14_00_00, :ambiguous_time_range => :none)
44
+ time = parse_now("may 27th at 5", :ambiguous_time_range => :none)
42
45
  assert_equal Time.local(2007, 5, 27, 5), time
43
46
 
44
47
  # rm_sy
45
48
 
46
- time = Chronic.parse("June 1979", :now => @time_2006_08_16_14_00_00)
49
+ time = parse_now("June 1979")
47
50
  assert_equal Time.local(1979, 6, 16, 0), time
48
51
 
49
- time = Chronic.parse("dec 79", :now => @time_2006_08_16_14_00_00)
52
+ time = parse_now("dec 79")
50
53
  assert_equal Time.local(1979, 12, 16, 12), time
51
54
 
52
55
  # rm_sd_sy
53
56
 
54
- time = Chronic.parse("jan 3 2010", :now => @time_2006_08_16_14_00_00)
57
+ time = parse_now("jan 3 2010")
55
58
  assert_equal Time.local(2010, 1, 3, 12), time
56
59
 
57
- time = Chronic.parse("jan 3 2010 midnight", :now => @time_2006_08_16_14_00_00)
60
+ time = parse_now("jan 3 2010 midnight")
58
61
  assert_equal Time.local(2010, 1, 4, 0), time
59
62
 
60
- time = Chronic.parse("jan 3 2010 at midnight", :now => @time_2006_08_16_14_00_00)
63
+ time = parse_now("jan 3 2010 at midnight")
61
64
  assert_equal Time.local(2010, 1, 4, 0), time
62
65
 
63
- time = Chronic.parse("jan 3 2010 at 4", :now => @time_2006_08_16_14_00_00, :ambiguous_time_range => :none)
66
+ time = parse_now("jan 3 2010 at 4", :ambiguous_time_range => :none)
64
67
  assert_equal Time.local(2010, 1, 3, 4), time
65
68
 
66
- #time = Chronic.parse("January 12, '00", :now => @time_2006_08_16_14_00_00)
69
+ #time = parse_now("January 12, '00")
67
70
  #assert_equal Time.local(2000, 1, 12, 12), time
68
71
 
69
- time = Chronic.parse("may 27 79", :now => @time_2006_08_16_14_00_00)
72
+ time = parse_now("may 27 79")
70
73
  assert_equal Time.local(1979, 5, 27, 12), time
71
74
 
72
- time = Chronic.parse("may 27 79 4:30", :now => @time_2006_08_16_14_00_00)
75
+ time = parse_now("may 27 79 4:30")
73
76
  assert_equal Time.local(1979, 5, 27, 16, 30), time
74
77
 
75
- time = Chronic.parse("may 27 79 at 4:30", :now => @time_2006_08_16_14_00_00, :ambiguous_time_range => :none)
78
+ time = parse_now("may 27 79 at 4:30", :ambiguous_time_range => :none)
76
79
  assert_equal Time.local(1979, 5, 27, 4, 30), time
77
80
 
78
81
  # sd_rm_sy
79
82
 
80
- time = Chronic.parse("3 jan 2010", :now => @time_2006_08_16_14_00_00)
83
+ time = parse_now("3 jan 2010")
81
84
  assert_equal Time.local(2010, 1, 3, 12), time
82
85
 
83
- time = Chronic.parse("3 jan 2010 4pm", :now => @time_2006_08_16_14_00_00)
86
+ time = parse_now("3 jan 2010 4pm")
84
87
  assert_equal Time.local(2010, 1, 3, 16), time
85
88
 
86
89
  # sm_sd_sy
87
90
 
88
- time = Chronic.parse("5/27/1979", :now => @time_2006_08_16_14_00_00)
91
+ time = parse_now("5/27/1979")
89
92
  assert_equal Time.local(1979, 5, 27, 12), time
90
93
 
91
- time = Chronic.parse("5/27/1979 4am", :now => @time_2006_08_16_14_00_00)
94
+ time = parse_now("5/27/1979 4am")
92
95
  assert_equal Time.local(1979, 5, 27, 4), time
93
96
 
94
97
  # sd_sm_sy
95
98
 
96
- time = Chronic.parse("27/5/1979", :now => @time_2006_08_16_14_00_00)
99
+ time = parse_now("27/5/1979")
97
100
  assert_equal Time.local(1979, 5, 27, 12), time
98
101
 
99
- time = Chronic.parse("27/5/1979 @ 0700", :now => @time_2006_08_16_14_00_00)
102
+ time = parse_now("27/5/1979 @ 0700")
100
103
  assert_equal Time.local(1979, 5, 27, 7), time
101
104
 
102
105
  # sm_sy
103
106
 
104
- time = Chronic.parse("05/06", :now => @time_2006_08_16_14_00_00)
107
+ time = parse_now("05/06")
105
108
  assert_equal Time.local(2006, 5, 16, 12), time
106
109
 
107
- time = Chronic.parse("12/06", :now => @time_2006_08_16_14_00_00)
110
+ time = parse_now("12/06")
108
111
  assert_equal Time.local(2006, 12, 16, 12), time
109
112
 
110
- time = Chronic.parse("13/06", :now => @time_2006_08_16_14_00_00)
113
+ time = parse_now("13/06")
111
114
  assert_equal nil, time
112
115
 
113
116
  # sy_sm_sd
114
117
 
115
- time = Chronic.parse("2000-1-1", :now => @time_2006_08_16_14_00_00)
118
+ time = parse_now("2000-1-1")
116
119
  assert_equal Time.local(2000, 1, 1, 12), time
117
120
 
118
- time = Chronic.parse("2006-08-20", :now => @time_2006_08_16_14_00_00)
121
+ time = parse_now("2006-08-20")
119
122
  assert_equal Time.local(2006, 8, 20, 12), time
120
123
 
121
- time = Chronic.parse("2006-08-20 7pm", :now => @time_2006_08_16_14_00_00)
124
+ time = parse_now("2006-08-20 7pm")
122
125
  assert_equal Time.local(2006, 8, 20, 19), time
123
126
 
124
- time = Chronic.parse("2006-08-20 03:00", :now => @time_2006_08_16_14_00_00)
127
+ time = parse_now("2006-08-20 03:00")
125
128
  assert_equal Time.local(2006, 8, 20, 3), time
126
129
 
130
+ time = parse_now("2006-08-20 03:30:30")
131
+ assert_equal Time.local(2006, 8, 20, 3, 30, 30), time
132
+
133
+ time = parse_now("2006-08-20 15:30:30")
134
+ assert_equal Time.local(2006, 8, 20, 15, 30, 30), time
135
+
136
+ time = parse_now("2006-08-20 15:30.30")
137
+ assert_equal Time.local(2006, 8, 20, 15, 30, 30), time
138
+
127
139
  # rm_sd_rt
128
140
 
129
- #time = Chronic.parse("jan 5 13:00", :now => @time_2006_08_16_14_00_00)
141
+ #time = parse_now("jan 5 13:00")
130
142
  #assert_equal Time.local(2007, 1, 5, 13), time
131
143
 
132
144
  # due to limitations of the Time class, these don't work
133
145
 
134
- time = Chronic.parse("may 40", :now => @time_2006_08_16_14_00_00)
146
+ time = parse_now("may 40")
135
147
  assert_equal nil, time
136
148
 
137
- time = Chronic.parse("may 27 40", :now => @time_2006_08_16_14_00_00)
149
+ time = parse_now("may 27 40")
138
150
  assert_equal nil, time
139
151
 
140
- time = Chronic.parse("1800-08-20", :now => @time_2006_08_16_14_00_00)
152
+ time = parse_now("1800-08-20")
141
153
  assert_equal nil, time
142
154
  end
143
155
 
144
156
  def test_parse_guess_r
145
- time = Chronic.parse("friday", :now => @time_2006_08_16_14_00_00)
157
+ time = parse_now("friday")
146
158
  assert_equal Time.local(2006, 8, 18, 12), time
147
159
 
148
- time = Chronic.parse("5", :now => @time_2006_08_16_14_00_00)
160
+ time = parse_now("5")
149
161
  assert_equal Time.local(2006, 8, 16, 17), time
150
162
 
151
- time = Chronic.parse("5", :now => @time_2006_08_16_03_00_00, :ambiguous_time_range => :none)
163
+ time = Chronic.parse("5", :now => Time.local(2006, 8, 16, 3, 0, 0, 0), :ambiguous_time_range => :none)
152
164
  assert_equal Time.local(2006, 8, 16, 5), time
153
165
 
154
- time = Chronic.parse("13:00", :now => @time_2006_08_16_14_00_00)
166
+ time = parse_now("13:00")
155
167
  assert_equal Time.local(2006, 8, 17, 13), time
156
168
 
157
- time = Chronic.parse("13:45", :now => @time_2006_08_16_14_00_00)
169
+ time = parse_now("13:45")
158
170
  assert_equal Time.local(2006, 8, 17, 13, 45), time
159
171
 
160
- time = Chronic.parse("november", :now => @time_2006_08_16_14_00_00)
172
+ time = parse_now("november")
161
173
  assert_equal Time.local(2006, 11, 16), time
162
174
  end
163
175
 
164
176
  def test_parse_guess_rr
165
- time = Chronic.parse("friday 13:00", :now => @time_2006_08_16_14_00_00)
177
+ time = parse_now("friday 13:00")
166
178
  assert_equal Time.local(2006, 8, 18, 13), time
167
179
 
168
- time = Chronic.parse("monday 4:00", :now => @time_2006_08_16_14_00_00)
180
+ time = parse_now("monday 4:00")
169
181
  assert_equal Time.local(2006, 8, 21, 16), time
170
182
 
171
- time = Chronic.parse("sat 4:00", :now => @time_2006_08_16_14_00_00, :ambiguous_time_range => :none)
183
+ time = parse_now("sat 4:00", :ambiguous_time_range => :none)
172
184
  assert_equal Time.local(2006, 8, 19, 4), time
173
185
 
174
- time = Chronic.parse("sunday 4:20", :now => @time_2006_08_16_14_00_00, :ambiguous_time_range => :none)
186
+ time = parse_now("sunday 4:20", :ambiguous_time_range => :none)
175
187
  assert_equal Time.local(2006, 8, 20, 4, 20), time
176
188
 
177
- time = Chronic.parse("4 pm", :now => @time_2006_08_16_14_00_00)
189
+ time = parse_now("4 pm")
178
190
  assert_equal Time.local(2006, 8, 16, 16), time
179
191
 
180
- time = Chronic.parse("4 am", :now => @time_2006_08_16_14_00_00, :ambiguous_time_range => :none)
192
+ time = parse_now("4 am", :ambiguous_time_range => :none)
181
193
  assert_equal Time.local(2006, 8, 16, 4), time
182
194
 
183
- time = Chronic.parse("4:00 in the morning", :now => @time_2006_08_16_14_00_00)
195
+ time = parse_now("4:00 in the morning")
184
196
  assert_equal Time.local(2006, 8, 16, 4), time
185
197
 
186
- #time = Chronic.parse("november 4", :now => @time_2006_08_16_14_00_00)
187
- #assert_equal Time.local(2006, 11, 4, 12), time
198
+ time = parse_now("november 4")
199
+ assert_equal Time.local(2006, 11, 4, 12), time
200
+
201
+ time = parse_now("aug 24")
202
+ assert_equal Time.local(2006, 8, 24, 12), time
188
203
  end
189
204
 
190
205
  def test_parse_guess_rrr
191
- time = Chronic.parse("friday 1 pm", :now => @time_2006_08_16_14_00_00)
206
+ time = parse_now("friday 1 pm")
192
207
  assert_equal Time.local(2006, 8, 18, 13), time
193
208
 
194
- time = Chronic.parse("friday 11 at night", :now => @time_2006_08_16_14_00_00)
209
+ time = parse_now("friday 11 at night")
195
210
  assert_equal Time.local(2006, 8, 18, 23), time
196
211
 
197
- time = Chronic.parse("friday 11 in the evening", :now => @time_2006_08_16_14_00_00)
212
+ time = parse_now("friday 11 in the evening")
198
213
  assert_equal Time.local(2006, 8, 18, 23), time
199
214
 
200
- time = Chronic.parse("sunday 6am", :now => @time_2006_08_16_14_00_00)
215
+ time = parse_now("sunday 6am")
201
216
  assert_equal Time.local(2006, 8, 20, 6), time
202
217
  end
203
218
 
204
219
  def test_parse_guess_gr
205
220
  # year
206
221
 
207
- time = Chronic.parse("this year", :now => @time_2006_08_16_14_00_00)
222
+ time = parse_now("this year")
208
223
  assert_equal Time.local(2006, 10, 24, 12, 30), time
209
224
 
210
- time = Chronic.parse("this year", :now => @time_2006_08_16_14_00_00, :context => :past)
225
+ time = parse_now("this year", :context => :past)
211
226
  assert_equal Time.local(2006, 4, 24, 12, 30), time
212
227
 
213
228
  # month
214
229
 
215
- time = Chronic.parse("this month", :now => @time_2006_08_16_14_00_00)
230
+ time = parse_now("this month")
216
231
  assert_equal Time.local(2006, 8, 24, 12), time
217
232
 
218
- time = Chronic.parse("this month", :now => @time_2006_08_16_14_00_00, :context => :past)
233
+ time = parse_now("this month", :context => :past)
219
234
  assert_equal Time.local(2006, 8, 8, 12), time
220
235
 
221
236
  # month name
222
237
 
223
- time = Chronic.parse("last november", :now => @time_2006_08_16_14_00_00)
238
+ time = parse_now("last november")
224
239
  assert_equal Time.local(2005, 11, 16), time
225
240
 
226
241
  # fortnight
227
242
 
228
- time = Chronic.parse("this fortnight", :now => @time_2006_08_16_14_00_00)
243
+ time = parse_now("this fortnight")
229
244
  assert_equal Time.local(2006, 8, 21, 19, 30), time
230
245
 
231
- time = Chronic.parse("this fortnight", :now => @time_2006_08_16_14_00_00, :context => :past)
246
+ time = parse_now("this fortnight", :context => :past)
232
247
  assert_equal Time.local(2006, 8, 14, 19), time
233
248
 
234
249
  # week
235
250
 
236
- time = Chronic.parse("this week", :now => @time_2006_08_16_14_00_00)
251
+ time = parse_now("this week")
237
252
  assert_equal Time.local(2006, 8, 18, 7, 30), time
238
253
 
239
- time = Chronic.parse("this week", :now => @time_2006_08_16_14_00_00, :context => :past)
254
+ time = parse_now("this week", :context => :past)
240
255
  assert_equal Time.local(2006, 8, 14, 19), time
241
256
 
257
+ # weekend
258
+
259
+ time = parse_now("this weekend")
260
+ assert_equal Time.local(2006, 8, 20), time
261
+
262
+ time = parse_now("this weekend", :context => :past)
263
+ assert_equal Time.local(2006, 8, 13), time
264
+
265
+ time = parse_now("last weekend")
266
+ assert_equal Time.local(2006, 8, 13), time
267
+
242
268
  # day
243
269
 
244
- time = Chronic.parse("this day", :now => @time_2006_08_16_14_00_00)
270
+ time = parse_now("this day")
245
271
  assert_equal Time.local(2006, 8, 16, 19, 30), time
246
272
 
247
- time = Chronic.parse("this day", :now => @time_2006_08_16_14_00_00, :context => :past)
273
+ time = parse_now("this day", :context => :past)
248
274
  assert_equal Time.local(2006, 8, 16, 7), time
249
275
 
250
- time = Chronic.parse("today", :now => @time_2006_08_16_14_00_00)
276
+ time = parse_now("today")
251
277
  assert_equal Time.local(2006, 8, 16, 19, 30), time
252
278
 
253
- time = Chronic.parse("yesterday", :now => @time_2006_08_16_14_00_00)
279
+ time = parse_now("yesterday")
254
280
  assert_equal Time.local(2006, 8, 15, 12), time
255
281
 
256
- time = Chronic.parse("tomorrow", :now => @time_2006_08_16_14_00_00)
282
+ time = parse_now("tomorrow")
257
283
  assert_equal Time.local(2006, 8, 17, 12), time
258
284
 
259
285
  # day name
260
286
 
261
- time = Chronic.parse("this tuesday", :now => @time_2006_08_16_14_00_00)
287
+ time = parse_now("this tuesday")
262
288
  assert_equal Time.local(2006, 8, 22, 12), time
263
289
 
264
- time = Chronic.parse("next tuesday", :now => @time_2006_08_16_14_00_00)
290
+ time = parse_now("next tuesday")
265
291
  assert_equal Time.local(2006, 8, 22, 12), time
266
292
 
267
- time = Chronic.parse("last tuesday", :now => @time_2006_08_16_14_00_00)
293
+ time = parse_now("last tuesday")
268
294
  assert_equal Time.local(2006, 8, 15, 12), time
269
295
 
270
- time = Chronic.parse("this wed", :now => @time_2006_08_16_14_00_00)
296
+ time = parse_now("this wed")
271
297
  assert_equal Time.local(2006, 8, 23, 12), time
272
298
 
273
- time = Chronic.parse("next wed", :now => @time_2006_08_16_14_00_00)
299
+ time = parse_now("next wed")
274
300
  assert_equal Time.local(2006, 8, 23, 12), time
275
301
 
276
- time = Chronic.parse("last wed", :now => @time_2006_08_16_14_00_00)
302
+ time = parse_now("last wed")
277
303
  assert_equal Time.local(2006, 8, 9, 12), time
278
304
 
279
305
  # day portion
280
306
 
281
- time = Chronic.parse("this morning", :now => @time_2006_08_16_14_00_00)
307
+ time = parse_now("this morning")
282
308
  assert_equal Time.local(2006, 8, 16, 9), time
283
309
 
284
- time = Chronic.parse("tonight", :now => @time_2006_08_16_14_00_00)
310
+ time = parse_now("tonight")
285
311
  assert_equal Time.local(2006, 8, 16, 22), time
286
312
 
287
313
  # second
288
314
 
289
- time = Chronic.parse("this second", :now => @time_2006_08_16_14_00_00)
315
+ time = parse_now("this second")
290
316
  assert_equal Time.local(2006, 8, 16, 14), time
291
317
 
292
- time = Chronic.parse("this second", :now => @time_2006_08_16_14_00_00, :context => :past)
318
+ time = parse_now("this second", :context => :past)
293
319
  assert_equal Time.local(2006, 8, 16, 14), time
294
320
 
295
- time = Chronic.parse("next second", :now => @time_2006_08_16_14_00_00)
321
+ time = parse_now("next second")
296
322
  assert_equal Time.local(2006, 8, 16, 14, 0, 1), time
297
323
 
298
- time = Chronic.parse("last second", :now => @time_2006_08_16_14_00_00)
324
+ time = parse_now("last second")
299
325
  assert_equal Time.local(2006, 8, 16, 13, 59, 59), time
300
326
  end
301
327
 
302
328
  def test_parse_guess_grr
303
- time = Chronic.parse("yesterday at 4:00", :now => @time_2006_08_16_14_00_00)
329
+ time = parse_now("yesterday at 4:00")
304
330
  assert_equal Time.local(2006, 8, 15, 16), time
305
331
 
306
- time = Chronic.parse("today at 9:00", :now => @time_2006_08_16_14_00_00)
332
+ time = parse_now("today at 9:00")
307
333
  assert_equal Time.local(2006, 8, 16, 9), time
308
334
 
309
- time = Chronic.parse("today at 2100", :now => @time_2006_08_16_14_00_00)
335
+ time = parse_now("today at 2100")
310
336
  assert_equal Time.local(2006, 8, 16, 21), time
311
337
 
312
- time = Chronic.parse("this day at 0900", :now => @time_2006_08_16_14_00_00)
338
+ time = parse_now("this day at 0900")
313
339
  assert_equal Time.local(2006, 8, 16, 9), time
314
340
 
315
- time = Chronic.parse("tomorrow at 0900", :now => @time_2006_08_16_14_00_00)
341
+ time = parse_now("tomorrow at 0900")
316
342
  assert_equal Time.local(2006, 8, 17, 9), time
317
343
 
318
- time = Chronic.parse("yesterday at 4:00", :now => @time_2006_08_16_14_00_00, :ambiguous_time_range => :none)
344
+ time = parse_now("yesterday at 4:00", :ambiguous_time_range => :none)
319
345
  assert_equal Time.local(2006, 8, 15, 4), time
320
346
 
321
- time = Chronic.parse("last friday at 4:00", :now => @time_2006_08_16_14_00_00)
347
+ time = parse_now("last friday at 4:00")
322
348
  assert_equal Time.local(2006, 8, 11, 16), time
323
349
 
324
- time = Chronic.parse("next wed 4:00", :now => @time_2006_08_16_14_00_00)
350
+ time = parse_now("next wed 4:00")
325
351
  assert_equal Time.local(2006, 8, 23, 16), time
326
352
 
327
- time = Chronic.parse("yesterday afternoon", :now => @time_2006_08_16_14_00_00)
353
+ time = parse_now("yesterday afternoon")
328
354
  assert_equal Time.local(2006, 8, 15, 15), time
329
355
 
330
- time = Chronic.parse("last week tuesday", :now => @time_2006_08_16_14_00_00)
356
+ time = parse_now("last week tuesday")
331
357
  assert_equal Time.local(2006, 8, 8, 12), time
332
358
  end
333
359
 
334
360
  def test_parse_guess_grrr
335
- time = Chronic.parse("today at 6:00pm", :now => @time_2006_08_16_14_00_00)
361
+ time = parse_now("today at 6:00pm")
336
362
  assert_equal Time.local(2006, 8, 16, 18), time
337
363
 
338
- time = Chronic.parse("today at 6:00am", :now => @time_2006_08_16_14_00_00)
364
+ time = parse_now("today at 6:00am")
339
365
  assert_equal Time.local(2006, 8, 16, 6), time
340
366
 
341
- time = Chronic.parse("this day 1800", :now => @time_2006_08_16_14_00_00)
367
+ time = parse_now("this day 1800")
342
368
  assert_equal Time.local(2006, 8, 16, 18), time
343
369
 
344
- time = Chronic.parse("yesterday at 4:00pm", :now => @time_2006_08_16_14_00_00)
370
+ time = parse_now("yesterday at 4:00pm")
345
371
  assert_equal Time.local(2006, 8, 15, 16), time
346
372
  end
347
373
 
348
374
  def test_parse_guess_rgr
349
- time = Chronic.parse("afternoon yesterday", :now => @time_2006_08_16_14_00_00)
375
+ time = parse_now("afternoon yesterday")
350
376
  assert_equal Time.local(2006, 8, 15, 15), time
351
377
 
352
- time = Chronic.parse("tuesday last week", :now => @time_2006_08_16_14_00_00)
378
+ time = parse_now("tuesday last week")
353
379
  assert_equal Time.local(2006, 8, 8, 12), time
354
380
  end
355
381
 
356
382
  def test_parse_guess_s_r_p
357
383
  # past
358
384
 
359
- time = Chronic.parse("3 years ago", :now => @time_2006_08_16_14_00_00)
360
- assert_equal Time.local(2003, 8, 16, 14, 30, 30), time
385
+ time = parse_now("3 years ago")
386
+ assert_equal Time.local(2003, 8, 16, 14), time
361
387
 
362
- time = Chronic.parse("1 month ago", :now => @time_2006_08_16_14_00_00)
363
- assert_equal Time.local(2006, 7, 16, 14, 30, 30), time
388
+ time = parse_now("1 month ago")
389
+ assert_equal Time.local(2006, 7, 16, 14), time
364
390
 
365
- time = Chronic.parse("1 fortnight ago", :now => @time_2006_08_16_14_00_00)
366
- assert_equal Time.local(2006, 8, 2, 14, 30, 30), time
391
+ time = parse_now("1 fortnight ago")
392
+ assert_equal Time.local(2006, 8, 2, 14), time
367
393
 
368
- time = Chronic.parse("2 fortnights ago", :now => @time_2006_08_16_14_00_00)
369
- assert_equal Time.local(2006, 7, 19, 14, 30, 30), time
394
+ time = parse_now("2 fortnights ago")
395
+ assert_equal Time.local(2006, 7, 19, 14), time
370
396
 
371
- time = Chronic.parse("3 weeks ago", :now => @time_2006_08_16_14_00_00)
372
- assert_equal Time.local(2006, 7, 26, 14, 30, 30), time
397
+ time = parse_now("3 weeks ago")
398
+ assert_equal Time.local(2006, 7, 26, 14), time
373
399
 
374
- time = Chronic.parse("3 days ago", :now => @time_2006_08_16_14_00_00)
400
+ time = parse_now("2 weekends ago")
401
+ assert_equal Time.local(2006, 8, 5), time
402
+
403
+ time = parse_now("3 days ago")
375
404
  assert_equal Time.local(2006, 8, 13, 14), time
376
405
 
377
- #time = Chronic.parse("1 monday ago", :now => @time_2006_08_16_14_00_00)
406
+ #time = parse_now("1 monday ago")
378
407
  #assert_equal Time.local(2006, 8, 14, 12), time
379
408
 
380
- time = Chronic.parse("5 mornings ago", :now => @time_2006_08_16_14_00_00)
409
+ time = parse_now("5 mornings ago")
381
410
  assert_equal Time.local(2006, 8, 12, 9), time
382
411
 
383
- time = Chronic.parse("7 hours ago", :now => @time_2006_08_16_14_00_00)
412
+ time = parse_now("7 hours ago")
384
413
  assert_equal Time.local(2006, 8, 16, 7), time
385
414
 
386
- time = Chronic.parse("3 minutes ago", :now => @time_2006_08_16_14_00_00)
415
+ time = parse_now("3 minutes ago")
387
416
  assert_equal Time.local(2006, 8, 16, 13, 57), time
388
417
 
389
- time = Chronic.parse("20 seconds before now", :now => @time_2006_08_16_14_00_00)
418
+ time = parse_now("20 seconds before now")
390
419
  assert_equal Time.local(2006, 8, 16, 13, 59, 40), time
391
420
 
392
421
  # future
393
422
 
394
- time = Chronic.parse("3 years from now", :now => @time_2006_08_16_14_00_00)
395
- assert_equal Time.local(2009, 8, 16, 14, 30, 30), time
423
+ time = parse_now("3 years from now")
424
+ assert_equal Time.local(2009, 8, 16, 14, 0, 0), time
425
+
426
+ time = parse_now("6 months hence")
427
+ assert_equal Time.local(2007, 2, 16, 14), time
428
+
429
+ time = parse_now("3 fortnights hence")
430
+ assert_equal Time.local(2006, 9, 27, 14), time
396
431
 
397
- time = Chronic.parse("6 months hence", :now => @time_2006_08_16_14_00_00)
398
- assert_equal Time.local(2007, 2, 16, 14, 30, 30), time
432
+ time = parse_now("1 week from now")
433
+ assert_equal Time.local(2006, 8, 23, 14, 0, 0), time
399
434
 
400
- time = Chronic.parse("3 fortnights hence", :now => @time_2006_08_16_14_00_00)
401
- assert_equal Time.local(2006, 9, 27, 14, 30, 30), time
435
+ time = parse_now("1 weekend from now")
436
+ assert_equal Time.local(2006, 8, 19), time
402
437
 
403
- time = Chronic.parse("1 week from now", :now => @time_2006_08_16_14_00_00)
404
- assert_equal Time.local(2006, 8, 23, 14, 30, 30), time
438
+ time = parse_now("2 weekends from now")
439
+ assert_equal Time.local(2006, 8, 26), time
405
440
 
406
- time = Chronic.parse("1 day hence", :now => @time_2006_08_16_14_00_00)
441
+ time = parse_now("1 day hence")
407
442
  assert_equal Time.local(2006, 8, 17, 14), time
408
443
 
409
- time = Chronic.parse("5 mornings hence", :now => @time_2006_08_16_14_00_00)
444
+ time = parse_now("5 mornings hence")
410
445
  assert_equal Time.local(2006, 8, 21, 9), time
411
446
 
412
- time = Chronic.parse("1 hour from now", :now => @time_2006_08_16_14_00_00)
447
+ time = parse_now("1 hour from now")
413
448
  assert_equal Time.local(2006, 8, 16, 15), time
414
449
 
415
- time = Chronic.parse("20 minutes hence", :now => @time_2006_08_16_14_00_00)
450
+ time = parse_now("20 minutes hence")
416
451
  assert_equal Time.local(2006, 8, 16, 14, 20), time
417
452
 
418
- time = Chronic.parse("20 seconds from now", :now => @time_2006_08_16_14_00_00)
453
+ time = parse_now("20 seconds from now")
419
454
  assert_equal Time.local(2006, 8, 16, 14, 0, 20), time
455
+
456
+ time = Chronic.parse("2 months ago", :now => Time.parse("2007-03-07 23:30"))
457
+ assert_equal Time.local(2007, 1, 7, 23, 30), time
420
458
  end
421
459
 
422
460
  def test_parse_guess_p_s_r
423
- time = Chronic.parse("in 3 hours", :now => @time_2006_08_16_14_00_00)
461
+ time = parse_now("in 3 hours")
424
462
  assert_equal Time.local(2006, 8, 16, 17), time
425
463
  end
426
464
 
427
465
  def test_parse_guess_s_r_p_a
428
466
  # past
429
467
 
430
- time = Chronic.parse("3 years ago tomorrow", :now => @time_2006_08_16_14_00_00)
468
+ time = parse_now("3 years ago tomorrow")
431
469
  assert_equal Time.local(2003, 8, 17, 12), time
432
470
 
433
- time = Chronic.parse("3 years ago this friday", :now => @time_2006_08_16_14_00_00)
471
+ time = parse_now("3 years ago this friday")
434
472
  assert_equal Time.local(2003, 8, 18, 12), time
435
473
 
436
- time = Chronic.parse("3 months ago saturday at 5:00 pm", :now => @time_2006_08_16_14_00_00)
474
+ time = parse_now("3 months ago saturday at 5:00 pm")
437
475
  assert_equal Time.local(2006, 5, 19, 17), time
438
476
 
439
- time = Chronic.parse("2 days from this second", :now => @time_2006_08_16_14_00_00)
477
+ time = parse_now("2 days from this second")
440
478
  assert_equal Time.local(2006, 8, 18, 14), time
441
479
 
442
- time = Chronic.parse("7 hours before tomorrow at midnight", :now => @time_2006_08_16_14_00_00)
480
+ time = parse_now("7 hours before tomorrow at midnight")
443
481
  assert_equal Time.local(2006, 8, 17, 17), time
444
482
 
445
483
  # future
446
484
  end
447
485
 
448
486
  def test_parse_guess_o_r_s_r
449
- time = Chronic.parse("3rd wednesday in november", :now => @time_2006_08_16_14_00_00)
487
+ time = parse_now("3rd wednesday in november")
450
488
  assert_equal Time.local(2006, 11, 15, 12), time
451
489
 
452
- time = Chronic.parse("10th wednesday in november", :now => @time_2006_08_16_14_00_00)
490
+ time = parse_now("10th wednesday in november")
453
491
  assert_equal nil, time
454
492
  end
455
493
 
456
494
  def test_parse_guess_o_r_g_r
457
- time = Chronic.parse("3rd month next year", :now => @time_2006_08_16_14_00_00)
495
+ time = parse_now("3rd month next year")
458
496
  assert_equal Time.local(2007, 3, 16, 12, 30), time
459
497
 
460
- time = Chronic.parse("3rd thursday this september", :now => @time_2006_08_16_14_00_00)
498
+ time = parse_now("3rd thursday this september")
461
499
  assert_equal Time.local(2006, 9, 21, 12), time
462
500
 
463
- time = Chronic.parse("4th day last week", :now => @time_2006_08_16_14_00_00)
501
+ time = parse_now("4th day last week")
464
502
  assert_equal Time.local(2006, 8, 9, 12), time
465
503
  end
466
504
 
467
505
  def test_parse_guess_nonsense
468
- time = Chronic.parse("some stupid nonsense", :now => @time_2006_08_16_14_00_00)
506
+ time = parse_now("some stupid nonsense")
469
507
  assert_equal nil, time
470
508
  end
471
509
 
472
510
  def test_parse_span
473
- span = Chronic.parse("friday", :now => @time_2006_08_16_14_00_00, :guess => false)
511
+ span = parse_now("friday", :guess => false)
474
512
  assert_equal Time.local(2006, 8, 18), span.begin
475
513
  assert_equal Time.local(2006, 8, 19), span.end
476
514
 
477
- span = Chronic.parse("november", :now => @time_2006_08_16_14_00_00, :guess => false)
515
+ span = parse_now("november", :guess => false)
478
516
  assert_equal Time.local(2006, 11), span.begin
479
517
  assert_equal Time.local(2006, 12), span.end
518
+
519
+ span = Chronic.parse("weekend" , :now => @time_2006_08_16_14_00_00, :guess => false)
520
+ assert_equal Time.local(2006, 8, 19), span.begin
521
+ assert_equal Time.local(2006, 8, 21), span.end
522
+ end
523
+
524
+ def test_parse_words
525
+ assert_equal parse_now("33 days from now"), parse_now("thirty-three days from now")
526
+ assert_equal parse_now("2867532 seconds from now"), parse_now("two million eight hundred and sixty seven thousand five hundred and thirty two seconds from now")
527
+ assert_equal parse_now("may 10th"), parse_now("may tenth")
528
+ end
529
+
530
+ def test_parse_only_complete_pointers
531
+ assert_equal parse_now("eat pasty buns today at 2pm"), @time_2006_08_16_14_00_00
532
+ assert_equal parse_now("futuristically speaking today at 2pm"), @time_2006_08_16_14_00_00
533
+ assert_equal parse_now("meeting today at 2pm"), @time_2006_08_16_14_00_00
480
534
  end
481
535
 
482
536
  def test_argument_validation
@@ -489,4 +543,8 @@ class TestParsing < Test::Unit::TestCase
489
543
  end
490
544
  end
491
545
 
546
+ private
547
+ def parse_now(string, options={})
548
+ Chronic.parse(string, {:now => TIME_2006_08_16_14_00_00 }.merge(options))
549
+ end
492
550
  end