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