quandl_babelfish 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -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