chronic 0.2.2 → 0.4.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/HISTORY.md +103 -0
- data/LICENSE +21 -0
- data/Manifest.txt +16 -5
- data/README.md +171 -0
- data/Rakefile +136 -15
- data/benchmark/benchmark.rb +13 -0
- data/chronic.gemspec +82 -0
- data/lib/chronic/chronic.rb +65 -147
- data/lib/chronic/grabber.rb +13 -17
- data/lib/chronic/handlers.rb +216 -138
- data/lib/chronic/mini_date.rb +27 -0
- data/lib/chronic/numerizer.rb +120 -0
- data/lib/chronic/ordinal.rb +11 -16
- data/lib/chronic/pointer.rb +11 -13
- data/lib/chronic/repeater.rb +117 -106
- data/lib/chronic/repeaters/repeater_day.rb +50 -43
- data/lib/chronic/repeaters/repeater_day_name.rb +49 -42
- data/lib/chronic/repeaters/repeater_day_portion.rb +82 -80
- data/lib/chronic/repeaters/repeater_fortnight.rb +60 -53
- data/lib/chronic/repeaters/repeater_hour.rb +50 -43
- data/lib/chronic/repeaters/repeater_minute.rb +50 -43
- data/lib/chronic/repeaters/repeater_month.rb +63 -56
- data/lib/chronic/repeaters/repeater_month_name.rb +91 -82
- data/lib/chronic/repeaters/repeater_season.rb +125 -20
- data/lib/chronic/repeaters/repeater_season_name.rb +43 -22
- data/lib/chronic/repeaters/repeater_second.rb +40 -33
- data/lib/chronic/repeaters/repeater_time.rb +118 -103
- data/lib/chronic/repeaters/repeater_week.rb +64 -57
- data/lib/chronic/repeaters/repeater_weekday.rb +86 -0
- data/lib/chronic/repeaters/repeater_weekend.rb +58 -51
- data/lib/chronic/repeaters/repeater_year.rb +58 -50
- data/lib/chronic/scalar.rb +37 -27
- data/lib/chronic/separator.rb +34 -37
- data/lib/chronic/span.rb +31 -0
- data/lib/chronic/tag.rb +26 -0
- data/lib/chronic/time_zone.rb +9 -10
- data/lib/chronic/token.rb +35 -0
- data/lib/chronic.rb +34 -25
- data/test/helper.rb +6 -0
- data/test/test_Chronic.rb +22 -18
- data/test/test_DaylightSavings.rb +118 -0
- data/test/test_Handler.rb +37 -38
- data/test/test_Numerizer.rb +66 -42
- data/test/test_RepeaterDayName.rb +15 -16
- data/test/test_RepeaterFortnight.rb +16 -17
- data/test/test_RepeaterHour.rb +22 -19
- data/test/test_RepeaterMinute.rb +34 -0
- data/test/test_RepeaterMonth.rb +16 -17
- data/test/test_RepeaterMonthName.rb +17 -18
- data/test/test_RepeaterTime.rb +20 -22
- data/test/test_RepeaterWeek.rb +16 -17
- data/test/test_RepeaterWeekday.rb +55 -0
- data/test/test_RepeaterWeekend.rb +21 -22
- data/test/test_RepeaterYear.rb +17 -18
- data/test/test_Span.rb +5 -6
- data/test/test_Time.rb +11 -12
- data/test/test_Token.rb +5 -6
- data/test/test_parsing.rb +409 -200
- metadata +68 -49
- data/History.txt +0 -49
- data/README.txt +0 -149
- data/lib/numerizer/numerizer.rb +0 -103
- data/test/suite.rb +0 -9
data/test/test_parsing.rb
CHANGED
|
@@ -1,592 +1,801 @@
|
|
|
1
|
-
require
|
|
2
|
-
require 'test/unit'
|
|
1
|
+
require File.join(File.dirname(__FILE__), *%w[helper])
|
|
3
2
|
|
|
4
3
|
class TestParsing < Test::Unit::TestCase
|
|
5
4
|
# Wed Aug 16 14:00:00 UTC 2006
|
|
6
5
|
TIME_2006_08_16_14_00_00 = Time.local(2006, 8, 16, 14, 0, 0, 0)
|
|
7
|
-
|
|
6
|
+
|
|
8
7
|
def setup
|
|
9
8
|
@time_2006_08_16_14_00_00 = TIME_2006_08_16_14_00_00
|
|
10
9
|
end
|
|
11
|
-
|
|
10
|
+
|
|
12
11
|
def test_parse_guess_dates
|
|
13
12
|
# rm_sd
|
|
14
13
|
|
|
15
14
|
time = parse_now("may 27")
|
|
16
15
|
assert_equal Time.local(2007, 5, 27, 12), time
|
|
17
|
-
|
|
16
|
+
|
|
18
17
|
time = parse_now("may 28", :context => :past)
|
|
19
18
|
assert_equal Time.local(2006, 5, 28, 12), time
|
|
20
|
-
|
|
19
|
+
|
|
21
20
|
time = parse_now("may 28 5pm", :context => :past)
|
|
22
21
|
assert_equal Time.local(2006, 5, 28, 17), time
|
|
23
|
-
|
|
22
|
+
|
|
24
23
|
time = parse_now("may 28 at 5pm", :context => :past)
|
|
25
24
|
assert_equal Time.local(2006, 5, 28, 17), time
|
|
26
|
-
|
|
25
|
+
|
|
27
26
|
time = parse_now("may 28 at 5:32.19pm", :context => :past)
|
|
28
27
|
assert_equal Time.local(2006, 5, 28, 17, 32, 19), time
|
|
29
|
-
|
|
28
|
+
|
|
29
|
+
# rm_sd for current month
|
|
30
|
+
|
|
31
|
+
time = parse_now("aug 3")
|
|
32
|
+
assert_equal Time.local(2006, 8, 3, 12), time
|
|
33
|
+
|
|
34
|
+
time = parse_now("aug 3", :context => :past)
|
|
35
|
+
assert_equal Time.local(2006, 8, 3, 12), time
|
|
36
|
+
|
|
37
|
+
time = parse_now("aug 20")
|
|
38
|
+
assert_equal Time.local(2006, 8, 20, 12), time
|
|
39
|
+
|
|
40
|
+
time = parse_now("aug 20", :context => :future)
|
|
41
|
+
assert_equal Time.local(2006, 8, 20, 12), time
|
|
42
|
+
|
|
43
|
+
# rm_sd_on
|
|
44
|
+
|
|
45
|
+
time = parse_now("5pm on may 28")
|
|
46
|
+
assert_equal Time.local(2007, 5, 28, 17), time
|
|
47
|
+
|
|
48
|
+
time = parse_now("5pm may 28")
|
|
49
|
+
assert_equal Time.local(2007, 5, 28, 17), time
|
|
50
|
+
|
|
51
|
+
time = parse_now("5 on may 28", :ambiguous_time_range => :none)
|
|
52
|
+
assert_equal Time.local(2007, 5, 28, 05), time
|
|
53
|
+
|
|
30
54
|
# rm_od
|
|
31
|
-
|
|
55
|
+
|
|
32
56
|
time = parse_now("may 27th")
|
|
33
57
|
assert_equal Time.local(2007, 5, 27, 12), time
|
|
34
|
-
|
|
58
|
+
|
|
35
59
|
time = parse_now("may 27th", :context => :past)
|
|
36
60
|
assert_equal Time.local(2006, 5, 27, 12), time
|
|
37
|
-
|
|
61
|
+
|
|
38
62
|
time = parse_now("may 27th 5:00 pm", :context => :past)
|
|
39
63
|
assert_equal Time.local(2006, 5, 27, 17), time
|
|
40
|
-
|
|
64
|
+
|
|
41
65
|
time = parse_now("may 27th at 5pm", :context => :past)
|
|
42
66
|
assert_equal Time.local(2006, 5, 27, 17), time
|
|
43
|
-
|
|
67
|
+
|
|
44
68
|
time = parse_now("may 27th at 5", :ambiguous_time_range => :none)
|
|
45
69
|
assert_equal Time.local(2007, 5, 27, 5), time
|
|
46
|
-
|
|
70
|
+
|
|
71
|
+
# rm_od_on
|
|
72
|
+
|
|
73
|
+
time = parse_now("5:00 pm may 27th", :context => :past)
|
|
74
|
+
assert_equal Time.local(2006, 5, 27, 17), time
|
|
75
|
+
|
|
76
|
+
time = parse_now("05:00 pm may 27th", :context => :past)
|
|
77
|
+
assert_equal Time.local(2006, 5, 27, 17), time
|
|
78
|
+
|
|
79
|
+
time = parse_now("5pm on may 27th", :context => :past)
|
|
80
|
+
assert_equal Time.local(2006, 5, 27, 17), time
|
|
81
|
+
|
|
82
|
+
time = parse_now("5 on may 27th", :ambiguous_time_range => :none)
|
|
83
|
+
assert_equal Time.local(2007, 5, 27, 5), time
|
|
84
|
+
|
|
47
85
|
# rm_sy
|
|
48
|
-
|
|
86
|
+
|
|
49
87
|
time = parse_now("June 1979")
|
|
50
88
|
assert_equal Time.local(1979, 6, 16, 0), time
|
|
51
|
-
|
|
89
|
+
|
|
52
90
|
time = parse_now("dec 79")
|
|
53
91
|
assert_equal Time.local(1979, 12, 16, 12), time
|
|
54
|
-
|
|
92
|
+
|
|
93
|
+
# rm_od_sy
|
|
94
|
+
|
|
95
|
+
time = parse_now("November 18th 2010")
|
|
96
|
+
assert_equal Time.local(2010, 11, 18, 12), time
|
|
97
|
+
|
|
98
|
+
time = parse_now("November 18th, 2010")
|
|
99
|
+
assert_equal Time.local(2010, 11, 18, 12), time
|
|
100
|
+
|
|
101
|
+
time = parse_now("November 18th 2010 midnight")
|
|
102
|
+
assert_equal Time.local(2010, 11, 19, 0), time
|
|
103
|
+
|
|
104
|
+
time = parse_now("November 18th 2010 at midnight")
|
|
105
|
+
assert_equal Time.local(2010, 11, 19, 0), time
|
|
106
|
+
|
|
107
|
+
time = parse_now("November 18th 2010 at 4")
|
|
108
|
+
assert_equal Time.local(2010, 11, 18, 16), time
|
|
109
|
+
|
|
110
|
+
time = parse_now("November 18th 2010 at 4", :ambiguous_time_range => :none)
|
|
111
|
+
assert_equal Time.local(2010, 11, 18, 4), time
|
|
112
|
+
|
|
113
|
+
time = parse_now("March 30th, 1979")
|
|
114
|
+
assert_equal Time.local(1979, 3, 30, 12), time
|
|
115
|
+
|
|
116
|
+
time = parse_now("March 30th 79")
|
|
117
|
+
assert_equal Time.local(1979, 3, 30, 12), time
|
|
118
|
+
|
|
119
|
+
time = parse_now("March 30th 79 4:30")
|
|
120
|
+
assert_equal Time.local(1979, 3, 30, 16, 30), time
|
|
121
|
+
|
|
122
|
+
time = parse_now("March 30th 79 at 4:30", :ambiguous_time_range => :none)
|
|
123
|
+
assert_equal Time.local(1979, 3, 30, 4, 30), time
|
|
124
|
+
|
|
55
125
|
# rm_sd_sy
|
|
56
|
-
|
|
126
|
+
|
|
127
|
+
time = parse_now("November 18, 2010")
|
|
128
|
+
assert_equal Time.local(2010, 11, 18, 12), time
|
|
129
|
+
|
|
130
|
+
time = parse_now("February 14, 2004")
|
|
131
|
+
assert_equal Time.local(2004, 2, 14, 12), time
|
|
132
|
+
|
|
57
133
|
time = parse_now("jan 3 2010")
|
|
58
134
|
assert_equal Time.local(2010, 1, 3, 12), time
|
|
59
|
-
|
|
135
|
+
|
|
60
136
|
time = parse_now("jan 3 2010 midnight")
|
|
61
137
|
assert_equal Time.local(2010, 1, 4, 0), time
|
|
62
|
-
|
|
138
|
+
|
|
63
139
|
time = parse_now("jan 3 2010 at midnight")
|
|
64
140
|
assert_equal Time.local(2010, 1, 4, 0), time
|
|
65
|
-
|
|
141
|
+
|
|
66
142
|
time = parse_now("jan 3 2010 at 4", :ambiguous_time_range => :none)
|
|
67
143
|
assert_equal Time.local(2010, 1, 3, 4), time
|
|
68
|
-
|
|
144
|
+
|
|
69
145
|
#time = parse_now("January 12, '00")
|
|
70
146
|
#assert_equal Time.local(2000, 1, 12, 12), time
|
|
71
|
-
|
|
147
|
+
|
|
148
|
+
time = parse_now("may 27, 1979")
|
|
149
|
+
assert_equal Time.local(1979, 5, 27, 12), time
|
|
150
|
+
|
|
72
151
|
time = parse_now("may 27 79")
|
|
73
152
|
assert_equal Time.local(1979, 5, 27, 12), time
|
|
74
|
-
|
|
153
|
+
|
|
75
154
|
time = parse_now("may 27 79 4:30")
|
|
76
155
|
assert_equal Time.local(1979, 5, 27, 16, 30), time
|
|
77
|
-
|
|
156
|
+
|
|
78
157
|
time = parse_now("may 27 79 at 4:30", :ambiguous_time_range => :none)
|
|
79
158
|
assert_equal Time.local(1979, 5, 27, 4, 30), time
|
|
80
|
-
|
|
159
|
+
|
|
81
160
|
# sd_rm_sy
|
|
82
161
|
|
|
83
162
|
time = parse_now("3 jan 2010")
|
|
84
163
|
assert_equal Time.local(2010, 1, 3, 12), time
|
|
85
|
-
|
|
164
|
+
|
|
86
165
|
time = parse_now("3 jan 2010 4pm")
|
|
87
166
|
assert_equal Time.local(2010, 1, 3, 16), time
|
|
88
|
-
|
|
167
|
+
|
|
168
|
+
time = parse_now("27 Oct 2006 7:30pm")
|
|
169
|
+
assert_equal Time.local(2006, 10, 27, 19, 30), time
|
|
170
|
+
|
|
89
171
|
# sm_sd_sy
|
|
90
|
-
|
|
172
|
+
|
|
91
173
|
time = parse_now("5/27/1979")
|
|
92
174
|
assert_equal Time.local(1979, 5, 27, 12), time
|
|
93
|
-
|
|
175
|
+
|
|
94
176
|
time = parse_now("5/27/1979 4am")
|
|
95
177
|
assert_equal Time.local(1979, 5, 27, 4), time
|
|
96
|
-
|
|
178
|
+
|
|
97
179
|
# sd_sm_sy
|
|
98
|
-
|
|
180
|
+
|
|
99
181
|
time = parse_now("27/5/1979")
|
|
100
182
|
assert_equal Time.local(1979, 5, 27, 12), time
|
|
101
|
-
|
|
183
|
+
|
|
102
184
|
time = parse_now("27/5/1979 @ 0700")
|
|
103
185
|
assert_equal Time.local(1979, 5, 27, 7), time
|
|
104
|
-
|
|
186
|
+
|
|
105
187
|
# sm_sy
|
|
106
|
-
|
|
188
|
+
|
|
107
189
|
time = parse_now("05/06")
|
|
108
190
|
assert_equal Time.local(2006, 5, 16, 12), time
|
|
109
|
-
|
|
191
|
+
|
|
110
192
|
time = parse_now("12/06")
|
|
111
193
|
assert_equal Time.local(2006, 12, 16, 12), time
|
|
112
|
-
|
|
194
|
+
|
|
113
195
|
time = parse_now("13/06")
|
|
114
196
|
assert_equal nil, time
|
|
115
|
-
|
|
197
|
+
|
|
116
198
|
# sy_sm_sd
|
|
117
|
-
|
|
199
|
+
|
|
118
200
|
time = parse_now("2000-1-1")
|
|
119
201
|
assert_equal Time.local(2000, 1, 1, 12), time
|
|
120
|
-
|
|
202
|
+
|
|
121
203
|
time = parse_now("2006-08-20")
|
|
122
204
|
assert_equal Time.local(2006, 8, 20, 12), time
|
|
123
|
-
|
|
205
|
+
|
|
124
206
|
time = parse_now("2006-08-20 7pm")
|
|
125
207
|
assert_equal Time.local(2006, 8, 20, 19), time
|
|
126
|
-
|
|
208
|
+
|
|
127
209
|
time = parse_now("2006-08-20 03:00")
|
|
128
210
|
assert_equal Time.local(2006, 8, 20, 3), time
|
|
129
|
-
|
|
211
|
+
|
|
130
212
|
time = parse_now("2006-08-20 03:30:30")
|
|
131
213
|
assert_equal Time.local(2006, 8, 20, 3, 30, 30), time
|
|
132
|
-
|
|
214
|
+
|
|
133
215
|
time = parse_now("2006-08-20 15:30:30")
|
|
134
216
|
assert_equal Time.local(2006, 8, 20, 15, 30, 30), time
|
|
135
|
-
|
|
217
|
+
|
|
136
218
|
time = parse_now("2006-08-20 15:30.30")
|
|
137
219
|
assert_equal Time.local(2006, 8, 20, 15, 30, 30), time
|
|
138
|
-
|
|
220
|
+
|
|
139
221
|
# rdn_rm_rd_rt_rtz_ry
|
|
140
|
-
|
|
222
|
+
|
|
141
223
|
time = parse_now("Mon Apr 02 17:00:00 PDT 2007")
|
|
142
|
-
assert_equal
|
|
143
|
-
|
|
224
|
+
assert_equal 1175558400, time.to_i
|
|
225
|
+
|
|
144
226
|
now = Time.now
|
|
145
227
|
time = parse_now(now.to_s)
|
|
146
|
-
assert_equal now.to_s, time.to_s
|
|
147
|
-
|
|
228
|
+
# assert_equal now.to_s, time.to_s
|
|
229
|
+
|
|
148
230
|
# rm_sd_rt
|
|
149
|
-
|
|
231
|
+
|
|
150
232
|
#time = parse_now("jan 5 13:00")
|
|
151
233
|
#assert_equal Time.local(2007, 1, 5, 13), time
|
|
152
|
-
|
|
153
|
-
#
|
|
154
|
-
|
|
234
|
+
|
|
235
|
+
# old dates
|
|
236
|
+
|
|
155
237
|
time = parse_now("may 40")
|
|
156
|
-
assert_equal
|
|
157
|
-
|
|
238
|
+
assert_equal Time.local(2040, 5, 16, 12, 0, 0), time
|
|
239
|
+
|
|
158
240
|
time = parse_now("may 27 40")
|
|
159
|
-
assert_equal
|
|
160
|
-
|
|
241
|
+
assert_equal Time.local(2040, 5, 27, 12, 0, 0), time
|
|
242
|
+
|
|
161
243
|
time = parse_now("1800-08-20")
|
|
162
|
-
assert_equal
|
|
244
|
+
assert_equal Time.local(1800, 8, 20, 12, 0, 0), time
|
|
163
245
|
end
|
|
164
|
-
|
|
165
|
-
def
|
|
166
|
-
|
|
246
|
+
|
|
247
|
+
def test_parse_two_digit_years
|
|
248
|
+
time = parse_now("may 97")
|
|
249
|
+
assert_equal Time.local(1997, 5, 16, 12), time
|
|
250
|
+
|
|
251
|
+
time = parse_now("may 1st 01")
|
|
252
|
+
assert_equal Time.local(2001, 5, 1, 12), time
|
|
253
|
+
|
|
254
|
+
time = parse_now("may 79", :ambiguous_year_future_bias => 10)
|
|
255
|
+
assert_equal Time.local(2079, 5, 16, 12), time
|
|
167
256
|
end
|
|
168
257
|
|
|
169
258
|
def test_parse_guess_r
|
|
170
259
|
time = parse_now("friday")
|
|
171
260
|
assert_equal Time.local(2006, 8, 18, 12), time
|
|
172
|
-
|
|
261
|
+
|
|
173
262
|
time = parse_now("tue")
|
|
174
263
|
assert_equal Time.local(2006, 8, 22, 12), time
|
|
175
|
-
|
|
264
|
+
|
|
176
265
|
time = parse_now("5")
|
|
177
266
|
assert_equal Time.local(2006, 8, 16, 17), time
|
|
178
|
-
|
|
267
|
+
|
|
179
268
|
time = Chronic.parse("5", :now => Time.local(2006, 8, 16, 3, 0, 0, 0), :ambiguous_time_range => :none)
|
|
180
269
|
assert_equal Time.local(2006, 8, 16, 5), time
|
|
181
|
-
|
|
270
|
+
|
|
182
271
|
time = parse_now("13:00")
|
|
183
272
|
assert_equal Time.local(2006, 8, 17, 13), time
|
|
184
|
-
|
|
273
|
+
|
|
185
274
|
time = parse_now("13:45")
|
|
186
275
|
assert_equal Time.local(2006, 8, 17, 13, 45), time
|
|
187
|
-
|
|
276
|
+
|
|
188
277
|
time = parse_now("november")
|
|
189
278
|
assert_equal Time.local(2006, 11, 16), time
|
|
190
279
|
end
|
|
191
|
-
|
|
280
|
+
|
|
192
281
|
def test_parse_guess_rr
|
|
193
282
|
time = parse_now("friday 13:00")
|
|
194
283
|
assert_equal Time.local(2006, 8, 18, 13), time
|
|
195
|
-
|
|
284
|
+
|
|
196
285
|
time = parse_now("monday 4:00")
|
|
197
286
|
assert_equal Time.local(2006, 8, 21, 16), time
|
|
198
|
-
|
|
287
|
+
|
|
199
288
|
time = parse_now("sat 4:00", :ambiguous_time_range => :none)
|
|
200
289
|
assert_equal Time.local(2006, 8, 19, 4), time
|
|
201
|
-
|
|
290
|
+
|
|
202
291
|
time = parse_now("sunday 4:20", :ambiguous_time_range => :none)
|
|
203
292
|
assert_equal Time.local(2006, 8, 20, 4, 20), time
|
|
204
|
-
|
|
293
|
+
|
|
205
294
|
time = parse_now("4 pm")
|
|
206
295
|
assert_equal Time.local(2006, 8, 16, 16), time
|
|
207
|
-
|
|
296
|
+
|
|
208
297
|
time = parse_now("4 am", :ambiguous_time_range => :none)
|
|
209
298
|
assert_equal Time.local(2006, 8, 16, 4), time
|
|
210
|
-
|
|
299
|
+
|
|
300
|
+
time = parse_now("12 pm")
|
|
301
|
+
assert_equal Time.local(2006, 8, 16, 12), time
|
|
302
|
+
|
|
303
|
+
time = parse_now("12:01 pm")
|
|
304
|
+
assert_equal Time.local(2006, 8, 16, 12, 1), time
|
|
305
|
+
|
|
306
|
+
time = parse_now("12:01 am")
|
|
307
|
+
assert_equal Time.local(2006, 8, 16, 0, 1), time
|
|
308
|
+
|
|
309
|
+
time = parse_now("12 am")
|
|
310
|
+
assert_equal Time.local(2006, 8, 16), time
|
|
311
|
+
|
|
211
312
|
time = parse_now("4:00 in the morning")
|
|
212
313
|
assert_equal Time.local(2006, 8, 16, 4), time
|
|
213
|
-
|
|
314
|
+
|
|
315
|
+
time = parse_now("0:10")
|
|
316
|
+
assert_equal Time.local(2006, 8, 17, 0, 10), time
|
|
317
|
+
|
|
214
318
|
time = parse_now("november 4")
|
|
215
319
|
assert_equal Time.local(2006, 11, 4, 12), time
|
|
216
|
-
|
|
320
|
+
|
|
217
321
|
time = parse_now("aug 24")
|
|
218
322
|
assert_equal Time.local(2006, 8, 24, 12), time
|
|
219
323
|
end
|
|
220
|
-
|
|
324
|
+
|
|
221
325
|
def test_parse_guess_rrr
|
|
222
326
|
time = parse_now("friday 1 pm")
|
|
223
327
|
assert_equal Time.local(2006, 8, 18, 13), time
|
|
224
|
-
|
|
328
|
+
|
|
225
329
|
time = parse_now("friday 11 at night")
|
|
226
330
|
assert_equal Time.local(2006, 8, 18, 23), time
|
|
227
|
-
|
|
331
|
+
|
|
228
332
|
time = parse_now("friday 11 in the evening")
|
|
229
333
|
assert_equal Time.local(2006, 8, 18, 23), time
|
|
230
|
-
|
|
334
|
+
|
|
231
335
|
time = parse_now("sunday 6am")
|
|
232
336
|
assert_equal Time.local(2006, 8, 20, 6), time
|
|
233
|
-
|
|
337
|
+
|
|
234
338
|
time = parse_now("friday evening at 7")
|
|
235
339
|
assert_equal Time.local(2006, 8, 18, 19), time
|
|
236
340
|
end
|
|
237
|
-
|
|
341
|
+
|
|
238
342
|
def test_parse_guess_gr
|
|
239
343
|
# year
|
|
240
|
-
|
|
344
|
+
|
|
241
345
|
time = parse_now("this year")
|
|
242
346
|
assert_equal Time.local(2006, 10, 24, 12, 30), time
|
|
243
|
-
|
|
347
|
+
|
|
244
348
|
time = parse_now("this year", :context => :past)
|
|
245
349
|
assert_equal Time.local(2006, 4, 24, 12, 30), time
|
|
246
|
-
|
|
350
|
+
|
|
247
351
|
# month
|
|
248
|
-
|
|
352
|
+
|
|
249
353
|
time = parse_now("this month")
|
|
250
354
|
assert_equal Time.local(2006, 8, 24, 12), time
|
|
251
|
-
|
|
355
|
+
|
|
252
356
|
time = parse_now("this month", :context => :past)
|
|
253
357
|
assert_equal Time.local(2006, 8, 8, 12), time
|
|
254
|
-
|
|
358
|
+
|
|
255
359
|
time = Chronic.parse("next month", :now => Time.local(2006, 11, 15))
|
|
256
360
|
assert_equal Time.local(2006, 12, 16, 12), time
|
|
257
|
-
|
|
361
|
+
|
|
258
362
|
# month name
|
|
259
|
-
|
|
363
|
+
|
|
260
364
|
time = parse_now("last november")
|
|
261
365
|
assert_equal Time.local(2005, 11, 16), time
|
|
262
|
-
|
|
366
|
+
|
|
263
367
|
# fortnight
|
|
264
|
-
|
|
368
|
+
|
|
265
369
|
time = parse_now("this fortnight")
|
|
266
370
|
assert_equal Time.local(2006, 8, 21, 19, 30), time
|
|
267
|
-
|
|
371
|
+
|
|
268
372
|
time = parse_now("this fortnight", :context => :past)
|
|
269
373
|
assert_equal Time.local(2006, 8, 14, 19), time
|
|
270
|
-
|
|
374
|
+
|
|
271
375
|
# week
|
|
272
|
-
|
|
376
|
+
|
|
273
377
|
time = parse_now("this week")
|
|
274
378
|
assert_equal Time.local(2006, 8, 18, 7, 30), time
|
|
275
|
-
|
|
379
|
+
|
|
276
380
|
time = parse_now("this week", :context => :past)
|
|
277
381
|
assert_equal Time.local(2006, 8, 14, 19), time
|
|
278
|
-
|
|
382
|
+
|
|
279
383
|
# weekend
|
|
280
|
-
|
|
384
|
+
|
|
281
385
|
time = parse_now("this weekend")
|
|
282
386
|
assert_equal Time.local(2006, 8, 20), time
|
|
283
|
-
|
|
387
|
+
|
|
284
388
|
time = parse_now("this weekend", :context => :past)
|
|
285
389
|
assert_equal Time.local(2006, 8, 13), time
|
|
286
|
-
|
|
390
|
+
|
|
287
391
|
time = parse_now("last weekend")
|
|
288
392
|
assert_equal Time.local(2006, 8, 13), time
|
|
289
|
-
|
|
393
|
+
|
|
290
394
|
# day
|
|
291
|
-
|
|
395
|
+
|
|
292
396
|
time = parse_now("this day")
|
|
293
|
-
assert_equal Time.local(2006, 8, 16, 19
|
|
294
|
-
|
|
397
|
+
assert_equal Time.local(2006, 8, 16, 19), time
|
|
398
|
+
|
|
295
399
|
time = parse_now("this day", :context => :past)
|
|
296
400
|
assert_equal Time.local(2006, 8, 16, 7), time
|
|
297
|
-
|
|
401
|
+
|
|
298
402
|
time = parse_now("today")
|
|
299
|
-
assert_equal Time.local(2006, 8, 16, 19
|
|
300
|
-
|
|
403
|
+
assert_equal Time.local(2006, 8, 16, 19), time
|
|
404
|
+
|
|
301
405
|
time = parse_now("yesterday")
|
|
302
406
|
assert_equal Time.local(2006, 8, 15, 12), time
|
|
303
|
-
|
|
407
|
+
|
|
408
|
+
now = Time.parse("2011-05-27 23:10") # after 11pm
|
|
409
|
+
time = parse_now("yesterday", :now => now)
|
|
410
|
+
assert_equal Time.local(2011, 05, 26, 12), time
|
|
411
|
+
|
|
304
412
|
time = parse_now("tomorrow")
|
|
305
413
|
assert_equal Time.local(2006, 8, 17, 12), time
|
|
306
|
-
|
|
414
|
+
|
|
307
415
|
# day name
|
|
308
|
-
|
|
416
|
+
|
|
309
417
|
time = parse_now("this tuesday")
|
|
310
418
|
assert_equal Time.local(2006, 8, 22, 12), time
|
|
311
|
-
|
|
419
|
+
|
|
312
420
|
time = parse_now("next tuesday")
|
|
313
421
|
assert_equal Time.local(2006, 8, 22, 12), time
|
|
314
|
-
|
|
422
|
+
|
|
315
423
|
time = parse_now("last tuesday")
|
|
316
424
|
assert_equal Time.local(2006, 8, 15, 12), time
|
|
317
|
-
|
|
425
|
+
|
|
318
426
|
time = parse_now("this wed")
|
|
319
427
|
assert_equal Time.local(2006, 8, 23, 12), time
|
|
320
|
-
|
|
428
|
+
|
|
321
429
|
time = parse_now("next wed")
|
|
322
430
|
assert_equal Time.local(2006, 8, 23, 12), time
|
|
323
|
-
|
|
431
|
+
|
|
324
432
|
time = parse_now("last wed")
|
|
325
433
|
assert_equal Time.local(2006, 8, 9, 12), time
|
|
326
|
-
|
|
434
|
+
|
|
327
435
|
# day portion
|
|
328
|
-
|
|
436
|
+
|
|
329
437
|
time = parse_now("this morning")
|
|
330
438
|
assert_equal Time.local(2006, 8, 16, 9), time
|
|
331
|
-
|
|
439
|
+
|
|
332
440
|
time = parse_now("tonight")
|
|
333
441
|
assert_equal Time.local(2006, 8, 16, 22), time
|
|
334
|
-
|
|
442
|
+
|
|
335
443
|
# minute
|
|
336
|
-
|
|
444
|
+
|
|
337
445
|
time = parse_now("next minute")
|
|
338
446
|
assert_equal Time.local(2006, 8, 16, 14, 1, 30), time
|
|
339
|
-
|
|
447
|
+
|
|
340
448
|
# second
|
|
341
|
-
|
|
449
|
+
|
|
342
450
|
time = parse_now("this second")
|
|
343
451
|
assert_equal Time.local(2006, 8, 16, 14), time
|
|
344
|
-
|
|
452
|
+
|
|
345
453
|
time = parse_now("this second", :context => :past)
|
|
346
454
|
assert_equal Time.local(2006, 8, 16, 14), time
|
|
347
|
-
|
|
455
|
+
|
|
348
456
|
time = parse_now("next second")
|
|
349
457
|
assert_equal Time.local(2006, 8, 16, 14, 0, 1), time
|
|
350
|
-
|
|
458
|
+
|
|
351
459
|
time = parse_now("last second")
|
|
352
460
|
assert_equal Time.local(2006, 8, 16, 13, 59, 59), time
|
|
353
461
|
end
|
|
354
|
-
|
|
355
|
-
def test_parse_guess_grr
|
|
462
|
+
|
|
463
|
+
def test_parse_guess_grr
|
|
356
464
|
time = parse_now("yesterday at 4:00")
|
|
357
465
|
assert_equal Time.local(2006, 8, 15, 16), time
|
|
358
|
-
|
|
466
|
+
|
|
359
467
|
time = parse_now("today at 9:00")
|
|
360
468
|
assert_equal Time.local(2006, 8, 16, 9), time
|
|
361
|
-
|
|
469
|
+
|
|
362
470
|
time = parse_now("today at 2100")
|
|
363
471
|
assert_equal Time.local(2006, 8, 16, 21), time
|
|
364
|
-
|
|
472
|
+
|
|
365
473
|
time = parse_now("this day at 0900")
|
|
366
474
|
assert_equal Time.local(2006, 8, 16, 9), time
|
|
367
|
-
|
|
475
|
+
|
|
368
476
|
time = parse_now("tomorrow at 0900")
|
|
369
477
|
assert_equal Time.local(2006, 8, 17, 9), time
|
|
370
|
-
|
|
478
|
+
|
|
371
479
|
time = parse_now("yesterday at 4:00", :ambiguous_time_range => :none)
|
|
372
480
|
assert_equal Time.local(2006, 8, 15, 4), time
|
|
373
|
-
|
|
481
|
+
|
|
374
482
|
time = parse_now("last friday at 4:00")
|
|
375
483
|
assert_equal Time.local(2006, 8, 11, 16), time
|
|
376
|
-
|
|
484
|
+
|
|
377
485
|
time = parse_now("next wed 4:00")
|
|
378
486
|
assert_equal Time.local(2006, 8, 23, 16), time
|
|
379
|
-
|
|
487
|
+
|
|
380
488
|
time = parse_now("yesterday afternoon")
|
|
381
489
|
assert_equal Time.local(2006, 8, 15, 15), time
|
|
382
|
-
|
|
490
|
+
|
|
383
491
|
time = parse_now("last week tuesday")
|
|
384
492
|
assert_equal Time.local(2006, 8, 8, 12), time
|
|
385
|
-
|
|
493
|
+
|
|
386
494
|
time = parse_now("tonight at 7")
|
|
387
495
|
assert_equal Time.local(2006, 8, 16, 19), time
|
|
388
|
-
|
|
496
|
+
|
|
389
497
|
time = parse_now("tonight 7")
|
|
390
498
|
assert_equal Time.local(2006, 8, 16, 19), time
|
|
391
|
-
|
|
499
|
+
|
|
392
500
|
time = parse_now("7 tonight")
|
|
393
501
|
assert_equal Time.local(2006, 8, 16, 19), time
|
|
394
502
|
end
|
|
395
|
-
|
|
503
|
+
|
|
396
504
|
def test_parse_guess_grrr
|
|
397
505
|
time = parse_now("today at 6:00pm")
|
|
398
506
|
assert_equal Time.local(2006, 8, 16, 18), time
|
|
399
|
-
|
|
507
|
+
|
|
400
508
|
time = parse_now("today at 6:00am")
|
|
401
509
|
assert_equal Time.local(2006, 8, 16, 6), time
|
|
402
|
-
|
|
510
|
+
|
|
403
511
|
time = parse_now("this day 1800")
|
|
404
512
|
assert_equal Time.local(2006, 8, 16, 18), time
|
|
405
|
-
|
|
513
|
+
|
|
406
514
|
time = parse_now("yesterday at 4:00pm")
|
|
407
515
|
assert_equal Time.local(2006, 8, 15, 16), time
|
|
408
|
-
|
|
516
|
+
|
|
409
517
|
time = parse_now("tomorrow evening at 7")
|
|
410
518
|
assert_equal Time.local(2006, 8, 17, 19), time
|
|
411
|
-
|
|
519
|
+
|
|
412
520
|
time = parse_now("tomorrow morning at 5:30")
|
|
413
521
|
assert_equal Time.local(2006, 8, 17, 5, 30), time
|
|
522
|
+
|
|
523
|
+
time = parse_now("next monday at 12:01 am")
|
|
524
|
+
assert_equal Time.local(2006, 8, 21, 00, 1), time
|
|
525
|
+
|
|
526
|
+
time = parse_now("next monday at 12:01 pm")
|
|
527
|
+
assert_equal Time.local(2006, 8, 21, 12, 1), time
|
|
528
|
+
|
|
529
|
+
# with context
|
|
530
|
+
time = parse_now("sunday at 8:15pm", :context => :past)
|
|
531
|
+
assert_equal Time.local(2006, 8, 13, 20, 15), time
|
|
414
532
|
end
|
|
415
|
-
|
|
533
|
+
|
|
416
534
|
def test_parse_guess_rgr
|
|
417
535
|
time = parse_now("afternoon yesterday")
|
|
418
536
|
assert_equal Time.local(2006, 8, 15, 15), time
|
|
419
|
-
|
|
537
|
+
|
|
420
538
|
time = parse_now("tuesday last week")
|
|
421
539
|
assert_equal Time.local(2006, 8, 8, 12), time
|
|
422
540
|
end
|
|
423
|
-
|
|
541
|
+
|
|
424
542
|
def test_parse_guess_s_r_p
|
|
425
543
|
# past
|
|
426
|
-
|
|
544
|
+
|
|
427
545
|
time = parse_now("3 years ago")
|
|
428
546
|
assert_equal Time.local(2003, 8, 16, 14), time
|
|
429
|
-
|
|
547
|
+
|
|
430
548
|
time = parse_now("1 month ago")
|
|
431
549
|
assert_equal Time.local(2006, 7, 16, 14), time
|
|
432
|
-
|
|
550
|
+
|
|
433
551
|
time = parse_now("1 fortnight ago")
|
|
434
552
|
assert_equal Time.local(2006, 8, 2, 14), time
|
|
435
|
-
|
|
553
|
+
|
|
436
554
|
time = parse_now("2 fortnights ago")
|
|
437
555
|
assert_equal Time.local(2006, 7, 19, 14), time
|
|
438
|
-
|
|
556
|
+
|
|
439
557
|
time = parse_now("3 weeks ago")
|
|
440
558
|
assert_equal Time.local(2006, 7, 26, 14), time
|
|
441
|
-
|
|
559
|
+
|
|
442
560
|
time = parse_now("2 weekends ago")
|
|
443
561
|
assert_equal Time.local(2006, 8, 5), time
|
|
444
|
-
|
|
562
|
+
|
|
445
563
|
time = parse_now("3 days ago")
|
|
446
564
|
assert_equal Time.local(2006, 8, 13, 14), time
|
|
447
|
-
|
|
565
|
+
|
|
448
566
|
#time = parse_now("1 monday ago")
|
|
449
567
|
#assert_equal Time.local(2006, 8, 14, 12), time
|
|
450
|
-
|
|
568
|
+
|
|
451
569
|
time = parse_now("5 mornings ago")
|
|
452
570
|
assert_equal Time.local(2006, 8, 12, 9), time
|
|
453
|
-
|
|
571
|
+
|
|
454
572
|
time = parse_now("7 hours ago")
|
|
455
573
|
assert_equal Time.local(2006, 8, 16, 7), time
|
|
456
|
-
|
|
574
|
+
|
|
457
575
|
time = parse_now("3 minutes ago")
|
|
458
576
|
assert_equal Time.local(2006, 8, 16, 13, 57), time
|
|
459
|
-
|
|
577
|
+
|
|
460
578
|
time = parse_now("20 seconds before now")
|
|
461
579
|
assert_equal Time.local(2006, 8, 16, 13, 59, 40), time
|
|
462
580
|
|
|
463
581
|
# future
|
|
464
|
-
|
|
582
|
+
|
|
465
583
|
time = parse_now("3 years from now")
|
|
466
584
|
assert_equal Time.local(2009, 8, 16, 14, 0, 0), time
|
|
467
|
-
|
|
585
|
+
|
|
468
586
|
time = parse_now("6 months hence")
|
|
469
587
|
assert_equal Time.local(2007, 2, 16, 14), time
|
|
470
|
-
|
|
588
|
+
|
|
471
589
|
time = parse_now("3 fortnights hence")
|
|
472
590
|
assert_equal Time.local(2006, 9, 27, 14), time
|
|
473
|
-
|
|
591
|
+
|
|
474
592
|
time = parse_now("1 week from now")
|
|
475
593
|
assert_equal Time.local(2006, 8, 23, 14, 0, 0), time
|
|
476
|
-
|
|
594
|
+
|
|
477
595
|
time = parse_now("1 weekend from now")
|
|
478
596
|
assert_equal Time.local(2006, 8, 19), time
|
|
479
|
-
|
|
597
|
+
|
|
480
598
|
time = parse_now("2 weekends from now")
|
|
481
599
|
assert_equal Time.local(2006, 8, 26), time
|
|
482
|
-
|
|
600
|
+
|
|
483
601
|
time = parse_now("1 day hence")
|
|
484
602
|
assert_equal Time.local(2006, 8, 17, 14), time
|
|
485
|
-
|
|
603
|
+
|
|
486
604
|
time = parse_now("5 mornings hence")
|
|
487
605
|
assert_equal Time.local(2006, 8, 21, 9), time
|
|
488
|
-
|
|
606
|
+
|
|
489
607
|
time = parse_now("1 hour from now")
|
|
490
608
|
assert_equal Time.local(2006, 8, 16, 15), time
|
|
491
|
-
|
|
609
|
+
|
|
492
610
|
time = parse_now("20 minutes hence")
|
|
493
611
|
assert_equal Time.local(2006, 8, 16, 14, 20), time
|
|
494
|
-
|
|
612
|
+
|
|
495
613
|
time = parse_now("20 seconds from now")
|
|
496
614
|
assert_equal Time.local(2006, 8, 16, 14, 0, 20), time
|
|
497
|
-
|
|
615
|
+
|
|
498
616
|
time = Chronic.parse("2 months ago", :now => Time.parse("2007-03-07 23:30"))
|
|
499
617
|
assert_equal Time.local(2007, 1, 7, 23, 30), time
|
|
500
618
|
end
|
|
501
|
-
|
|
619
|
+
|
|
502
620
|
def test_parse_guess_p_s_r
|
|
503
621
|
time = parse_now("in 3 hours")
|
|
504
622
|
assert_equal Time.local(2006, 8, 16, 17), time
|
|
505
623
|
end
|
|
506
|
-
|
|
624
|
+
|
|
507
625
|
def test_parse_guess_s_r_p_a
|
|
508
626
|
# past
|
|
509
|
-
|
|
627
|
+
|
|
510
628
|
time = parse_now("3 years ago tomorrow")
|
|
511
629
|
assert_equal Time.local(2003, 8, 17, 12), time
|
|
512
|
-
|
|
630
|
+
|
|
513
631
|
time = parse_now("3 years ago this friday")
|
|
514
632
|
assert_equal Time.local(2003, 8, 18, 12), time
|
|
515
|
-
|
|
633
|
+
|
|
516
634
|
time = parse_now("3 months ago saturday at 5:00 pm")
|
|
517
635
|
assert_equal Time.local(2006, 5, 19, 17), time
|
|
518
|
-
|
|
636
|
+
|
|
519
637
|
time = parse_now("2 days from this second")
|
|
520
638
|
assert_equal Time.local(2006, 8, 18, 14), time
|
|
521
|
-
|
|
639
|
+
|
|
522
640
|
time = parse_now("7 hours before tomorrow at midnight")
|
|
523
641
|
assert_equal Time.local(2006, 8, 17, 17), time
|
|
524
|
-
|
|
642
|
+
|
|
525
643
|
# future
|
|
526
644
|
end
|
|
527
|
-
|
|
645
|
+
|
|
528
646
|
def test_parse_guess_o_r_s_r
|
|
529
647
|
time = parse_now("3rd wednesday in november")
|
|
530
648
|
assert_equal Time.local(2006, 11, 15, 12), time
|
|
531
|
-
|
|
649
|
+
|
|
532
650
|
time = parse_now("10th wednesday in november")
|
|
533
651
|
assert_equal nil, time
|
|
652
|
+
|
|
653
|
+
# time = parse_now("3rd wednesday in 2007")
|
|
654
|
+
# assert_equal Time.local(2007, 1, 20, 12), time
|
|
534
655
|
end
|
|
535
|
-
|
|
656
|
+
|
|
536
657
|
def test_parse_guess_o_r_g_r
|
|
537
|
-
time = parse_now("3rd month next year")
|
|
538
|
-
assert_equal Time.local(2007, 3
|
|
539
|
-
|
|
658
|
+
time = parse_now("3rd month next year", :guess => false)
|
|
659
|
+
assert_equal Time.local(2007, 3), time.begin
|
|
660
|
+
|
|
661
|
+
time = parse_now("3rd month next year", :guess => false)
|
|
662
|
+
assert_equal Time.local(2007, 3, 1), time.begin
|
|
663
|
+
|
|
540
664
|
time = parse_now("3rd thursday this september")
|
|
541
665
|
assert_equal Time.local(2006, 9, 21, 12), time
|
|
542
|
-
|
|
666
|
+
|
|
667
|
+
now = Time.parse("1/10/2010")
|
|
668
|
+
time = parse_now("3rd thursday this november", :now => now)
|
|
669
|
+
assert_equal Time.local(2010, 11, 18, 12), time
|
|
670
|
+
|
|
543
671
|
time = parse_now("4th day last week")
|
|
544
672
|
assert_equal Time.local(2006, 8, 9, 12), time
|
|
545
673
|
end
|
|
546
|
-
|
|
674
|
+
|
|
547
675
|
def test_parse_guess_nonsense
|
|
548
676
|
time = parse_now("some stupid nonsense")
|
|
549
677
|
assert_equal nil, time
|
|
678
|
+
|
|
679
|
+
time = parse_now("Ham Sandwich")
|
|
680
|
+
assert_equal nil, time
|
|
550
681
|
end
|
|
551
|
-
|
|
682
|
+
|
|
552
683
|
def test_parse_span
|
|
553
684
|
span = parse_now("friday", :guess => false)
|
|
554
685
|
assert_equal Time.local(2006, 8, 18), span.begin
|
|
555
686
|
assert_equal Time.local(2006, 8, 19), span.end
|
|
556
|
-
|
|
687
|
+
|
|
557
688
|
span = parse_now("november", :guess => false)
|
|
558
689
|
assert_equal Time.local(2006, 11), span.begin
|
|
559
690
|
assert_equal Time.local(2006, 12), span.end
|
|
560
|
-
|
|
691
|
+
|
|
561
692
|
span = Chronic.parse("weekend" , :now => @time_2006_08_16_14_00_00, :guess => false)
|
|
562
693
|
assert_equal Time.local(2006, 8, 19), span.begin
|
|
563
694
|
assert_equal Time.local(2006, 8, 21), span.end
|
|
564
695
|
end
|
|
565
|
-
|
|
696
|
+
|
|
697
|
+
def test_parse_with_endian_precedence
|
|
698
|
+
date = '11/02/2007'
|
|
699
|
+
|
|
700
|
+
expect_for_middle_endian = Time.local(2007, 11, 2, 12)
|
|
701
|
+
expect_for_little_endian = Time.local(2007, 2, 11, 12)
|
|
702
|
+
|
|
703
|
+
# default precedence should be toward middle endianness
|
|
704
|
+
assert_equal expect_for_middle_endian, Chronic.parse(date)
|
|
705
|
+
|
|
706
|
+
assert_equal expect_for_middle_endian, Chronic.parse(date, :endian_precedence => [:middle, :little])
|
|
707
|
+
|
|
708
|
+
assert_equal expect_for_little_endian, Chronic.parse(date, :endian_precedence => [:little, :middle])
|
|
709
|
+
end
|
|
710
|
+
|
|
566
711
|
def test_parse_words
|
|
567
712
|
assert_equal parse_now("33 days from now"), parse_now("thirty-three days from now")
|
|
568
713
|
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")
|
|
569
714
|
assert_equal parse_now("may 10th"), parse_now("may tenth")
|
|
570
715
|
end
|
|
571
|
-
|
|
716
|
+
|
|
572
717
|
def test_parse_only_complete_pointers
|
|
573
718
|
assert_equal parse_now("eat pasty buns today at 2pm"), @time_2006_08_16_14_00_00
|
|
574
719
|
assert_equal parse_now("futuristically speaking today at 2pm"), @time_2006_08_16_14_00_00
|
|
575
720
|
assert_equal parse_now("meeting today at 2pm"), @time_2006_08_16_14_00_00
|
|
576
721
|
end
|
|
577
|
-
|
|
722
|
+
|
|
723
|
+
def test_am_pm
|
|
724
|
+
assert_equal Time.local(2006, 8, 16), parse_now("8/16/2006 at 12am")
|
|
725
|
+
assert_equal Time.local(2006, 8, 16, 12), parse_now("8/16/2006 at 12pm")
|
|
726
|
+
end
|
|
727
|
+
|
|
728
|
+
def test_a_p
|
|
729
|
+
assert_equal Time.local(2006, 8, 16, 0, 15), parse_now("8/16/2006 at 12:15a")
|
|
730
|
+
assert_equal Time.local(2006, 8, 16, 18, 30), parse_now("8/16/2006 at 6:30p")
|
|
731
|
+
end
|
|
732
|
+
|
|
578
733
|
def test_argument_validation
|
|
579
734
|
assert_raise(Chronic::InvalidArgumentException) do
|
|
580
735
|
time = Chronic.parse("may 27", :foo => :bar)
|
|
581
736
|
end
|
|
582
|
-
|
|
737
|
+
|
|
583
738
|
assert_raise(Chronic::InvalidArgumentException) do
|
|
584
739
|
time = Chronic.parse("may 27", :context => :bar)
|
|
585
740
|
end
|
|
586
741
|
end
|
|
587
|
-
|
|
742
|
+
|
|
743
|
+
def test_seasons
|
|
744
|
+
t = parse_now("this spring", :guess => false)
|
|
745
|
+
assert_equal Time.local(2007, 3, 20), t.begin
|
|
746
|
+
assert_equal Time.local(2007, 6, 20), t.end
|
|
747
|
+
|
|
748
|
+
t = parse_now("this winter", :guess => false)
|
|
749
|
+
assert_equal Time.local(2006, 12, 22), t.begin
|
|
750
|
+
assert_equal Time.local(2007, 3, 19), t.end
|
|
751
|
+
|
|
752
|
+
t = parse_now("last spring", :guess => false)
|
|
753
|
+
assert_equal Time.local(2006, 3, 20), t.begin
|
|
754
|
+
assert_equal Time.local(2006, 6, 20), t.end
|
|
755
|
+
|
|
756
|
+
t = parse_now("last winter", :guess => false)
|
|
757
|
+
assert_equal Time.local(2005, 12, 22), t.begin
|
|
758
|
+
assert_equal Time.local(2006, 3, 19), t.end
|
|
759
|
+
|
|
760
|
+
t = parse_now("next spring", :guess => false)
|
|
761
|
+
assert_equal Time.local(2007, 3, 20), t.begin
|
|
762
|
+
assert_equal Time.local(2007, 6, 20), t.end
|
|
763
|
+
end
|
|
764
|
+
|
|
765
|
+
# regression
|
|
766
|
+
|
|
767
|
+
# def test_partial
|
|
768
|
+
# assert_equal '', parse_now("2 hours")
|
|
769
|
+
# end
|
|
770
|
+
|
|
771
|
+
def test_days_in_november
|
|
772
|
+
t1 = Chronic.parse('1st thursday in november', :now => Time.local(2007))
|
|
773
|
+
assert_equal Time.local(2007, 11, 1, 12), t1
|
|
774
|
+
|
|
775
|
+
t1 = Chronic.parse('1st friday in november', :now => Time.local(2007))
|
|
776
|
+
assert_equal Time.local(2007, 11, 2, 12), t1
|
|
777
|
+
|
|
778
|
+
t1 = Chronic.parse('1st saturday in november', :now => Time.local(2007))
|
|
779
|
+
assert_equal Time.local(2007, 11, 3, 12), t1
|
|
780
|
+
|
|
781
|
+
# t1 = Chronic.parse('1st sunday in november', :now => Time.local(2007))
|
|
782
|
+
# assert_equal Time.local(2007, 11, 4, 12), t1
|
|
783
|
+
|
|
784
|
+
# Chronic.debug = true
|
|
785
|
+
#
|
|
786
|
+
# t1 = Chronic.parse('1st monday in november', :now => Time.local(2007))
|
|
787
|
+
# assert_equal Time.local(2007, 11, 5, 11), t1
|
|
788
|
+
end
|
|
789
|
+
|
|
790
|
+
def test_now_changes
|
|
791
|
+
t1 = Chronic.parse("now")
|
|
792
|
+
sleep 0.1
|
|
793
|
+
t2 = Chronic.parse("now")
|
|
794
|
+
assert_not_equal t1, t2
|
|
795
|
+
end
|
|
796
|
+
|
|
588
797
|
private
|
|
589
798
|
def parse_now(string, options={})
|
|
590
799
|
Chronic.parse(string, {:now => TIME_2006_08_16_14_00_00 }.merge(options))
|
|
591
800
|
end
|
|
592
|
-
end
|
|
801
|
+
end
|