quandl_babelfish 0.0.10 → 0.0.11

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.
@@ -1,528 +1,537 @@
1
- require 'spec_helper'
2
-
3
- include Quandl::Babelfish
4
- describe NumberMaid do
5
-
6
- it 'should remove unwanted characters from dates (eg.  )' do
7
- a=194.chr+160.chr
8
- dates = ["2005#{a}","#{a}2006",'2007','2008']
9
- dates = DateMaid::sweep(dates)
10
- dates[0].should == Date.new(2005,12,31)
11
- dates[1].should == Date.new(2006,12,31)
12
- dates[2].should == Date.new(2007,12,31)
13
- dates[3].should == Date.new(2008,12,31)
14
- end
15
-
16
- it 'should transform a parseable date into valid data (US) YYYY year' do
17
- dates = ['01/10/2011','1/11/2011','1/12/2011','1/13/2011']
18
-
19
- dates = DateMaid::sweep(dates)
20
- dates[0].should == Date.new(2011,1,10)
21
- dates[1].should == Date.new(2011,1,11)
22
- dates[2].should == Date.new(2011,1,12)
23
- dates[3].should == Date.new(2011,1,13)
24
- end
25
-
26
- it 'should calculate dates from UNIX timestamps (to UTC)' do
27
- dates = [1279324800,1279411200,1279497600,1279584000]
28
-
29
- dates = DateMaid::sweep(dates)
30
- dates[0].should == Date.new(2010,7,17)
31
- dates[1].should == Date.new(2010,7,18)
32
- dates[2].should == Date.new(2010,7,19)
33
- dates[3].should == Date.new(2010,7,20)
34
- end
35
-
36
- it 'should transform a parseable date into valid data (US) YY year' do
37
- dates = ['01/10/11','1/11/11','1/12/11','1/13/11,4']
38
- dates = DateMaid::sweep(dates)
39
- dates[0].should == Date.new(2011,1,10)
40
- dates[1].should == Date.new(2011,1,11)
41
- dates[2].should == Date.new(2011,1,12)
42
- dates[3].should == Date.new(2011,1,13)
43
- end
44
-
45
- it 'should throw error when 1 of the dates is invalid' do
46
- # It ain't a leap year
47
- dates = ['2/29/2011','01/01/2011','1/2/2011','1/3/2011','12/1/2011']
48
- lambda {DateMaid::sweep(dates)}.should raise_error(Error::InvalidDate)
49
- end
50
-
51
- it 'should strip invalid parseable dates (US)' do
52
- dates = ['01/01/2011','1/2/2011','1/3/2011','12/17/2011']
53
- dates = DateMaid::sweep(dates)
54
- dates[0].should == Date.new(2011,1,1)
55
- dates[1].should == Date.new(2011,1,2)
56
- dates[2].should == Date.new(2011,1,3)
57
- dates[3].should == Date.new(2011,12,17)
58
- end
59
-
60
- it 'should transform a parseable date into valid data (ISO)' do
61
- dates = ['2011-01-01','2011-01-02','2011-01-03','2011-02-04']
62
- dates = DateMaid::sweep(dates)
63
- dates[0].should == Date.new(2011,1,1)
64
- dates[1].should == Date.new(2011,1,2)
65
- dates[2].should == Date.new(2011,1,3)
66
- dates[3].should == Date.new(2011,2,4)
67
- end
68
-
69
- it 'should parse ISO dates' do
70
- # It ain't a leap year
71
- dates = ['2011-01-01','2011-01-02','2011-01-03','2011-02-04']
72
- dates = DateMaid::sweep(dates)
73
- dates[0].should == Date.new(2011,1,1)
74
- dates[1].should == Date.new(2011,1,2)
75
- dates[2].should == Date.new(2011,1,3)
76
- dates[3].should == Date.new(2011,2,4)
77
- end
78
-
79
- it 'should handle JP dates YYYY/MM/DD' do
80
- dates = ['2011/01/01','2011/01/2','2011/1/03','2011/2/4']
81
- dates = DateMaid::sweep(dates)
82
- dates[0].should == Date.new(2011,1,1)
83
- dates[1].should == Date.new(2011,1,2)
84
- dates[2].should == Date.new(2011,1,3)
85
- dates[3].should == Date.new(2011,2,4)
86
- end
87
-
88
- it 'should handle manually formatted dates (EU)' do
89
- dates = ['01/01/2011','2/1/2011','3/1/2011','1/12/2011']
90
- DateMaid::init(:format => '%d/%m/%Y')
91
- dates = DateMaid::sweep(dates)
92
- dates[0].should == Date.new(2011,1,1)
93
- dates[1].should == Date.new(2011,1,2)
94
- dates[2].should == Date.new(2011,1,3)
95
- dates[3].should == Date.new(2011,12,1)
96
- DateMaid::init({})
97
- end
98
-
99
- it 'should handle manually formatted dates (EU, strip)' do
100
- dates = ['01/01/2011','2/1/2011','3/1/2011','1/12/2011']
101
- DateMaid::init(:format => '%d/%m/%Y')
102
- dates = DateMaid::sweep(dates)
103
- dates[0].should == Date.new(2011,1,1)
104
- dates[1].should == Date.new(2011,1,2)
105
- dates[2].should == Date.new(2011,1,3)
106
- dates[3].should == Date.new(2011,12,1)
107
- DateMaid::init({})
108
- end
109
-
110
- it 'should transform a year into an end of year date' do
111
- dates = ['2011','2010','2009','2008','2007','2006']
112
-
113
- DateMaid::init({:frequency => 'annual'})
114
- dates = DateMaid::sweep(dates)
115
- dates[0].should == Date.new(2011,12,31)
116
- dates[1].should == Date.new(2010,12,31)
117
- dates[2].should == Date.new(2009,12,31)
118
- dates[3].should == Date.new(2008,12,31)
119
- DateMaid::init({})
120
- end
121
-
122
- it 'should transform a year into an end of year date with gaps' do
123
- dates = ['2011','2010','2009','2008','2007','2006']
124
- DateMaid::init({:frequency => 'annual'})
125
- dates = DateMaid::sweep(dates)
126
- dates[0].should == Date.new(2011,12,31)
127
- dates[1].should == Date.new(2010,12,31)
128
- dates[2].should == Date.new(2009,12,31)
129
- dates[3].should == Date.new(2008,12,31)
130
- DateMaid::init({})
131
- end
132
-
133
- it 'should transform a YYYY.0 into an end of year date' do
134
- dates = ['2011.0','2010.0','2009.0','2008.0','2007.0','2006.0']
135
- DateMaid::init({:frequency => 'annual'})
136
- dates = DateMaid::sweep(dates)
137
- dates[0].should == Date.new(2011,12,31)
138
- dates[1].should == Date.new(2010,12,31)
139
- dates[2].should == Date.new(2009,12,31)
140
- dates[3].should == Date.new(2008,12,31)
141
- DateMaid::init({})
142
- end
143
-
144
- it 'should transform a YYYY.1 into an end of month date' do
145
- dates = ['2011.1','2010.2','2009.3','2008.10','2007.11','2006.12']
146
- dates = DateMaid::sweep(dates)
147
- dates[0].should == Date.new(2011,01,31)
148
- dates[1].should == Date.new(2010,02,28)
149
- dates[2].should == Date.new(2009,03,31)
150
- dates[3].should == Date.new(2008,10,31)
151
- dates[4].should == Date.new(2007,11,30)
152
- dates[5].should == Date.new(2006,12,31)
153
- end
154
-
155
-
156
- it 'should transform yyyy-mm to end of month' do
157
- dates = ['2011-01','2011-02','2011-03','2011-04']
158
- dates = DateMaid::sweep(dates)
159
- dates[0].should == Date.new(2011,1,31)
160
- dates[1].should == Date.new(2011,2,28)
161
- dates[2].should == Date.new(2011,3,31)
162
- dates[3].should == Date.new(2011,4,30)
163
- end
164
-
165
- it 'should transform yyyy/mm to end of month' do
166
- dates = ['2011/01','2011/02','2011/03','2011/04,4']
167
- dates = DateMaid::sweep(dates)
168
- dates[0].should == Date.new(2011,1,31)
169
- dates[1].should == Date.new(2011,2,28)
170
- dates[2].should == Date.new(2011,3,31)
171
- dates[3].should == Date.new(2011,4,30)
172
- end
173
-
174
- it 'should transform yyyyMmm to end of month' do
175
- dates = ['2011M01','2011M02','2011M03','2011M04']
176
- dates = DateMaid::sweep(dates)
177
- dates[0].should == Date.new(2011,1,31)
178
- dates[1].should == Date.new(2011,2,28)
179
- dates[2].should == Date.new(2011,3,31)
180
- dates[3].should == Date.new(2011,4,30)
181
- end
182
-
183
- it 'should transform yyyyWww to the first Friday of the week of the year' do
184
- dates = ['1998W52','1998W53','1999W01']
185
- dates = DateMaid::sweep(dates)
186
- dates[0].should == Date.new(1998,12,25)
187
- dates[1].should == Date.new(1999,1,1)
188
- dates[2].should == Date.new(1999,1,8)
189
- end
190
-
191
- it 'should fail on invalid YYYY-MM formats' do
192
- dates = ['2011-13','2011-AA','2011-01','2011-02','2011-03','2011-04']
193
- lambda {DateMaid::sweep(dates)}.should raise_error(Error::InvalidDate)
194
- end
195
-
196
- it 'should parse YYYY-MM formats' do
197
- dates = ['2011-01','2011-02','2011-03','2011-04']
198
- dates = DateMaid::sweep(dates)
199
- dates[0].should == Date.new(2011,1,31)
200
- dates[1].should == Date.new(2011,2,28)
201
- dates[2].should == Date.new(2011,3,31)
202
- dates[3].should == Date.new(2011,4,30)
203
- end
204
-
205
- it 'should transform mm-yyyy to end of month' do
206
- dates = ['01-2011','02-2011','3-2011','4-2011']
207
- dates = DateMaid::sweep(dates)
208
- dates[0].should == Date.new(2011,1,31)
209
- dates[1].should == Date.new(2011,2,28)
210
- dates[2].should == Date.new(2011,3,31)
211
- dates[3].should == Date.new(2011,4,30)
212
- end
213
-
214
- it 'should transform mm/yyyy to end of month' do
215
- dates = ['01/2011','02/2011','3/2011','4/2011']
216
- dates = DateMaid::sweep(dates)
217
- dates[0].should == Date.new(2011,1,31)
218
- dates[1].should == Date.new(2011,2,28)
219
- dates[2].should == Date.new(2011,3,31)
220
- dates[3].should == Date.new(2011,4,30)
221
- end
222
-
223
- it 'should transform yyyymm (no delimiter) to end of month' do
224
- dates = ['201101','201102','201103','201104']
225
- dates = DateMaid::sweep(dates)
226
- dates[0].should == Date.new(2011,1,31)
227
- dates[1].should == Date.new(2011,2,28)
228
- dates[2].should == Date.new(2011,3,31)
229
- dates[3].should == Date.new(2011,4,30)
230
- end
231
-
232
- it 'should transform yyyymm (no delimiter) to end of month' do
233
- # Only 5 digits
234
- dates = ['201101','201102','201103','201104']
235
- dates = DateMaid::sweep(dates)
236
- dates[0].should == Date.new(2011,1,31)
237
- dates[1].should == Date.new(2011,2,28)
238
- dates[2].should == Date.new(2011,3,31)
239
- dates[3].should == Date.new(2011,4,30)
240
- end
241
-
242
- it 'should transform YYYY-MMM to end of month' do
243
- dates = ['2011-jan','2011-feb','2011-mar','2011-apr']
244
- dates = DateMaid::sweep(dates)
245
- dates[0].should == Date.new(2011,1,31)
246
- dates[1].should == Date.new(2011,2,28)
247
- dates[2].should == Date.new(2011,3,31)
248
- dates[3].should == Date.new(2011,4,30)
249
- end
250
-
251
- it 'should transform YYYY MMM to end of month' do
252
- dates = ['2011 jan','2011 feb','2011 mar','2011 apr']
253
- dates = DateMaid::sweep(dates)
254
- dates[0].should == Date.new(2011,1,31)
255
- dates[1].should == Date.new(2011,2,28)
256
- dates[2].should == Date.new(2011,3,31)
257
- dates[3].should == Date.new(2011,4,30)
258
- end
259
-
260
- it 'should transform YYYY MMM to end of month (CAPS)' do
261
- dates = ['2011 JAN','2011 FEB','2011 MAR','2011 APR']
262
- dates = DateMaid::sweep(dates)
263
- dates[0].should == Date.new(2011,1,31)
264
- dates[1].should == Date.new(2011,2,28)
265
- dates[2].should == Date.new(2011,3,31)
266
- dates[3].should == Date.new(2011,4,30)
267
- end
268
-
269
- it 'should transform YYYY MMM to end of month (Camel)' do
270
- dates = ['2011 Jan','2011 Feb','2011 Mar','2011 Apr,4']
271
- dates = DateMaid::sweep(dates)
272
- dates[0].should == Date.new(2011,1,31)
273
- dates[1].should == Date.new(2011,2,28)
274
- dates[2].should == Date.new(2011,3,31)
275
- dates[3].should == Date.new(2011,4,30)
276
- end
277
-
278
- it 'should transform MMM-YYYY to end of month' do
279
- dates = ['jan-2011','feb-2011','mar-2011','apr-2011,4']
280
- dates = DateMaid::sweep(dates)
281
- dates[0].should == Date.new(2011,1,31)
282
- dates[1].should == Date.new(2011,2,28)
283
- dates[2].should == Date.new(2011,3,31)
284
- dates[3].should == Date.new(2011,4,30)
285
- end
286
-
287
- it 'should transform MMM-YYYY to end of month (strip)' do
288
- dates = ['jan-2011','feb-2011','mar-2011','apr-2011']
289
- dates = DateMaid::sweep(dates)
290
- dates[0].should == Date.new(2011,1,31)
291
- dates[1].should == Date.new(2011,2,28)
292
- dates[2].should == Date.new(2011,3,31)
293
- dates[3].should == Date.new(2011,4,30)
294
- end
295
-
296
- it 'should transform MMMYYYY to end of month (No delimiter)' do
297
- dates = ['jan2011','feb2011','mar2011','apr2011']
298
- dates = DateMaid::sweep(dates)
299
- dates[0].should == Date.new(2011,1,31)
300
- dates[1].should == Date.new(2011,2,28)
301
- dates[2].should == Date.new(2011,3,31)
302
- dates[3].should == Date.new(2011,4,30)
303
- end
304
-
305
- it 'should transform MMMYYYY to end of month (No delimiter, strip)' do
306
- dates = ['jan2011','feb2011','mar2011','apr2011']
307
- dates = DateMaid::sweep(dates)
308
- dates[0].should == Date.new(2011,1,31)
309
- dates[1].should == Date.new(2011,2,28)
310
- dates[2].should == Date.new(2011,3,31)
311
- dates[3].should == Date.new(2011,4,30)
312
- end
313
-
314
-
315
- it 'should transform YYYYMMM to end of month (No delimiter) even if one date is partially valid' do
316
- dates = ['2011JAN','2011FEB','2011MAR','2011APR,4']
317
- dates = DateMaid::sweep(dates)
318
- dates[0].should == Date.new(2011,1,31)
319
- dates[1].should == Date.new(2011,2,28)
320
- dates[2].should == Date.new(2011,3,31)
321
- dates[3].should == Date.new(2011,4,30)
322
- end
323
-
324
- it 'should transform YYYYMMM to end of month (No delimiter)' do
325
- dates = ['2011JAN','2011FEB','2011MAR','2011APR,4']
326
- dates = DateMaid::sweep(dates)
327
- dates[0].should == Date.new(2011,1,31)
328
- dates[1].should == Date.new(2011,2,28)
329
- dates[2].should == Date.new(2011,3,31)
330
- dates[3].should == Date.new(2011,4,30)
331
- end
332
-
333
- it 'should transform YYYY-MMM-DD to date' do
334
- dates = ['2011-jan-01','2011-feb-01','2011-mar-3','2011-apr-4']
335
- dates = DateMaid::sweep(dates)
336
- dates[0].should == Date.new(2011,1,1)
337
- dates[1].should == Date.new(2011,2,1)
338
- dates[2].should == Date.new(2011,3,3)
339
- dates[3].should == Date.new(2011,4,4)
340
- end
341
-
342
- it 'should transform YYYY-MMM-DD to date (strip)' do
343
- dates = ['2011-jan-01','2011-feb-01','2011-mar-3','2011-apr-4']
344
- dates = DateMaid::sweep(dates)
345
- dates[0].should == Date.new(2011,1,1)
346
- dates[1].should == Date.new(2011,2,1)
347
- dates[2].should == Date.new(2011,3,3)
348
- dates[3].should == Date.new(2011,4,4)
349
- end
350
-
351
-
352
- it 'should transform DD-MMM-YYYY to date' do
353
- dates = ['01-jan-2011','01-feb-2011','3-mar-2011','4-apr-2011']
354
- dates = DateMaid::sweep(dates)
355
- dates[0].should == Date.new(2011,1,1)
356
- dates[1].should == Date.new(2011,2,1)
357
- dates[2].should == Date.new(2011,3,3)
358
- dates[3].should == Date.new(2011,4,4)
359
- end
360
-
361
- it 'should transform DD-MMM-YYYY to date (strip)' do
362
- dates = ['01-jan-2011','01-feb-2011','3-mar-2011','4-apr-2011']
363
- dates = DateMaid::sweep(dates)
364
- dates[0].should == Date.new(2011,1,1)
365
- dates[1].should == Date.new(2011,2,1)
366
- dates[2].should == Date.new(2011,3,3)
367
- dates[3].should == Date.new(2011,4,4)
368
- end
369
-
370
- it 'should transform YYYYMMMDD to date (no delimiters)' do
371
- dates = ['2011jan01','2011feb01','2011mar3','2011apr4']
372
- dates = DateMaid::sweep(dates)
373
- dates[0].should == Date.new(2011,1,1)
374
- dates[1].should == Date.new(2011,2,1)
375
- dates[2].should == Date.new(2011,3,3)
376
- dates[3].should == Date.new(2011,4,4)
377
- end
378
-
379
- it 'should transform YYYYMMMDD to date (no delimiters, strip)' do
380
- dates = ['2011jan01','2011feb01','2011mar3','2011apr4']
381
- dates = DateMaid::sweep(dates)
382
- dates[0].should == Date.new(2011,1,1)
383
- dates[1].should == Date.new(2011,2,1)
384
- dates[2].should == Date.new(2011,3,3)
385
- dates[3].should == Date.new(2011,4,4)
386
- end
387
-
388
- it 'should transform DD-MMM-YYYY to date (no delimiters)' do
389
- dates = ['01jan2011','01feb2011','3mar2011','4apr2011']
390
- dates = DateMaid::sweep(dates)
391
- dates[0].should == Date.new(2011,1,1)
392
- dates[1].should == Date.new(2011,2,1)
393
- dates[2].should == Date.new(2011,3,3)
394
- dates[3].should == Date.new(2011,4,4)
395
- end
396
-
397
- it 'should transform DD-MMM-YYYY to date (no delimiters, strip)' do
398
- dates = ['01jan2011','01feb2011','3mar2011','4apr2011']
399
- dates = DateMaid::sweep(dates)
400
- dates[0].should == Date.new(2011,1,1)
401
- dates[1].should == Date.new(2011,2,1)
402
- dates[2].should == Date.new(2011,3,3)
403
- dates[3].should == Date.new(2011,4,4)
404
- end
405
-
406
- it 'should transform yyyy-Qq to end of quarter' do
407
- dates = ['2011-Q1','2011-Q2','2011-Q3','2011-Q4']
408
- dates = DateMaid::sweep(dates)
409
- dates[0].should == Date.new(2011,3,31)
410
- dates[1].should == Date.new(2011,6,30)
411
- dates[2].should == Date.new(2011,9,30)
412
- dates[3].should == Date.new(2011,12,31)
413
- end
414
-
415
- it 'should transform yyyy-Qq to end of quarter (strip)' do
416
- dates = ['2011-Q1','2011-Q2','2011-Q3','2011-Q4']
417
- dates = DateMaid::sweep(dates)
418
- dates[0].should == Date.new(2011,3,31)
419
- dates[1].should == Date.new(2011,6,30)
420
- dates[2].should == Date.new(2011,9,30)
421
- dates[3].should == Date.new(2011,12,31)
422
- end
423
-
424
- it 'should transform yyyyQq to end of quarter (no delimiter)' do
425
- dates = ['2011q1','2011Q2','2011q3','2011Q4,4']
426
- dates = DateMaid::sweep(dates)
427
- dates[0].should == Date.new(2011,3,31)
428
- dates[1].should == Date.new(2011,6,30)
429
- dates[2].should == Date.new(2011,9,30)
430
- dates[3].should == Date.new(2011,12,31)
431
- end
432
-
433
- it 'should handle white space at front and back of dates' do
434
- dates = [' 2012q2 ']
435
- dates = DateMaid::sweep(dates)
436
- dates[0].should == Date.new(2012,6,30)
437
- end
438
-
439
- it 'should handle white space at front and back of dates (2)' do
440
- dates = [' 2012 ']
441
- dates = DateMaid::sweep(dates)
442
- dates[0].should == Date.new(2012,12,31)
443
- end
444
-
445
- it 'should know 1871.10 is October' do
446
- dates = ['1871.10']
447
- dates = DateMaid::sweep(dates)
448
- dates[0].should == Date.new(1871,10,31)
449
- end
450
-
451
- it 'should handle 1990' do
452
- dates = ['1990']
453
- dates = DateMaid::sweep(dates)
454
- dates[0].should == Date.new(1990,12,31)
455
- end
456
-
457
- it 'should handle 1990 - 1995' do
458
- dates = ['1990 - 1995']
459
- dates = DateMaid::sweep(dates)
460
- dates[0].should == Date.new(1990,12,31)
461
- end
462
-
463
- it 'should transform YYYYMMDD to date' do
464
- dates = ['20010101','20110518','19701111','19770208','19900531']
465
- dates = DateMaid::sweep(dates)
466
- dates[0].should == Date.new(2001,1,1)
467
- dates[1].should == Date.new(2011,5,18)
468
- dates[2].should == Date.new(1970,11,11)
469
- dates[3].should == Date.new(1977,2,8)
470
- dates[4].should == Date.new(1990,5,31)
471
- end
472
-
473
- it 'should transform Jan 30, 1955' do
474
- dates = ['Jan 30, 1955']
475
- dates = DateMaid::sweep(dates)
476
- dates[0].should == Date.new(1955,1,30)
477
- end
478
-
479
- it 'should transform Jan-68' do
480
- dates = ['Dec-68','Jan-69']
481
- dates = DateMaid::sweep(dates)
482
- dates[0].should == Date.new(1968,12,31)
483
- dates[1].should == Date.new(1969,1,31)
484
- end
485
-
486
-
487
- it 'should transform Jul-01' do
488
- dates = ['Jul-01','Aug-01']
489
- dates = DateMaid::sweep(dates)
490
- dates[1].should == Date.new(2001,8,31)
491
- dates[0].should == Date.new(2001,7,31)
492
- end
493
-
494
- it 'should transform Dec-31-12' do
495
- dates = ['Dec-31-12']
496
- dates = DateMaid::sweep(dates)
497
- dates[0].should == Date.new(2012,12,31)
498
- end
499
-
500
- it 'should format YYYY/MM/DD' do
501
- dates = ['20010101','20110518','19701111','19770208','19900531']
502
- dates = DateMaid::sweep(dates)
503
- dates[0].should == Date.new(2001,1,1)
504
- dates[1].should == Date.new(2011,5,18)
505
- dates[2].should == Date.new(1970,11,11)
506
- dates[3].should == Date.new(1977,2,8)
507
- dates[4].should == Date.new(1990,5,31)
508
- end
509
-
510
- it 'should strip days of the week' do
511
- pending "Not implemented yet"
512
- dates = ["Tuesday, April 30, 2013","Mon april 29, 2012"]
513
- dates = DateMaid::sweep(dates)
514
- dates[0].should == Date.new(2013,04,30)
515
- dates[1].should == Date.new(2012,04,29)
516
- end
517
-
518
- it 'should handle US format even if it is ambiguous' do
519
- dates = ['1/1/1954','1/4/1954','1/7/1954','1/11/1954']
520
- dates = DateMaid::sweep(dates)
521
- dates[0].should == Date.new(1954,1,1)
522
- dates[1].should == Date.new(1954,4,1)
523
- dates[2].should == Date.new(1954,7,1)
524
- dates[3].should == Date.new(1954,11,1)
525
- end
526
-
527
-
1
+ require 'spec_helper'
2
+
3
+ include Quandl::Babelfish
4
+ describe NumberMaid do
5
+
6
+ it 'should remove unwanted characters from dates (eg.  )' do
7
+ a=194.chr+160.chr
8
+ dates = ["2005#{a}","#{a}2006",'2007','2008']
9
+ dates = DateMaid::sweep(dates)
10
+ dates[0].should == Date.new(2005,12,31)
11
+ dates[1].should == Date.new(2006,12,31)
12
+ dates[2].should == Date.new(2007,12,31)
13
+ dates[3].should == Date.new(2008,12,31)
14
+ end
15
+
16
+ it 'should transform a parseable date into valid data (US) YYYY year' do
17
+ dates = ['01/10/2011','1/11/2011','1/12/2011','1/13/2011']
18
+
19
+ dates = DateMaid::sweep(dates)
20
+ dates[0].should == Date.new(2011,1,10)
21
+ dates[1].should == Date.new(2011,1,11)
22
+ dates[2].should == Date.new(2011,1,12)
23
+ dates[3].should == Date.new(2011,1,13)
24
+ end
25
+
26
+ it 'should calculate dates from UNIX timestamps (to UTC)' do
27
+ dates = [1279324800,1279411200,1279497600,1279584000]
28
+
29
+ dates = DateMaid::sweep(dates)
30
+ dates[0].should == Date.new(2010,7,17)
31
+ dates[1].should == Date.new(2010,7,18)
32
+ dates[2].should == Date.new(2010,7,19)
33
+ dates[3].should == Date.new(2010,7,20)
34
+ end
35
+
36
+ it 'should transform a parseable date into valid data (US) YY year' do
37
+ dates = ['01/10/11','1/11/11','1/12/11','1/13/11,4']
38
+ dates = DateMaid::sweep(dates)
39
+ dates[0].should == Date.new(2011,1,10)
40
+ dates[1].should == Date.new(2011,1,11)
41
+ dates[2].should == Date.new(2011,1,12)
42
+ dates[3].should == Date.new(2011,1,13)
43
+ end
44
+
45
+ it 'should throw error when 1 of the dates is invalid' do
46
+ # It ain't a leap year
47
+ dates = ['2/29/2011','01/01/2011','1/2/2011','1/3/2011','12/1/2011']
48
+ lambda {DateMaid::sweep(dates)}.should raise_error(Error::InvalidDate)
49
+ end
50
+
51
+ it 'should strip invalid parseable dates (US)' do
52
+ dates = ['01/01/2011','1/2/2011','1/3/2011','12/17/2011']
53
+ dates = DateMaid::sweep(dates)
54
+ dates[0].should == Date.new(2011,1,1)
55
+ dates[1].should == Date.new(2011,1,2)
56
+ dates[2].should == Date.new(2011,1,3)
57
+ dates[3].should == Date.new(2011,12,17)
58
+ end
59
+
60
+ it 'should transform a parseable date into valid data (ISO)' do
61
+ dates = ['2011-01-01','2011-01-02','2011-01-03','2011-02-04']
62
+ dates = DateMaid::sweep(dates)
63
+ dates[0].should == Date.new(2011,1,1)
64
+ dates[1].should == Date.new(2011,1,2)
65
+ dates[2].should == Date.new(2011,1,3)
66
+ dates[3].should == Date.new(2011,2,4)
67
+ end
68
+
69
+ it 'should parse ISO dates' do
70
+ # It ain't a leap year
71
+ dates = ['2011-01-01','2011-01-02','2011-01-03','2011-02-04']
72
+ dates = DateMaid::sweep(dates)
73
+ dates[0].should == Date.new(2011,1,1)
74
+ dates[1].should == Date.new(2011,1,2)
75
+ dates[2].should == Date.new(2011,1,3)
76
+ dates[3].should == Date.new(2011,2,4)
77
+ end
78
+
79
+ it 'should handle JP dates YYYY/MM/DD' do
80
+ dates = ['2011/01/01','2011/01/2','2011/1/03','2011/2/4']
81
+ dates = DateMaid::sweep(dates)
82
+ dates[0].should == Date.new(2011,1,1)
83
+ dates[1].should == Date.new(2011,1,2)
84
+ dates[2].should == Date.new(2011,1,3)
85
+ dates[3].should == Date.new(2011,2,4)
86
+ end
87
+
88
+ it 'should handle manually formatted dates (EU)' do
89
+ dates = ['01/01/2011','2/1/2011','3/1/2011','1/12/2011']
90
+ DateMaid::init(:format => '%d/%m/%Y')
91
+ dates = DateMaid::sweep(dates)
92
+ dates[0].should == Date.new(2011,1,1)
93
+ dates[1].should == Date.new(2011,1,2)
94
+ dates[2].should == Date.new(2011,1,3)
95
+ dates[3].should == Date.new(2011,12,1)
96
+ DateMaid::init({})
97
+ end
98
+
99
+ it 'should handle manually formatted dates (EU, strip)' do
100
+ dates = ['01/01/2011','2/1/2011','3/1/2011','1/12/2011']
101
+ DateMaid::init(:format => '%d/%m/%Y')
102
+ dates = DateMaid::sweep(dates)
103
+ dates[0].should == Date.new(2011,1,1)
104
+ dates[1].should == Date.new(2011,1,2)
105
+ dates[2].should == Date.new(2011,1,3)
106
+ dates[3].should == Date.new(2011,12,1)
107
+ DateMaid::init({})
108
+ end
109
+
110
+ it 'should transform a year into an end of year date' do
111
+ dates = ['2011','2010','2009','2008','2007','2006']
112
+
113
+ DateMaid::init({:frequency => 'annual'})
114
+ dates = DateMaid::sweep(dates)
115
+ dates[0].should == Date.new(2011,12,31)
116
+ dates[1].should == Date.new(2010,12,31)
117
+ dates[2].should == Date.new(2009,12,31)
118
+ dates[3].should == Date.new(2008,12,31)
119
+ DateMaid::init({})
120
+ end
121
+
122
+ it 'should transform a year into an end of year date with gaps' do
123
+ dates = ['2011','2010','2009','2008','2007','2006']
124
+ DateMaid::init({:frequency => 'annual'})
125
+ dates = DateMaid::sweep(dates)
126
+ dates[0].should == Date.new(2011,12,31)
127
+ dates[1].should == Date.new(2010,12,31)
128
+ dates[2].should == Date.new(2009,12,31)
129
+ dates[3].should == Date.new(2008,12,31)
130
+ DateMaid::init({})
131
+ end
132
+
133
+ it 'should transform a YYYY.0 into an end of year date' do
134
+ dates = ['2011.0','2010.0','2009.0','2008.0','2007.0','2006.0']
135
+ DateMaid::init({:frequency => 'annual'})
136
+ dates = DateMaid::sweep(dates)
137
+ dates[0].should == Date.new(2011,12,31)
138
+ dates[1].should == Date.new(2010,12,31)
139
+ dates[2].should == Date.new(2009,12,31)
140
+ dates[3].should == Date.new(2008,12,31)
141
+ DateMaid::init({})
142
+ end
143
+
144
+ it 'should transform a YYYY.1 into an end of month date' do
145
+ dates = ['2011.1','2010.2','2009.3','2008.10','2007.11','2006.12']
146
+ dates = DateMaid::sweep(dates)
147
+ dates[0].should == Date.new(2011,01,31)
148
+ dates[1].should == Date.new(2010,02,28)
149
+ dates[2].should == Date.new(2009,03,31)
150
+ dates[3].should == Date.new(2008,10,31)
151
+ dates[4].should == Date.new(2007,11,30)
152
+ dates[5].should == Date.new(2006,12,31)
153
+ end
154
+
155
+
156
+ it 'should transform yyyy-mm to end of month' do
157
+ dates = ['2011-01','2011-02','2011-03','2011-04']
158
+ dates = DateMaid::sweep(dates)
159
+ dates[0].should == Date.new(2011,1,31)
160
+ dates[1].should == Date.new(2011,2,28)
161
+ dates[2].should == Date.new(2011,3,31)
162
+ dates[3].should == Date.new(2011,4,30)
163
+ end
164
+
165
+ it 'should transform yyyy/mm to end of month' do
166
+ dates = ['2011/01','2011/02','2011/03','2011/04,4']
167
+ dates = DateMaid::sweep(dates)
168
+ dates[0].should == Date.new(2011,1,31)
169
+ dates[1].should == Date.new(2011,2,28)
170
+ dates[2].should == Date.new(2011,3,31)
171
+ dates[3].should == Date.new(2011,4,30)
172
+ end
173
+
174
+ it 'should transform yyyyMmm to end of month' do
175
+ dates = ['2011M01','2011M02','2011M03','2011M04']
176
+ dates = DateMaid::sweep(dates)
177
+ dates[0].should == Date.new(2011,1,31)
178
+ dates[1].should == Date.new(2011,2,28)
179
+ dates[2].should == Date.new(2011,3,31)
180
+ dates[3].should == Date.new(2011,4,30)
181
+ end
182
+
183
+ it 'should transform yyyyWww to the first Friday of the week of the year' do
184
+ dates = ['1998W52','1998W53','1999W01']
185
+ dates = DateMaid::sweep(dates)
186
+ dates[0].should == Date.new(1998,12,25)
187
+ dates[1].should == Date.new(1999,1,1)
188
+ dates[2].should == Date.new(1999,1,8)
189
+ end
190
+
191
+ it 'should fail on invalid YYYY-MM formats' do
192
+ dates = ['2011-13','2011-AA','2011-01','2011-02','2011-03','2011-04']
193
+ lambda {DateMaid::sweep(dates)}.should raise_error(Error::InvalidDate)
194
+ end
195
+
196
+ it 'should parse YYYY-MM formats' do
197
+ dates = ['2011-01','2011-02','2011-03','2011-04']
198
+ dates = DateMaid::sweep(dates)
199
+ dates[0].should == Date.new(2011,1,31)
200
+ dates[1].should == Date.new(2011,2,28)
201
+ dates[2].should == Date.new(2011,3,31)
202
+ dates[3].should == Date.new(2011,4,30)
203
+ end
204
+
205
+ it 'should transform mm-yyyy to end of month' do
206
+ dates = ['01-2011','02-2011','3-2011','4-2011']
207
+ dates = DateMaid::sweep(dates)
208
+ dates[0].should == Date.new(2011,1,31)
209
+ dates[1].should == Date.new(2011,2,28)
210
+ dates[2].should == Date.new(2011,3,31)
211
+ dates[3].should == Date.new(2011,4,30)
212
+ end
213
+
214
+ it 'should transform mm/yyyy to end of month' do
215
+ dates = ['01/2011','02/2011','3/2011','4/2011']
216
+ dates = DateMaid::sweep(dates)
217
+ dates[0].should == Date.new(2011,1,31)
218
+ dates[1].should == Date.new(2011,2,28)
219
+ dates[2].should == Date.new(2011,3,31)
220
+ dates[3].should == Date.new(2011,4,30)
221
+ end
222
+
223
+ it 'should transform yyyymm (no delimiter) to end of month' do
224
+ dates = ['201101','201102','201103','201104']
225
+ dates = DateMaid::sweep(dates)
226
+ dates[0].should == Date.new(2011,1,31)
227
+ dates[1].should == Date.new(2011,2,28)
228
+ dates[2].should == Date.new(2011,3,31)
229
+ dates[3].should == Date.new(2011,4,30)
230
+ end
231
+
232
+ it 'should transform yyyymm (no delimiter) to end of month' do
233
+ # Only 5 digits
234
+ dates = ['201101','201102','201103','201104']
235
+ dates = DateMaid::sweep(dates)
236
+ dates[0].should == Date.new(2011,1,31)
237
+ dates[1].should == Date.new(2011,2,28)
238
+ dates[2].should == Date.new(2011,3,31)
239
+ dates[3].should == Date.new(2011,4,30)
240
+ end
241
+
242
+ it 'should transform YYYY-MMM to end of month' do
243
+ dates = ['2011-jan','2011-feb','2011-mar','2011-apr']
244
+ dates = DateMaid::sweep(dates)
245
+ dates[0].should == Date.new(2011,1,31)
246
+ dates[1].should == Date.new(2011,2,28)
247
+ dates[2].should == Date.new(2011,3,31)
248
+ dates[3].should == Date.new(2011,4,30)
249
+ end
250
+
251
+ it 'should transform YYYY MMM to end of month' do
252
+ dates = ['2011 jan','2011 feb','2011 mar','2011 apr']
253
+ dates = DateMaid::sweep(dates)
254
+ dates[0].should == Date.new(2011,1,31)
255
+ dates[1].should == Date.new(2011,2,28)
256
+ dates[2].should == Date.new(2011,3,31)
257
+ dates[3].should == Date.new(2011,4,30)
258
+ end
259
+
260
+ it 'should transform YYYY MMM to end of month (CAPS)' do
261
+ dates = ['2011 JAN','2011 FEB','2011 MAR','2011 APR']
262
+ dates = DateMaid::sweep(dates)
263
+ dates[0].should == Date.new(2011,1,31)
264
+ dates[1].should == Date.new(2011,2,28)
265
+ dates[2].should == Date.new(2011,3,31)
266
+ dates[3].should == Date.new(2011,4,30)
267
+ end
268
+
269
+ it 'should transform YYYY MMM to end of month (Camel)' do
270
+ dates = ['2011 Jan','2011 Feb','2011 Mar','2011 Apr,4']
271
+ dates = DateMaid::sweep(dates)
272
+ dates[0].should == Date.new(2011,1,31)
273
+ dates[1].should == Date.new(2011,2,28)
274
+ dates[2].should == Date.new(2011,3,31)
275
+ dates[3].should == Date.new(2011,4,30)
276
+ end
277
+
278
+ it 'should transform MMM-YYYY to end of month' do
279
+ dates = ['jan-2011','feb-2011','mar-2011','apr-2011,4']
280
+ dates = DateMaid::sweep(dates)
281
+ dates[0].should == Date.new(2011,1,31)
282
+ dates[1].should == Date.new(2011,2,28)
283
+ dates[2].should == Date.new(2011,3,31)
284
+ dates[3].should == Date.new(2011,4,30)
285
+ end
286
+
287
+ it 'should transform MMM-YYYY to end of month (strip)' do
288
+ dates = ['jan-2011','feb-2011','mar-2011','apr-2011']
289
+ dates = DateMaid::sweep(dates)
290
+ dates[0].should == Date.new(2011,1,31)
291
+ dates[1].should == Date.new(2011,2,28)
292
+ dates[2].should == Date.new(2011,3,31)
293
+ dates[3].should == Date.new(2011,4,30)
294
+ end
295
+
296
+ it 'should transform MMMYYYY to end of month (No delimiter)' do
297
+ dates = ['jan2011','feb2011','mar2011','apr2011']
298
+ dates = DateMaid::sweep(dates)
299
+ dates[0].should == Date.new(2011,1,31)
300
+ dates[1].should == Date.new(2011,2,28)
301
+ dates[2].should == Date.new(2011,3,31)
302
+ dates[3].should == Date.new(2011,4,30)
303
+ end
304
+
305
+ it 'should transform MMMYYYY to end of month (No delimiter, strip)' do
306
+ dates = ['jan2011','feb2011','mar2011','apr2011']
307
+ dates = DateMaid::sweep(dates)
308
+ dates[0].should == Date.new(2011,1,31)
309
+ dates[1].should == Date.new(2011,2,28)
310
+ dates[2].should == Date.new(2011,3,31)
311
+ dates[3].should == Date.new(2011,4,30)
312
+ end
313
+
314
+
315
+ it 'should transform YYYYMMM to end of month (No delimiter) even if one date is partially valid' do
316
+ dates = ['2011JAN','2011FEB','2011MAR','2011APR,4']
317
+ dates = DateMaid::sweep(dates)
318
+ dates[0].should == Date.new(2011,1,31)
319
+ dates[1].should == Date.new(2011,2,28)
320
+ dates[2].should == Date.new(2011,3,31)
321
+ dates[3].should == Date.new(2011,4,30)
322
+ end
323
+
324
+ it 'should transform YYYYMMM to end of month (No delimiter)' do
325
+ dates = ['2011JAN','2011FEB','2011MAR','2011APR,4']
326
+ dates = DateMaid::sweep(dates)
327
+ dates[0].should == Date.new(2011,1,31)
328
+ dates[1].should == Date.new(2011,2,28)
329
+ dates[2].should == Date.new(2011,3,31)
330
+ dates[3].should == Date.new(2011,4,30)
331
+ end
332
+
333
+ it 'should transform YYYY-MMM-DD to date' do
334
+ dates = ['2011-jan-01','2011-feb-01','2011-mar-3','2011-apr-4']
335
+ dates = DateMaid::sweep(dates)
336
+ dates[0].should == Date.new(2011,1,1)
337
+ dates[1].should == Date.new(2011,2,1)
338
+ dates[2].should == Date.new(2011,3,3)
339
+ dates[3].should == Date.new(2011,4,4)
340
+ end
341
+
342
+ it 'should transform YYYY-MMM-DD to date (strip)' do
343
+ dates = ['2011-jan-01','2011-feb-01','2011-mar-3','2011-apr-4']
344
+ dates = DateMaid::sweep(dates)
345
+ dates[0].should == Date.new(2011,1,1)
346
+ dates[1].should == Date.new(2011,2,1)
347
+ dates[2].should == Date.new(2011,3,3)
348
+ dates[3].should == Date.new(2011,4,4)
349
+ end
350
+
351
+
352
+ it 'should transform DD-MMM-YYYY to date' do
353
+ dates = ['01-jan-2011','01-feb-2011','3-mar-2011','4-apr-2011']
354
+ dates = DateMaid::sweep(dates)
355
+ dates[0].should == Date.new(2011,1,1)
356
+ dates[1].should == Date.new(2011,2,1)
357
+ dates[2].should == Date.new(2011,3,3)
358
+ dates[3].should == Date.new(2011,4,4)
359
+ end
360
+
361
+ it 'should transform DD-MMM-YYYY to date (strip)' do
362
+ dates = ['01-jan-2011','01-feb-2011','3-mar-2011','4-apr-2011']
363
+ dates = DateMaid::sweep(dates)
364
+ dates[0].should == Date.new(2011,1,1)
365
+ dates[1].should == Date.new(2011,2,1)
366
+ dates[2].should == Date.new(2011,3,3)
367
+ dates[3].should == Date.new(2011,4,4)
368
+ end
369
+
370
+ it 'should transform YYYYMMMDD to date (no delimiters)' do
371
+ dates = ['2011jan01','2011feb01','2011mar3','2011apr4']
372
+ dates = DateMaid::sweep(dates)
373
+ dates[0].should == Date.new(2011,1,1)
374
+ dates[1].should == Date.new(2011,2,1)
375
+ dates[2].should == Date.new(2011,3,3)
376
+ dates[3].should == Date.new(2011,4,4)
377
+ end
378
+
379
+ it 'should transform YYYYMMMDD to date (no delimiters, strip)' do
380
+ dates = ['2011jan01','2011feb01','2011mar3','2011apr4']
381
+ dates = DateMaid::sweep(dates)
382
+ dates[0].should == Date.new(2011,1,1)
383
+ dates[1].should == Date.new(2011,2,1)
384
+ dates[2].should == Date.new(2011,3,3)
385
+ dates[3].should == Date.new(2011,4,4)
386
+ end
387
+
388
+ it 'should transform DD-MMM-YYYY to date (no delimiters)' do
389
+ dates = ['01jan2011','01feb2011','3mar2011','4apr2011']
390
+ dates = DateMaid::sweep(dates)
391
+ dates[0].should == Date.new(2011,1,1)
392
+ dates[1].should == Date.new(2011,2,1)
393
+ dates[2].should == Date.new(2011,3,3)
394
+ dates[3].should == Date.new(2011,4,4)
395
+ end
396
+
397
+ it 'should transform DD-MMM-YYYY to date (no delimiters, strip)' do
398
+ dates = ['01jan2011','01feb2011','3mar2011','4apr2011']
399
+ dates = DateMaid::sweep(dates)
400
+ dates[0].should == Date.new(2011,1,1)
401
+ dates[1].should == Date.new(2011,2,1)
402
+ dates[2].should == Date.new(2011,3,3)
403
+ dates[3].should == Date.new(2011,4,4)
404
+ end
405
+
406
+ it 'should transform yyyy-Qq to end of quarter' do
407
+ dates = ['2011-Q1','2011-Q2','2011-Q3','2011-Q4']
408
+ dates = DateMaid::sweep(dates)
409
+ dates[0].should == Date.new(2011,3,31)
410
+ dates[1].should == Date.new(2011,6,30)
411
+ dates[2].should == Date.new(2011,9,30)
412
+ dates[3].should == Date.new(2011,12,31)
413
+ end
414
+
415
+ it 'should transform yyyy-Qq to end of quarter (strip)' do
416
+ dates = ['2011-Q1','2011-Q2','2011-Q3','2011-Q4']
417
+ dates = DateMaid::sweep(dates)
418
+ dates[0].should == Date.new(2011,3,31)
419
+ dates[1].should == Date.new(2011,6,30)
420
+ dates[2].should == Date.new(2011,9,30)
421
+ dates[3].should == Date.new(2011,12,31)
422
+ end
423
+
424
+ it 'should transform yyyyQq to end of quarter (no delimiter)' do
425
+ dates = ['2011q1','2011Q2','2011q3','2011Q4,4']
426
+ dates = DateMaid::sweep(dates)
427
+ dates[0].should == Date.new(2011,3,31)
428
+ dates[1].should == Date.new(2011,6,30)
429
+ dates[2].should == Date.new(2011,9,30)
430
+ dates[3].should == Date.new(2011,12,31)
431
+ end
432
+
433
+ it 'should handle white space at front and back of dates' do
434
+ dates = [' 2012q2 ']
435
+ dates = DateMaid::sweep(dates)
436
+ dates[0].should == Date.new(2012,6,30)
437
+ end
438
+
439
+ it 'should handle white space at front and back of dates (2)' do
440
+ dates = [' 2012 ']
441
+ dates = DateMaid::sweep(dates)
442
+ dates[0].should == Date.new(2012,12,31)
443
+ end
444
+
445
+ it 'should know 1871.10 is October' do
446
+ dates = ['1871.10']
447
+ dates = DateMaid::sweep(dates)
448
+ dates[0].should == Date.new(1871,10,31)
449
+ end
450
+
451
+ it 'should handle 1990' do
452
+ dates = ['1990']
453
+ dates = DateMaid::sweep(dates)
454
+ dates[0].should == Date.new(1990,12,31)
455
+ end
456
+
457
+ it 'should handle 1990 - 1995' do
458
+ dates = ['1990 - 1995']
459
+ dates = DateMaid::sweep(dates)
460
+ dates[0].should == Date.new(1990,12,31)
461
+ end
462
+
463
+ it 'should transform YYYYMMDD to date' do
464
+ dates = ['20010101','20110518','19701111','19770208','19900531']
465
+ dates = DateMaid::sweep(dates)
466
+ dates[0].should == Date.new(2001,1,1)
467
+ dates[1].should == Date.new(2011,5,18)
468
+ dates[2].should == Date.new(1970,11,11)
469
+ dates[3].should == Date.new(1977,2,8)
470
+ dates[4].should == Date.new(1990,5,31)
471
+ end
472
+
473
+ it 'should transform Jan 30, 1955' do
474
+ dates = ['Jan 30, 1955']
475
+ dates = DateMaid::sweep(dates)
476
+ dates[0].should == Date.new(1955,1,30)
477
+ end
478
+
479
+ it 'should transform Jan-68' do
480
+ dates = ['Dec-68','Jan-69']
481
+ dates = DateMaid::sweep(dates)
482
+ dates[0].should == Date.new(1968,12,31)
483
+ dates[1].should == Date.new(1969,1,31)
484
+ end
485
+
486
+
487
+ it 'should transform Jul-01' do
488
+ dates = ['Jul-01','Aug-01']
489
+ dates = DateMaid::sweep(dates)
490
+ dates[1].should == Date.new(2001,8,31)
491
+ dates[0].should == Date.new(2001,7,31)
492
+ end
493
+
494
+ it 'should transform Dec-31-12' do
495
+ dates = ['Dec-31-12']
496
+ dates = DateMaid::sweep(dates)
497
+ dates[0].should == Date.new(2012,12,31)
498
+ end
499
+
500
+ it 'should format YYYY/MM/DD' do
501
+ dates = ['20010101','20110518','19701111','19770208','19900531']
502
+ dates = DateMaid::sweep(dates)
503
+ dates[0].should == Date.new(2001,1,1)
504
+ dates[1].should == Date.new(2011,5,18)
505
+ dates[2].should == Date.new(1970,11,11)
506
+ dates[3].should == Date.new(1977,2,8)
507
+ dates[4].should == Date.new(1990,5,31)
508
+ end
509
+
510
+ it 'should strip days of the week' do
511
+ pending "Not implemented yet"
512
+ dates = ["Tuesday, April 30, 2013","Mon april 29, 2012"]
513
+ dates = DateMaid::sweep(dates)
514
+ dates[0].should == Date.new(2013,04,30)
515
+ dates[1].should == Date.new(2012,04,29)
516
+ end
517
+
518
+ it 'should handle US format even if it is ambiguous' do
519
+ dates = ['1/1/1954','4/1/1954','7/1/1954','11/1/1954']
520
+ dates = DateMaid::sweep(dates)
521
+ dates[0].should == Date.new(1954,1,1)
522
+ dates[1].should == Date.new(1954,4,1)
523
+ dates[2].should == Date.new(1954,7,1)
524
+ dates[3].should == Date.new(1954,11,1)
525
+ end
526
+
527
+ it 'should handle US format even if it is ambiguous (short year)' do
528
+ dates = ['1/1/11','4/1/11','7/1/11','11/1/11']
529
+ dates = DateMaid::sweep(dates)
530
+ dates[0].should == Date.new(2011,1,1)
531
+ dates[1].should == Date.new(2011,4,1)
532
+ dates[2].should == Date.new(2011,7,1)
533
+ dates[3].should == Date.new(2011,11,1)
534
+ end
535
+
536
+
528
537
  end