chronic 0.1.6 → 0.2.3

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