chronic-l10n 0.0.1.pre

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.
@@ -0,0 +1,997 @@
1
+ # encoding: utf-8
2
+ require 'helper'
3
+
4
+ class TestParsingPtBr < TestCase
5
+ # Wed Aug 16 14:00:00 UTC 2006
6
+ TIME_2006_08_16_14_00_00 = Time.local(2006, 8, 16, 14, 0, 0, 0)
7
+
8
+ def setup
9
+ @time_2006_08_16_14_00_00 = TIME_2006_08_16_14_00_00
10
+ @locale_before = Chronic.locale
11
+ Chronic.locale = :'pt-BR'
12
+ end
13
+
14
+ def teardown
15
+ Chronic.locale = @locale_before
16
+ end
17
+
18
+ def test_handle_rmn_sd
19
+ time = parse_now("3 de agosto")
20
+ assert_equal Time.local(2006, 8, 3, 12), time
21
+
22
+ time = parse_now("3 de agosto", :context => :past)
23
+ assert_equal Time.local(2006, 8, 3, 12), time
24
+
25
+ time = parse_now("20 de agosto")
26
+ assert_equal Time.local(2006, 8, 20, 12), time
27
+
28
+ time = parse_now("20 de agosto", :context => :future)
29
+ assert_equal Time.local(2006, 8, 20, 12), time
30
+
31
+ time = parse_now("27 de maio")
32
+ assert_equal Time.local(2007, 5, 27, 12), time
33
+
34
+ time = parse_now("28 de maio", :context => :past)
35
+ assert_equal Time.local(2006, 5, 28, 12), time
36
+
37
+ time = parse_now("28 de maio 5pm", :context => :past)
38
+ assert_equal Time.local(2006, 5, 28, 17), time
39
+
40
+ time = parse_now("28 de maio às 17", :context => :future)
41
+ assert_equal Time.local(2007, 5, 28, 17), time
42
+
43
+ time = parse_now("28 de maio as 5 da tarde", :context => :past)
44
+ assert_equal Time.local(2006, 5, 28, 17), time
45
+
46
+ time = parse_now("28 de maio as 5:32.19pm", :context => :past)
47
+ assert_equal Time.local(2006, 5, 28, 17, 32, 19), time
48
+ end
49
+
50
+ def test_handle_rmn_sd_on
51
+ time = parse_now("5pm maio 28")
52
+ assert_equal Time.local(2007, 5, 28, 17), time
53
+
54
+ time = parse_now("17h, 28 de maio")
55
+ assert_equal Time.local(2007, 5, 28, 17), time
56
+
57
+ time = parse_now("5 maio 28", :ambiguous_time_range => :none)
58
+ assert_equal Time.local(2007, 5, 28, 05), time
59
+ end
60
+
61
+ #def test_handle_sd_rmn
62
+ #time = parse_now("22 February")
63
+ #assert_equal Time.local(2007, 2, 22, 12), time
64
+
65
+ #time = parse_now("31 of may at 6:30pm")
66
+ #assert_equal Time.local(2007, 5, 31, 18, 30), time
67
+
68
+ #time = parse_now("11 december 8am")
69
+ #assert_equal Time.local(2006, 12, 11, 8), time
70
+ #end
71
+
72
+ #def test_handle_rmn_od_on
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
+ #end
85
+
86
+ #def test_handle_rmn_sy
87
+ #time = parse_now("may 97")
88
+ #assert_equal Time.local(1997, 5, 16, 12), time
89
+
90
+ #time = parse_now("may 33", :ambiguous_year_future_bias => 10)
91
+ #assert_equal Time.local(2033, 5, 16, 12), time
92
+
93
+ #time = parse_now("may 32")
94
+ #assert_equal Time.local(2032, 5, 16, 12, 0, 0), time
95
+ #end
96
+
97
+ #def test_handle_rdn_rmn_sd_t_tz_sy
98
+ #time = parse_now("Mon Apr 02 17:00:00 PDT 2007")
99
+ #assert_equal 1175558400, time.to_i
100
+ #end
101
+
102
+ #def test_handle_sy_sm_sd_t_tz
103
+ #time = parse_now("2011-07-03 22:11:35 +0100")
104
+ #assert_equal 1309727495, time.to_i
105
+
106
+ #time = parse_now("2011-07-03 22:11:35 +01:00")
107
+ #assert_equal 1309727495, time.to_i
108
+
109
+ #time = parse_now("2011-07-03 21:11:35 UTC")
110
+ #assert_equal 1309727495, time.to_i
111
+ #end
112
+
113
+ #def test_handle_rmn_sd_sy
114
+ #time = parse_now("November 18, 2010")
115
+ #assert_equal Time.local(2010, 11, 18, 12), time
116
+
117
+ #time = parse_now("Jan 1,2010")
118
+ #assert_equal Time.local(2010, 1, 1, 12), time
119
+
120
+ #time = parse_now("February 14, 2004")
121
+ #assert_equal Time.local(2004, 2, 14, 12), time
122
+
123
+ #time = parse_now("jan 3 2010")
124
+ #assert_equal Time.local(2010, 1, 3, 12), time
125
+
126
+ #time = parse_now("jan 3 2010 midnight")
127
+ #assert_equal Time.local(2010, 1, 4, 0), time
128
+
129
+ #time = parse_now("jan 3 2010 at midnight")
130
+ #assert_equal Time.local(2010, 1, 4, 0), time
131
+
132
+ #time = parse_now("jan 3 2010 at 4", :ambiguous_time_range => :none)
133
+ #assert_equal Time.local(2010, 1, 3, 4), time
134
+
135
+ #time = parse_now("may 27, 1979")
136
+ #assert_equal Time.local(1979, 5, 27, 12), time
137
+
138
+ #time = parse_now("may 27 79")
139
+ #assert_equal Time.local(1979, 5, 27, 12), time
140
+
141
+ #time = parse_now("may 27 79 4:30")
142
+ #assert_equal Time.local(1979, 5, 27, 16, 30), time
143
+
144
+ #time = parse_now("may 27 79 at 4:30", :ambiguous_time_range => :none)
145
+ #assert_equal Time.local(1979, 5, 27, 4, 30), time
146
+
147
+ #time = parse_now("may 27 32")
148
+ #assert_equal Time.local(2032, 5, 27, 12, 0, 0), time
149
+ #end
150
+
151
+ #def test_handle_rmn_od_sy
152
+ #time = parse_now("may 1st 01")
153
+ #assert_equal Time.local(2001, 5, 1, 12), time
154
+
155
+ #time = parse_now("November 18th 2010")
156
+ #assert_equal Time.local(2010, 11, 18, 12), time
157
+
158
+ #time = parse_now("November 18th, 2010")
159
+ #assert_equal Time.local(2010, 11, 18, 12), time
160
+
161
+ #time = parse_now("November 18th 2010 midnight")
162
+ #assert_equal Time.local(2010, 11, 19, 0), time
163
+
164
+ #time = parse_now("November 18th 2010 at midnight")
165
+ #assert_equal Time.local(2010, 11, 19, 0), time
166
+
167
+ #time = parse_now("November 18th 2010 at 4")
168
+ #assert_equal Time.local(2010, 11, 18, 16), time
169
+
170
+ #time = parse_now("November 18th 2010 at 4", :ambiguous_time_range => :none)
171
+ #assert_equal Time.local(2010, 11, 18, 4), time
172
+
173
+ #time = parse_now("March 30th, 1979")
174
+ #assert_equal Time.local(1979, 3, 30, 12), time
175
+
176
+ #time = parse_now("March 30th 79")
177
+ #assert_equal Time.local(1979, 3, 30, 12), time
178
+
179
+ #time = parse_now("March 30th 79 4:30")
180
+ #assert_equal Time.local(1979, 3, 30, 16, 30), time
181
+
182
+ #time = parse_now("March 30th 79 at 4:30", :ambiguous_time_range => :none)
183
+ #assert_equal Time.local(1979, 3, 30, 4, 30), time
184
+ #end
185
+
186
+ #def test_handle_od_rmn_sy
187
+ #time = parse_now("22nd February 2012")
188
+ #assert_equal Time.local(2012, 2, 22, 12), time
189
+
190
+ #time = parse_now("11th december 79")
191
+ #assert_equal Time.local(1979, 12, 11, 12), time
192
+ #end
193
+
194
+ #def test_handle_sd_rmn_sy
195
+ #time = parse_now("3 jan 2010")
196
+ #assert_equal Time.local(2010, 1, 3, 12), time
197
+
198
+ #time = parse_now("3 jan 2010 4pm")
199
+ #assert_equal Time.local(2010, 1, 3, 16), time
200
+
201
+ #time = parse_now("27 Oct 2006 7:30pm")
202
+ #assert_equal Time.local(2006, 10, 27, 19, 30), time
203
+ #end
204
+
205
+ #def test_handle_sm_sd_sy
206
+ #time = parse_now("5/27/1979")
207
+ #assert_equal Time.local(1979, 5, 27, 12), time
208
+
209
+ #time = parse_now("5/27/1979 4am")
210
+ #assert_equal Time.local(1979, 5, 27, 4), time
211
+
212
+ #time = parse_now("7/12/11")
213
+ #assert_equal Time.local(2011, 7, 12, 12), time
214
+
215
+ #time = parse_now("7/12/11", :endian_precedence => :little)
216
+ #assert_equal Time.local(2011, 12, 7, 12), time
217
+
218
+ #time = parse_now("9/19/2011 6:05:57 PM")
219
+ #assert_equal Time.local(2011, 9, 19, 18, 05, 57), time
220
+
221
+ # month day overflows
222
+ #time = parse_now("30/2/2000")
223
+ #assert_nil time
224
+ #end
225
+
226
+ #def test_handle_sd_sm_sy
227
+ #time = parse_now("27/5/1979")
228
+ #assert_equal Time.local(1979, 5, 27, 12), time
229
+
230
+ #time = parse_now("27/5/1979 @ 0700")
231
+ #assert_equal Time.local(1979, 5, 27, 7), time
232
+
233
+ #time = parse_now("03/18/2012 09:26 pm")
234
+ #assert_equal Time.local(2012, 3, 18, 21, 26), time
235
+ #end
236
+
237
+ #def test_handle_sy_sm_sd
238
+ #time = parse_now("2000-1-1")
239
+ #assert_equal Time.local(2000, 1, 1, 12), time
240
+
241
+ #time = parse_now("2006-08-20")
242
+ #assert_equal Time.local(2006, 8, 20, 12), time
243
+
244
+ #time = parse_now("2006-08-20 7pm")
245
+ #assert_equal Time.local(2006, 8, 20, 19), time
246
+
247
+ #time = parse_now("2006-08-20 03:00")
248
+ #assert_equal Time.local(2006, 8, 20, 3), time
249
+
250
+ #time = parse_now("2006-08-20 03:30:30")
251
+ #assert_equal Time.local(2006, 8, 20, 3, 30, 30), time
252
+
253
+ #time = parse_now("2006-08-20 15:30:30")
254
+ #assert_equal Time.local(2006, 8, 20, 15, 30, 30), time
255
+
256
+ #time = parse_now("2006-08-20 15:30.30")
257
+ #assert_equal Time.local(2006, 8, 20, 15, 30, 30), time
258
+
259
+ #time = parse_now("1902-08-20")
260
+ #assert_equal Time.local(1902, 8, 20, 12, 0, 0), time
261
+ #end
262
+
263
+ #def test_handle_sm_sd
264
+ #time = parse_now("05/06")
265
+ #assert_equal Time.local(2006, 5, 6, 12), time
266
+
267
+ #time = parse_now("05/06", :endian_precedence => [:little, :medium])
268
+ #assert_equal Time.local(2006, 6, 5, 12), time
269
+
270
+ #time = parse_now("13/01")
271
+ #assert_nil time
272
+ #end
273
+
274
+ # def test_handle_sm_sy
275
+ # time = parse_now("05/06")
276
+ # assert_equal Time.local(2006, 5, 16, 12), time
277
+
278
+ # time = parse_now("12/06")
279
+ # assert_equal Time.local(2006, 12, 16, 12), time
280
+
281
+ # time = parse_now("13/06")
282
+ # assert_equal nil, time
283
+ # end
284
+
285
+ #def test_handle_r
286
+ #end
287
+
288
+ #def test_handle_r_g_r
289
+ #end
290
+
291
+ #def test_handle_srp
292
+ #end
293
+
294
+ #def test_handle_s_r_p
295
+ #end
296
+
297
+ #def test_handle_p_s_r
298
+ #end
299
+
300
+ #def test_handle_s_r_p_a
301
+ #end
302
+
303
+ #def test_handle_orr
304
+ #time = parse_now("5th tuesday in january")
305
+ #assert_equal Time.local(2007, 01, 30, 12), time
306
+
307
+ #time = parse_now("5th tuesday in february")
308
+ #assert_equal nil, time
309
+
310
+ #%W(jan feb march april may june july aug sep oct nov dec).each_with_index do |month, index|
311
+ #time = parse_now("5th tuesday in #{month}")
312
+
313
+ #if time then
314
+ #assert_equal time.month, index+1
315
+ #end
316
+ #end
317
+ #end
318
+
319
+ #def test_handle_o_r_s_r
320
+ #time = parse_now("3rd wednesday in november")
321
+ #assert_equal Time.local(2006, 11, 15, 12), time
322
+
323
+ #time = parse_now("10th wednesday in november")
324
+ #assert_equal nil, time
325
+
326
+ # time = parse_now("3rd wednesday in 2007")
327
+ # assert_equal Time.local(2007, 1, 20, 12), time
328
+ #end
329
+
330
+ #def test_handle_o_r_g_r
331
+ #time = parse_now("3rd month next year", :guess => false)
332
+ #assert_equal Time.local(2007, 3), time.begin
333
+
334
+ #time = parse_now("3rd month next year", :guess => false)
335
+ #assert_equal Time.local(2007, 3, 1), time.begin
336
+
337
+ #time = parse_now("3rd thursday this september")
338
+ #assert_equal Time.local(2006, 9, 21, 12), time
339
+
340
+ #now = Time.parse("1/10/2010")
341
+ #time = parse_now("3rd thursday this november", :now => now)
342
+ #assert_equal Time.local(2010, 11, 18, 12), time
343
+
344
+ #time = parse_now("4th day last week")
345
+ #assert_equal Time.local(2006, 8, 9, 12), time
346
+ #end
347
+
348
+ #def test_handle_sm_rmn_sy
349
+ #time = parse_now('30-Mar-11')
350
+ #assert_equal Time.local(2011, 3, 30, 12), time
351
+ #end
352
+
353
+ # end of testing handlers
354
+
355
+ #def test_parse_guess_r
356
+ #time = parse_now("friday")
357
+ #assert_equal Time.local(2006, 8, 18, 12), time
358
+
359
+ #time = parse_now("tue")
360
+ #assert_equal Time.local(2006, 8, 22, 12), time
361
+
362
+ #time = parse_now("5")
363
+ #assert_equal Time.local(2006, 8, 16, 17), time
364
+
365
+ #time = Chronic.parse("5", :now => Time.local(2006, 8, 16, 3, 0, 0, 0), :ambiguous_time_range => :none)
366
+ #assert_equal Time.local(2006, 8, 16, 5), time
367
+
368
+ #time = parse_now("13:00")
369
+ #assert_equal Time.local(2006, 8, 17, 13), time
370
+
371
+ #time = parse_now("13:45")
372
+ #assert_equal Time.local(2006, 8, 17, 13, 45), time
373
+
374
+ #time = parse_now("1:01pm")
375
+ #assert_equal Time.local(2006, 8, 16, 13, 01), time
376
+
377
+ #time = parse_now("2:01pm")
378
+ #assert_equal Time.local(2006, 8, 16, 14, 01), time
379
+
380
+ #time = parse_now("november")
381
+ #assert_equal Time.local(2006, 11, 16), time
382
+ #end
383
+
384
+ #def test_parse_guess_rr
385
+ #time = parse_now("friday 13:00")
386
+ #assert_equal Time.local(2006, 8, 18, 13), time
387
+
388
+ #time = parse_now("monday 4:00")
389
+ #assert_equal Time.local(2006, 8, 21, 16), time
390
+
391
+ #time = parse_now("sat 4:00", :ambiguous_time_range => :none)
392
+ #assert_equal Time.local(2006, 8, 19, 4), time
393
+
394
+ #time = parse_now("sunday 4:20", :ambiguous_time_range => :none)
395
+ #assert_equal Time.local(2006, 8, 20, 4, 20), time
396
+
397
+ #time = parse_now("4 pm")
398
+ #assert_equal Time.local(2006, 8, 16, 16), time
399
+
400
+ #time = parse_now("4 am", :ambiguous_time_range => :none)
401
+ #assert_equal Time.local(2006, 8, 16, 4), time
402
+
403
+ #time = parse_now("12 pm")
404
+ #assert_equal Time.local(2006, 8, 16, 12), time
405
+
406
+ #time = parse_now("12:01 pm")
407
+ #assert_equal Time.local(2006, 8, 16, 12, 1), time
408
+
409
+ #time = parse_now("12:01 am")
410
+ #assert_equal Time.local(2006, 8, 16, 0, 1), time
411
+
412
+ #time = parse_now("12 am")
413
+ #assert_equal Time.local(2006, 8, 16), time
414
+
415
+ #time = parse_now("4:00 in the morning")
416
+ #assert_equal Time.local(2006, 8, 16, 4), time
417
+
418
+ #time = parse_now("0:10")
419
+ #assert_equal Time.local(2006, 8, 17, 0, 10), time
420
+
421
+ #time = parse_now("november 4")
422
+ #assert_equal Time.local(2006, 11, 4, 12), time
423
+
424
+ #time = parse_now("aug 24")
425
+ #assert_equal Time.local(2006, 8, 24, 12), time
426
+ #end
427
+
428
+ #def test_parse_guess_rrr
429
+ #time = parse_now("friday 1 pm")
430
+ #assert_equal Time.local(2006, 8, 18, 13), time
431
+
432
+ #time = parse_now("friday 11 at night")
433
+ #assert_equal Time.local(2006, 8, 18, 23), time
434
+
435
+ #time = parse_now("friday 11 in the evening")
436
+ #assert_equal Time.local(2006, 8, 18, 23), time
437
+
438
+ #time = parse_now("sunday 6am")
439
+ #assert_equal Time.local(2006, 8, 20, 6), time
440
+
441
+ #time = parse_now("friday evening at 7")
442
+ #assert_equal Time.local(2006, 8, 18, 19), time
443
+ #end
444
+
445
+ #def test_parse_guess_gr
446
+ # year
447
+
448
+ #time = parse_now("this year", :guess => false)
449
+ #assert_equal Time.local(2006, 8, 17), time.begin
450
+
451
+ #time = parse_now("this year", :context => :past, :guess => false)
452
+ #assert_equal Time.local(2006, 1, 1), time.begin
453
+
454
+ # month
455
+
456
+ #time = parse_now("this month")
457
+ #assert_equal Time.local(2006, 8, 24, 12), time
458
+
459
+ #time = parse_now("this month", :context => :past)
460
+ #assert_equal Time.local(2006, 8, 8, 12), time
461
+
462
+ #time = Chronic.parse("next month", :now => Time.local(2006, 11, 15))
463
+ #assert_equal Time.local(2006, 12, 16, 12), time
464
+
465
+ # month name
466
+
467
+ #time = parse_now("last november")
468
+ #assert_equal Time.local(2005, 11, 16), time
469
+
470
+ # fortnight
471
+
472
+ #time = parse_now("this fortnight")
473
+ #assert_equal Time.local(2006, 8, 21, 19, 30), time
474
+
475
+ #time = parse_now("this fortnight", :context => :past)
476
+ #assert_equal Time.local(2006, 8, 14, 19), time
477
+
478
+ # week
479
+
480
+ #time = parse_now("this week")
481
+ #assert_equal Time.local(2006, 8, 18, 7, 30), time
482
+
483
+ #time = parse_now("this week", :context => :past)
484
+ #assert_equal Time.local(2006, 8, 14, 19), time
485
+
486
+ # weekend
487
+
488
+ #time = parse_now("this weekend")
489
+ #assert_equal Time.local(2006, 8, 20), time
490
+
491
+ #time = parse_now("this weekend", :context => :past)
492
+ #assert_equal Time.local(2006, 8, 13), time
493
+
494
+ #time = parse_now("last weekend")
495
+ #assert_equal Time.local(2006, 8, 13), time
496
+
497
+ # day
498
+
499
+ #time = parse_now("this day")
500
+ #assert_equal Time.local(2006, 8, 16, 19), time
501
+
502
+ #time = parse_now("this day", :context => :past)
503
+ #assert_equal Time.local(2006, 8, 16, 7), time
504
+
505
+ #time = parse_now("today")
506
+ #assert_equal Time.local(2006, 8, 16, 19), time
507
+
508
+ #time = parse_now("yesterday")
509
+ #assert_equal Time.local(2006, 8, 15, 12), time
510
+
511
+ #now = Time.parse("2011-05-27 23:10") # after 11pm
512
+ #time = parse_now("yesterday", :now => now)
513
+ #assert_equal Time.local(2011, 05, 26, 12), time
514
+
515
+ #time = parse_now("tomorrow")
516
+ #assert_equal Time.local(2006, 8, 17, 12), time
517
+
518
+ # day name
519
+
520
+ #time = parse_now("this tuesday")
521
+ #assert_equal Time.local(2006, 8, 22, 12), time
522
+
523
+ #time = parse_now("next tuesday")
524
+ #assert_equal Time.local(2006, 8, 22, 12), time
525
+
526
+ #time = parse_now("last tuesday")
527
+ #assert_equal Time.local(2006, 8, 15, 12), time
528
+
529
+ #time = parse_now("this wed")
530
+ #assert_equal Time.local(2006, 8, 23, 12), time
531
+
532
+ #time = parse_now("next wed")
533
+ #assert_equal Time.local(2006, 8, 23, 12), time
534
+
535
+ #time = parse_now("last wed")
536
+ #assert_equal Time.local(2006, 8, 9, 12), time
537
+
538
+ #monday = Time.local(2006, 8, 21, 12)
539
+ #assert_equal monday, parse_now("mon")
540
+ #assert_equal monday, parse_now("mun")
541
+
542
+ #tuesday = Time.local(2006, 8, 22, 12)
543
+ #assert_equal tuesday, parse_now("tue")
544
+ #assert_equal tuesday, parse_now("tus")
545
+
546
+ #wednesday = Time.local(2006, 8, 23, 12)
547
+ #assert_equal wednesday, parse_now("wed")
548
+ #assert_equal wednesday, parse_now("wenns")
549
+
550
+ #thursday = Time.local(2006, 8, 17, 12)
551
+ #assert_equal thursday, parse_now("thu")
552
+ #assert_equal thursday, parse_now("thur")
553
+
554
+ #friday = Time.local(2006, 8, 18, 12)
555
+ #assert_equal friday, parse_now("fri")
556
+ #assert_equal friday, parse_now("fry")
557
+
558
+ #saturday = Time.local(2006, 8, 19, 12)
559
+ #assert_equal saturday, parse_now("sat")
560
+ #assert_equal saturday, parse_now("satterday")
561
+
562
+ #sunday = Time.local(2006, 8, 20, 12)
563
+ #assert_equal sunday, parse_now("sun")
564
+ #assert_equal sunday, parse_now("sum")
565
+
566
+ # day portion
567
+
568
+ #time = parse_now("this morning")
569
+ #assert_equal Time.local(2006, 8, 16, 9), time
570
+
571
+ #time = parse_now("tonight")
572
+ #assert_equal Time.local(2006, 8, 16, 22), time
573
+
574
+ # hour
575
+
576
+ #time = parse_now("next hr")
577
+ #assert_equal Time.local(2006, 8, 16, 15, 30, 0), time
578
+
579
+ #time = parse_now("next hrs")
580
+ #assert_equal Time.local(2006, 8, 16, 15, 30, 0), time
581
+
582
+ # minute
583
+
584
+ #time = parse_now("next min")
585
+ #assert_equal Time.local(2006, 8, 16, 14, 1, 30), time
586
+
587
+ #time = parse_now("next mins")
588
+ #assert_equal Time.local(2006, 8, 16, 14, 1, 30), time
589
+
590
+ #time = parse_now("next minute")
591
+ #assert_equal Time.local(2006, 8, 16, 14, 1, 30), time
592
+
593
+ # second
594
+
595
+ #time = parse_now("next sec")
596
+ #assert_equal Time.local(2006, 8, 16, 14, 0, 1), time
597
+
598
+ #time = parse_now("next secs")
599
+ #assert_equal Time.local(2006, 8, 16, 14, 0, 1), time
600
+
601
+ #time = parse_now("this second")
602
+ #assert_equal Time.local(2006, 8, 16, 14), time
603
+
604
+ #time = parse_now("this second", :context => :past)
605
+ #assert_equal Time.local(2006, 8, 16, 14), time
606
+
607
+ #time = parse_now("next second")
608
+ #assert_equal Time.local(2006, 8, 16, 14, 0, 1), time
609
+
610
+ #time = parse_now("last second")
611
+ #assert_equal Time.local(2006, 8, 16, 13, 59, 59), time
612
+ #end
613
+
614
+ #def test_parse_guess_grr
615
+ #time = parse_now("yesterday at 4:00")
616
+ #assert_equal Time.local(2006, 8, 15, 16), time
617
+
618
+ #time = parse_now("today at 9:00")
619
+ #assert_equal Time.local(2006, 8, 16, 9), time
620
+
621
+ #time = parse_now("today at 2100")
622
+ #assert_equal Time.local(2006, 8, 16, 21), time
623
+
624
+ #time = parse_now("this day at 0900")
625
+ #assert_equal Time.local(2006, 8, 16, 9), time
626
+
627
+ #time = parse_now("tomorrow at 0900")
628
+ #assert_equal Time.local(2006, 8, 17, 9), time
629
+
630
+ #time = parse_now("yesterday at 4:00", :ambiguous_time_range => :none)
631
+ #assert_equal Time.local(2006, 8, 15, 4), time
632
+
633
+ #time = parse_now("last friday at 4:00")
634
+ #assert_equal Time.local(2006, 8, 11, 16), time
635
+
636
+ #time = parse_now("next wed 4:00")
637
+ #assert_equal Time.local(2006, 8, 23, 16), time
638
+
639
+ #time = parse_now("yesterday afternoon")
640
+ #assert_equal Time.local(2006, 8, 15, 15), time
641
+
642
+ #time = parse_now("last week tuesday")
643
+ #assert_equal Time.local(2006, 8, 8, 12), time
644
+
645
+ #time = parse_now("tonight at 7")
646
+ #assert_equal Time.local(2006, 8, 16, 19), time
647
+
648
+ #time = parse_now("tonight 7")
649
+ #assert_equal Time.local(2006, 8, 16, 19), time
650
+
651
+ #time = parse_now("7 tonight")
652
+ #assert_equal Time.local(2006, 8, 16, 19), time
653
+ #end
654
+
655
+ #def test_parse_guess_grrr
656
+ #time = parse_now("today at 6:00pm")
657
+ #assert_equal Time.local(2006, 8, 16, 18), time
658
+
659
+ #time = parse_now("today at 6:00am")
660
+ #assert_equal Time.local(2006, 8, 16, 6), time
661
+
662
+ #time = parse_now("this day 1800")
663
+ #assert_equal Time.local(2006, 8, 16, 18), time
664
+
665
+ #time = parse_now("yesterday at 4:00pm")
666
+ #assert_equal Time.local(2006, 8, 15, 16), time
667
+
668
+ #time = parse_now("tomorrow evening at 7")
669
+ #assert_equal Time.local(2006, 8, 17, 19), time
670
+
671
+ #time = parse_now("tomorrow morning at 5:30")
672
+ #assert_equal Time.local(2006, 8, 17, 5, 30), time
673
+
674
+ #time = parse_now("next monday at 12:01 am")
675
+ #assert_equal Time.local(2006, 8, 21, 00, 1), time
676
+
677
+ #time = parse_now("next monday at 12:01 pm")
678
+ #assert_equal Time.local(2006, 8, 21, 12, 1), time
679
+
680
+ # with context
681
+ #time = parse_now("sunday at 8:15pm", :context => :past)
682
+ #assert_equal Time.local(2006, 8, 13, 20, 15), time
683
+ #end
684
+
685
+ #def test_parse_guess_rgr
686
+ #time = parse_now("afternoon yesterday")
687
+ #assert_equal Time.local(2006, 8, 15, 15), time
688
+
689
+ #time = parse_now("tuesday last week")
690
+ #assert_equal Time.local(2006, 8, 8, 12), time
691
+ #end
692
+
693
+ #def test_parse_guess_a_ago
694
+ #time = parse_now("AN hour ago")
695
+ #assert_equal Time.local(2006, 8, 16, 13), time
696
+
697
+ #time = parse_now("A day ago")
698
+ #assert_equal Time.local(2006, 8, 15, 14), time
699
+
700
+ #time = parse_now("a month ago")
701
+ #assert_equal Time.local(2006, 7, 16, 14), time
702
+
703
+ #time = parse_now("a year ago")
704
+ #assert_equal Time.local(2005, 8, 16, 14), time
705
+ #end
706
+
707
+ #def test_parse_guess_s_r_p
708
+ # past
709
+
710
+ #time = parse_now("3 years ago")
711
+ #assert_equal Time.local(2003, 8, 16, 14), time
712
+
713
+ #time = parse_now("1 month ago")
714
+ #assert_equal Time.local(2006, 7, 16, 14), time
715
+
716
+ #time = parse_now("1 fortnight ago")
717
+ #assert_equal Time.local(2006, 8, 2, 14), time
718
+
719
+ #time = parse_now("2 fortnights ago")
720
+ #assert_equal Time.local(2006, 7, 19, 14), time
721
+
722
+ #time = parse_now("3 weeks ago")
723
+ #assert_equal Time.local(2006, 7, 26, 14), time
724
+
725
+ #time = parse_now("2 weekends ago")
726
+ #assert_equal Time.local(2006, 8, 5), time
727
+
728
+ #time = parse_now("3 days ago")
729
+ #assert_equal Time.local(2006, 8, 13, 14), time
730
+
731
+ #time = parse_now("1 monday ago")
732
+ #assert_equal Time.local(2006, 8, 14, 12), time
733
+
734
+ #time = parse_now("5 mornings ago")
735
+ #assert_equal Time.local(2006, 8, 12, 9), time
736
+
737
+ #time = parse_now("7 hours ago")
738
+ #assert_equal Time.local(2006, 8, 16, 7), time
739
+
740
+ #time = parse_now("3 minutes ago")
741
+ #assert_equal Time.local(2006, 8, 16, 13, 57), time
742
+
743
+ #time = parse_now("20 seconds before now")
744
+ #assert_equal Time.local(2006, 8, 16, 13, 59, 40), time
745
+
746
+ # future
747
+
748
+ #time = parse_now("3 years from now")
749
+ #assert_equal Time.local(2009, 8, 16, 14, 0, 0), time
750
+
751
+ #time = parse_now("6 months hence")
752
+ #assert_equal Time.local(2007, 2, 16, 14), time
753
+
754
+ #time = parse_now("3 fortnights hence")
755
+ #assert_equal Time.local(2006, 9, 27, 14), time
756
+
757
+ #time = parse_now("1 week from now")
758
+ #assert_equal Time.local(2006, 8, 23, 14, 0, 0), time
759
+
760
+ #time = parse_now("1 weekend from now")
761
+ #assert_equal Time.local(2006, 8, 19), time
762
+
763
+ #time = parse_now("2 weekends from now")
764
+ #assert_equal Time.local(2006, 8, 26), time
765
+
766
+ #time = parse_now("1 day hence")
767
+ #assert_equal Time.local(2006, 8, 17, 14), time
768
+
769
+ #time = parse_now("5 mornings hence")
770
+ #assert_equal Time.local(2006, 8, 21, 9), time
771
+
772
+ #time = parse_now("1 hour from now")
773
+ #assert_equal Time.local(2006, 8, 16, 15), time
774
+
775
+ #time = parse_now("20 minutes hence")
776
+ #assert_equal Time.local(2006, 8, 16, 14, 20), time
777
+
778
+ #time = parse_now("20 seconds from now")
779
+ #assert_equal Time.local(2006, 8, 16, 14, 0, 20), time
780
+
781
+ #time = Chronic.parse("2 months ago", :now => Time.parse("2007-03-07 23:30"))
782
+ #assert_equal Time.local(2007, 1, 7, 23, 30), time
783
+ #end
784
+
785
+ #def test_parse_guess_p_s_r
786
+ #time = parse_now("in 3 hours")
787
+ #assert_equal Time.local(2006, 8, 16, 17), time
788
+ #end
789
+
790
+ #def test_parse_guess_s_r_p_a
791
+ # past
792
+
793
+ #time = parse_now("3 years ago tomorrow")
794
+ #assert_equal Time.local(2003, 8, 17, 12), time
795
+
796
+ #time = parse_now("3 years ago this friday")
797
+ #assert_equal Time.local(2003, 8, 18, 12), time
798
+
799
+ #time = parse_now("3 months ago saturday at 5:00 pm")
800
+ #assert_equal Time.local(2006, 5, 19, 17), time
801
+
802
+ #time = parse_now("2 days from this second")
803
+ #assert_equal Time.local(2006, 8, 18, 14), time
804
+
805
+ #time = parse_now("7 hours before tomorrow at midnight")
806
+ #assert_equal Time.local(2006, 8, 17, 17), time
807
+
808
+ # future
809
+ #end
810
+
811
+ #def test_parse_guess_o_r_g_r
812
+ #time = parse_now("3rd month next year", :guess => false)
813
+ #assert_equal Time.local(2007, 3), time.begin
814
+
815
+ #time = parse_now("3rd month next year", :guess => false)
816
+ #assert_equal Time.local(2007, 3, 1), time.begin
817
+
818
+ #time = parse_now("3rd thursday this september")
819
+ #assert_equal Time.local(2006, 9, 21, 12), time
820
+
821
+ #now = Time.parse("1/10/2010")
822
+ #time = parse_now("3rd thursday this november", :now => now)
823
+ #assert_equal Time.local(2010, 11, 18, 12), time
824
+
825
+ #time = parse_now("4th day last week")
826
+ #assert_equal Time.local(2006, 8, 9, 12), time
827
+ #end
828
+
829
+ #def test_parse_guess_nonsense
830
+ #time = parse_now("some stupid nonsense")
831
+ #assert_equal nil, time
832
+
833
+ #time = parse_now("Ham Sandwich")
834
+ #assert_equal nil, time
835
+ #end
836
+
837
+ #def test_parse_span
838
+ #span = parse_now("friday", :guess => false)
839
+ #assert_equal Time.local(2006, 8, 18), span.begin
840
+ #assert_equal Time.local(2006, 8, 19), span.end
841
+
842
+ #span = parse_now("november", :guess => false)
843
+ #assert_equal Time.local(2006, 11), span.begin
844
+ #assert_equal Time.local(2006, 12), span.end
845
+
846
+ #span = Chronic.parse("weekend" , :now => @time_2006_08_16_14_00_00, :guess => false)
847
+ #assert_equal Time.local(2006, 8, 19), span.begin
848
+ #assert_equal Time.local(2006, 8, 21), span.end
849
+ #end
850
+
851
+ #def test_parse_with_endian_precedence
852
+ #date = '11/02/2007'
853
+
854
+ #expect_for_middle_endian = Time.local(2007, 11, 2, 12)
855
+ #expect_for_little_endian = Time.local(2007, 2, 11, 12)
856
+
857
+ # default precedence should be toward middle endianness
858
+ #assert_equal expect_for_middle_endian, Chronic.parse(date)
859
+
860
+ #assert_equal expect_for_middle_endian, Chronic.parse(date, :endian_precedence => [:middle, :little])
861
+
862
+ #assert_equal expect_for_little_endian, Chronic.parse(date, :endian_precedence => [:little, :middle])
863
+ #end
864
+
865
+ #def test_parse_words
866
+ #assert_equal parse_now("33 days from now"), parse_now("thirty-three days from now")
867
+ #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")
868
+ #assert_equal parse_now("may 10th"), parse_now("may tenth")
869
+ #assert_equal parse_now("second monday in january"), parse_now("2nd monday in january")
870
+ #end
871
+
872
+ #def test_parse_only_complete_pointers
873
+ #assert_equal parse_now("eat pasty buns today at 2pm"), @time_2006_08_16_14_00_00
874
+ #assert_equal parse_now("futuristically speaking today at 2pm"), @time_2006_08_16_14_00_00
875
+ #assert_equal parse_now("meeting today at 2pm"), @time_2006_08_16_14_00_00
876
+ #end
877
+
878
+ #def test_am_pm
879
+ #assert_equal Time.local(2006, 8, 16), parse_now("8/16/2006 at 12am")
880
+ #assert_equal Time.local(2006, 8, 16, 12), parse_now("8/16/2006 at 12pm")
881
+ #end
882
+
883
+ #def test_a_p
884
+ #assert_equal Time.local(2006, 8, 16, 0, 15), parse_now("8/16/2006 at 12:15a")
885
+ #assert_equal Time.local(2006, 8, 16, 18, 30), parse_now("8/16/2006 at 6:30p")
886
+ #end
887
+
888
+ #def test_argument_validation
889
+ #assert_raises(ArgumentError) do
890
+ #time = Chronic.parse("may 27", :foo => :bar)
891
+ #end
892
+
893
+ #assert_raises(ArgumentError) do
894
+ #time = Chronic.parse("may 27", :context => :bar)
895
+ #end
896
+ #end
897
+
898
+ #def test_seasons
899
+ #t = parse_now("this spring", :guess => false)
900
+ #assert_equal Time.local(2007, 3, 20), t.begin
901
+ #assert_equal Time.local(2007, 6, 20), t.end
902
+
903
+ #t = parse_now("this winter", :guess => false)
904
+ #assert_equal Time.local(2006, 12, 22), t.begin
905
+ #assert_equal Time.local(2007, 3, 19), t.end
906
+
907
+ #t = parse_now("last spring", :guess => false)
908
+ #assert_equal Time.local(2006, 3, 20), t.begin
909
+ #assert_equal Time.local(2006, 6, 20), t.end
910
+
911
+ #t = parse_now("last winter", :guess => false)
912
+ #assert_equal Time.local(2005, 12, 22), t.begin
913
+ #assert_equal Time.local(2006, 3, 19), t.end
914
+
915
+ #t = parse_now("next spring", :guess => false)
916
+ #assert_equal Time.local(2007, 3, 20), t.begin
917
+ #assert_equal Time.local(2007, 6, 20), t.end
918
+ #end
919
+
920
+ # regression
921
+
922
+ # def test_partial
923
+ # assert_equal '', parse_now("2 hours")
924
+ # end
925
+
926
+ #def test_days_in_november
927
+ #t1 = Chronic.parse('1st thursday in november', :now => Time.local(2007))
928
+ #assert_equal Time.local(2007, 11, 1, 12), t1
929
+
930
+ #t1 = Chronic.parse('1st friday in november', :now => Time.local(2007))
931
+ #assert_equal Time.local(2007, 11, 2, 12), t1
932
+
933
+ #t1 = Chronic.parse('1st saturday in november', :now => Time.local(2007))
934
+ #assert_equal Time.local(2007, 11, 3, 12), t1
935
+
936
+ # t1 = Chronic.parse('1st sunday in november', :now => Time.local(2007))
937
+ # assert_equal Time.local(2007, 11, 4, 12), t1
938
+
939
+ # Chronic.debug = true
940
+
941
+ # t1 = Chronic.parse('1st monday in november', :now => Time.local(2007))
942
+ # assert_equal Time.local(2007, 11, 5, 11), t1
943
+ #end
944
+
945
+ #def test_now_changes
946
+ #t1 = Chronic.parse("now")
947
+ #sleep 0.1
948
+ #t2 = Chronic.parse("now")
949
+ #refute_equal t1, t2
950
+ #end
951
+
952
+ #def test_noon
953
+ #t1 = Chronic.parse('2011-01-01 at noon', :ambiguous_time_range => :none)
954
+ #assert_equal Time.local(2011, 1, 1, 12, 0), t1
955
+ #end
956
+
957
+ #def test_handle_rdn_rmn_sd
958
+ #time = parse_now("Thu Aug 10")
959
+ #assert_equal Time.local(2006, 8, 10, 12), time
960
+
961
+ #time = parse_now("Thursday July 31")
962
+ #assert_equal Time.local(2006, 7, 31, 12), time
963
+
964
+ #time = parse_now("Thursday December 31")
965
+ #assert_equal Time.local(2006, 12, 31, 12), time
966
+ #end
967
+
968
+ #def test_handle_rdn_rmn_sd_sy
969
+ #time = parse_now("Thu Aug 10 2006")
970
+ #assert_equal Time.local(2006, 8, 10, 12), time
971
+
972
+ #time = parse_now("Thursday July 31 2006")
973
+ #assert_equal Time.local(2006, 7, 31, 12), time
974
+
975
+ #time = parse_now("Thursday December 31 2006")
976
+ #assert_equal Time.local(2006, 12, 31, 12), time
977
+
978
+ #time = parse_now("Thursday December 30 2006")
979
+ #assert_equal Time.local(2006, 12, 30, 12), time
980
+ #end
981
+
982
+ #def test_handle_rdn_rmn_od
983
+ #time = parse_now("Thu Aug 10th")
984
+ #assert_equal Time.local(2006, 8, 10, 12), time
985
+
986
+ #time = parse_now("Thursday July 31st")
987
+ #assert_equal Time.local(2006, 7, 31, 12), time
988
+
989
+ #time = parse_now("Thursday December 31st")
990
+ #assert_equal Time.local(2006, 12, 31, 12), time
991
+ #end
992
+
993
+ private
994
+ def parse_now(string, options={})
995
+ Chronic.parse(string, {:now => TIME_2006_08_16_14_00_00 }.merge(options))
996
+ end
997
+ end