home_run 0.9.0-x86-mswin32

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.
Files changed (75) hide show
  1. data/CHANGELOG +3 -0
  2. data/LICENSE +19 -0
  3. data/README.rdoc +314 -0
  4. data/Rakefile +135 -0
  5. data/bench/cpu_bench.rb +279 -0
  6. data/bench/dt_garbage_bench.rb +11 -0
  7. data/bench/dt_mem_bench.rb +14 -0
  8. data/bench/garbage_bench.rb +11 -0
  9. data/bench/mem_bench.rb +14 -0
  10. data/bin/home_run +91 -0
  11. data/default.mspec +12 -0
  12. data/ext/1.8/date_ext.so +0 -0
  13. data/ext/1.9/date_ext.so +0 -0
  14. data/ext/date.rb +7 -0
  15. data/ext/date/format.rb +842 -0
  16. data/ext/date_ext.c +4548 -0
  17. data/ext/date_parser.c +367 -0
  18. data/ext/date_parser.rl +134 -0
  19. data/ext/datetime.c +2804 -0
  20. data/ext/extconf.rb +6 -0
  21. data/spec/date/accessor_spec.rb +176 -0
  22. data/spec/date/add_month_spec.rb +26 -0
  23. data/spec/date/add_spec.rb +23 -0
  24. data/spec/date/boat_spec.rb +38 -0
  25. data/spec/date/civil_spec.rb +147 -0
  26. data/spec/date/commercial_spec.rb +153 -0
  27. data/spec/date/constants_spec.rb +44 -0
  28. data/spec/date/conversions_spec.rb +246 -0
  29. data/spec/date/day_spec.rb +73 -0
  30. data/spec/date/downto_spec.rb +17 -0
  31. data/spec/date/eql_spec.rb +16 -0
  32. data/spec/date/format_spec.rb +52 -0
  33. data/spec/date/gregorian_spec.rb +52 -0
  34. data/spec/date/hash_spec.rb +11 -0
  35. data/spec/date/julian_spec.rb +129 -0
  36. data/spec/date/leap_spec.rb +19 -0
  37. data/spec/date/minus_month_spec.rb +25 -0
  38. data/spec/date/minus_spec.rb +51 -0
  39. data/spec/date/next_prev_spec.rb +108 -0
  40. data/spec/date/ordinal_spec.rb +83 -0
  41. data/spec/date/parse_spec.rb +442 -0
  42. data/spec/date/parsing_spec.rb +77 -0
  43. data/spec/date/relationship_spec.rb +28 -0
  44. data/spec/date/step_spec.rb +109 -0
  45. data/spec/date/strftime_spec.rb +223 -0
  46. data/spec/date/strptime_spec.rb +201 -0
  47. data/spec/date/succ_spec.rb +20 -0
  48. data/spec/date/today_spec.rb +15 -0
  49. data/spec/date/upto_spec.rb +17 -0
  50. data/spec/datetime/accessor_spec.rb +218 -0
  51. data/spec/datetime/add_month_spec.rb +26 -0
  52. data/spec/datetime/add_spec.rb +36 -0
  53. data/spec/datetime/boat_spec.rb +43 -0
  54. data/spec/datetime/constructor_spec.rb +142 -0
  55. data/spec/datetime/conversions_spec.rb +54 -0
  56. data/spec/datetime/day_spec.rb +73 -0
  57. data/spec/datetime/downto_spec.rb +39 -0
  58. data/spec/datetime/eql_spec.rb +17 -0
  59. data/spec/datetime/format_spec.rb +59 -0
  60. data/spec/datetime/hash_spec.rb +11 -0
  61. data/spec/datetime/leap_spec.rb +19 -0
  62. data/spec/datetime/minus_month_spec.rb +25 -0
  63. data/spec/datetime/minus_spec.rb +77 -0
  64. data/spec/datetime/next_prev_spec.rb +138 -0
  65. data/spec/datetime/now_spec.rb +18 -0
  66. data/spec/datetime/parse_spec.rb +390 -0
  67. data/spec/datetime/parsing_spec.rb +77 -0
  68. data/spec/datetime/relationship_spec.rb +28 -0
  69. data/spec/datetime/step_spec.rb +155 -0
  70. data/spec/datetime/strftime_spec.rb +118 -0
  71. data/spec/datetime/strptime_spec.rb +117 -0
  72. data/spec/datetime/succ_spec.rb +24 -0
  73. data/spec/datetime/upto_spec.rb +39 -0
  74. data/spec/spec_helper.rb +59 -0
  75. metadata +154 -0
@@ -0,0 +1,442 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ ruby_version_is "" ... "1.9" do
4
+ describe "Date.zone_to_diff" do
5
+ it "should return the offset for the given time zone name" do
6
+ Date.zone_to_diff('PST').should == -28800
7
+ Date.zone_to_diff('Tokyo').should == 32400
8
+ end
9
+
10
+ it "should return the offset for the given numeric time zone with colons" do
11
+ Date.zone_to_diff('+08:00').should == 28800
12
+ Date.zone_to_diff('+08:30').should == 30600
13
+ Date.zone_to_diff('+08:30:04').should == 30604
14
+ end
15
+
16
+ it "should return the offset for the given numeric time zone with . or ," do
17
+ Date.zone_to_diff('+08,30').should == 29880
18
+ Date.zone_to_diff('+08.30').should == 29880
19
+ end
20
+
21
+ it "should return the offset for the given numeric time with all digits" do
22
+ Date.zone_to_diff('-1').should == -3600
23
+ Date.zone_to_diff('-10').should == -36000
24
+ Date.zone_to_diff('-101').should == -3660
25
+ Date.zone_to_diff('-1010').should == -36600
26
+ Date.zone_to_diff('-10101').should == -36601
27
+ Date.zone_to_diff('-101010').should == -36610
28
+ Date.zone_to_diff('-1010109').should == -36610
29
+ end
30
+
31
+ it "should return 0 if the time zone is not recognized" do
32
+ Date.zone_to_diff('blah').should == 0
33
+ end
34
+ end
35
+ end
36
+
37
+ describe "Date.parse" do
38
+ it "._parse should parse the date string and return a hash" do
39
+ Date._parse('2008-10-20 11:12:13.0-08:00').should == {:mon=>10, :zone=>'-08:00', :sec=>13, :sec_fraction=>0.0, :year=>2008, :hour=>11, :offset=>-28800, :mday=>20, :min=>12}
40
+ Date._parse('2008-10-20 11:12:13.0-08:00', true).should == {:mon=>10, :zone=>'-08:00', :sec=>13, :sec_fraction=>0.0, :year=>2008, :hour=>11, :offset=>-28800, :mday=>20, :min=>12}
41
+ end
42
+
43
+ it "._parse should not contain fields in the hash that were guessed" do
44
+ Date._parse('2008-10-20').should == {:year=>2008, :mday=>20, :mon=>10}
45
+ Date._parse('11:12:13').should == {:sec=>13, :hour=>11, :min=>12}
46
+ end
47
+
48
+ it "should have defaults and an optional sg value" do
49
+ Date.parse.should == Date.jd
50
+ Date.parse('2008-10-11').should == Date.civil(2008, 10, 11)
51
+ Date.parse('2008-10-11', true).should == Date.civil(2008, 10, 11)
52
+ Date.parse('2008-10-11', true, 1).should == Date.civil(2008, 10, 11)
53
+ end
54
+
55
+ it "raises errors for invalid dates" do
56
+ lambda { Date.parse("") }.should raise_error(ArgumentError)
57
+ lambda { Date.parse("2009-02-29") }.should raise_error(ArgumentError)
58
+ end
59
+
60
+ # The space separator is also different, doesn't work for only numbers
61
+ it "can parse a day name into a Date object" do
62
+ d = Date.parse("friday")
63
+ d.should == Date.commercial(d.cwyear, d.cweek, 5)
64
+ end
65
+
66
+ it "can parse a month name into a Date object" do
67
+ d = Date.parse("october")
68
+ d.should == Date.civil(Date.today.year, 10)
69
+ end
70
+
71
+ it "can parse a month day into a Date object" do
72
+ d = Date.parse("5th")
73
+ d.should == Date.civil(Date.today.year, Date.today.month, 5)
74
+ end
75
+
76
+ # Specs using numbers
77
+ it "can't handle a single digit" do
78
+ lambda{ Date.parse("1") }.should raise_error(ArgumentError)
79
+ end
80
+
81
+ it "can handle DD as month day number" do
82
+ d = Date.parse("10")
83
+ d.should == Date.civil(Date.today.year, Date.today.month, 10)
84
+ end
85
+
86
+ it "can handle DDD as year day number" do
87
+ d = Date.parse("100")
88
+ if Date.gregorian_leap?(Date.today.year)
89
+ d.should == Date.civil(Date.today.year, 4, 9)
90
+ else
91
+ d.should == Date.civil(Date.today.year, 4, 10)
92
+ end
93
+ end
94
+
95
+ it "can handle MMDD as month and day" do
96
+ d = Date.parse("1108")
97
+ d.should == Date.civil(Date.today.year, 11, 8)
98
+ end
99
+
100
+ it "can handle YYDDD as year and day number in 1969--2068" do
101
+ d = Date.parse("10100")
102
+ d.should == Date.civil(2010, 4, 10)
103
+ end
104
+
105
+ it "can handle YYMMDD as year month and day in 1969--2068" do
106
+ d = Date.parse("201023")
107
+ d.should == Date.civil(2020, 10, 23)
108
+ end
109
+
110
+ it "can handle YYDDD as a 2 digit year and day number" do
111
+ d = Date.parse("10100", false)
112
+ d.should == Date.civil(10, 4, 10)
113
+ end
114
+
115
+ it "can handle YYMMDD as 2 digit year month and day" do
116
+ d = Date.parse("201023", false)
117
+ d.should == Date.civil(20, 10, 23)
118
+ end
119
+
120
+ it "can handle YYYYDDD as year and day number" do
121
+ d = Date.parse("1910100")
122
+ d.should == Date.civil(1910, 4, 10)
123
+ end
124
+
125
+ it "can handle YYYYMMDD as year and day number" do
126
+ d = Date.parse("19101101")
127
+ d.should == Date.civil(1910, 11, 1)
128
+ end
129
+ end
130
+
131
+ describe :date_parse, :shared => true do
132
+ it "can parse a mmm-YYYY string into a Date object" do
133
+ d = Date.parse("feb#{@sep}2008")
134
+ d.year.should == 2008
135
+ d.month.should == 2
136
+ d.day.should == 1
137
+ end
138
+
139
+ it "can parse a 'DD mmm YYYY' string into a Date object" do
140
+ d = Date.parse("23#{@sep}feb#{@sep}2008")
141
+ d.year.should == 2008
142
+ d.month.should == 2
143
+ d.day.should == 23
144
+ end
145
+
146
+ it "can parse a 'mmm DD YYYY' string into a Date object" do
147
+ d = Date.parse("feb#{@sep}23#{@sep}2008")
148
+ d.year.should == 2008
149
+ d.month.should == 2
150
+ d.day.should == 23
151
+
152
+ d = Date.parse("feb#{@sep}23,#{@sep}2008")
153
+ d.year.should == 2008
154
+ d.month.should == 2
155
+ d.day.should == 23
156
+
157
+ d = Date.parse("feb#{@sep}23,#{@sep}08")
158
+ d.year.should == 2008
159
+ d.month.should == 2
160
+ d.day.should == 23
161
+ end
162
+
163
+ it "can parse a 'YYYY mmm DD' string into a Date object" do
164
+ d = Date.parse("2008#{@sep}feb#{@sep}23")
165
+ d.year.should == 2008
166
+ d.month.should == 2
167
+ d.day.should == 23
168
+ end
169
+
170
+ it "can parse a month name and day into a Date object" do
171
+ Date.parse("november#{@sep}5th").should == Date.civil(Date.today.year, 11, 5)
172
+ end
173
+
174
+ it "can parse a weekday, month, day, and year into a Date object" do
175
+ Date.parse("Mon Aug 10 2009").should == Date.civil(2009, 8, 10)
176
+ end
177
+
178
+ it "can parse a month name, day and year into a Date object" do
179
+ Date.parse("november#{@sep}5th#{@sep}2005").should == Date.civil(2005, 11, 5)
180
+ end
181
+
182
+ it "can parse a year, month name and day into a Date object" do
183
+ Date.parse("2005#{@sep}november#{@sep}5th").should == Date.civil(2005, 11, 5)
184
+ end
185
+
186
+ it "can parse a year, day and month name into a Date object" do
187
+ Date.parse("5th#{@sep}november#{@sep}2005").should == Date.civil(2005, 11, 5)
188
+ end
189
+
190
+ it "can handle negative year numbers" do
191
+ Date.parse("5th#{@sep}november#{@sep}-2005").should == Date.civil(-2005, 11, 5)
192
+ end
193
+ end
194
+
195
+ describe :date_parse_us, :shared => true do
196
+ it "parses a YYYY#{@sep}MM#{@sep}DD string into a Date object" do
197
+ d = Date.parse("2007#{@sep}10#{@sep}01")
198
+ d.year.should == 2007
199
+ d.month.should == 10
200
+ d.day.should == 1
201
+ end
202
+
203
+ ruby_version_is "" ... "1.9" do
204
+ it "parses a MM#{@sep}DD#{@sep}YYYY string into a Date object" do
205
+ d = Date.parse("10#{@sep}01#{@sep}2007")
206
+ d.year.should == 2007
207
+ d.month.should == 10
208
+ d.day.should == 1
209
+ end
210
+
211
+ it "parses a MM#{@sep}DD#{@sep}YY string into a Date object using the year digits as 20XX" do
212
+ d = Date.parse("10#{@sep}01#{@sep}07")
213
+ d.year.should == 2007
214
+ d.month.should == 10
215
+ d.day.should == 1
216
+ end
217
+
218
+ it "parses a MM#{@sep}DD#{@sep}YY string into a Date object using the year digits as 20XX" do
219
+ d = Date.parse("10#{@sep}01#{@sep}07", true)
220
+ d.year.should == 2007
221
+ d.month.should == 10
222
+ d.day.should == 1
223
+ end
224
+
225
+ it "parses a MM#{@sep}DD#{@sep}YY string into a Date object NOT using the year digits as 20XX" do
226
+ d = Date.parse("10#{@sep}01#{@sep}07", false)
227
+ d.year.should == 7
228
+ d.month.should == 10
229
+ d.day.should == 1
230
+ end
231
+ end
232
+
233
+ ruby_version_is "1.9" do
234
+ it "parses a DD#{@sep}MM#{@sep}YYYY string into a Date object" do
235
+ d = Date.parse("10#{@sep}01#{@sep}2007")
236
+ d.year.should == 2007
237
+ d.month.should == 1
238
+ d.day.should == 10
239
+ end
240
+
241
+ it "parses a YY#{@sep}MM#{@sep}DD string into a Date object using the year digits as 20XX" do
242
+ d = Date.parse("10#{@sep}01#{@sep}07")
243
+ d.year.should == 2010
244
+ d.month.should == 1
245
+ d.day.should == 7
246
+ end
247
+
248
+ it "parses a YY#{@sep}MM#{@sep}DD string into a Date object NOT using the year digits as 20XX" do
249
+ d = Date.parse("10#{@sep}01#{@sep}07", false)
250
+ d.year.should == 10
251
+ d.month.should == 1
252
+ d.day.should == 7
253
+ end
254
+
255
+ it "parses a YY#{@sep}MM#{@sep}DD string into a Date object using the year digits as 20XX" do
256
+ d = Date.parse("10#{@sep}01#{@sep}07", true)
257
+ d.year.should == 2010
258
+ d.month.should == 1
259
+ d.day.should == 7
260
+ end
261
+ end
262
+ end
263
+
264
+ describe "Date#parse with '.' separator" do
265
+ before :all do
266
+ @sep = '.'
267
+ end
268
+
269
+ it_should_behave_like "date_parse"
270
+ end
271
+
272
+ describe "Date#parse with '/' separator" do
273
+ before :all do
274
+ @sep = '/'
275
+ end
276
+
277
+ it_should_behave_like "date_parse"
278
+ end
279
+
280
+ describe "Date#parse with ' ' separator" do
281
+ before :all do
282
+ @sep = ' '
283
+ end
284
+
285
+ it_should_behave_like "date_parse"
286
+ end
287
+
288
+ describe "Date#parse with '/' separator US-style" do
289
+ before :all do
290
+ @sep = '/'
291
+ end
292
+
293
+ it_should_behave_like "date_parse_us"
294
+ end
295
+
296
+ ruby_version_is "" ... "1.8.7" do
297
+ describe "Date#parse with '.' separator US-style" do
298
+ before :all do
299
+ @sep = '.'
300
+ end
301
+
302
+ it_should_behave_like "date_parse_us"
303
+ end
304
+ end
305
+
306
+ describe "Date#parse with '-' separator EU-style" do
307
+ # The - separator let's it work like European format, so it as a different spec
308
+ it "can parse a YYYY-MM-DD string into a Date object" do
309
+ d = Date.parse("2007-10-01")
310
+ d.year.should == 2007
311
+ d.month.should == 10
312
+ d.day.should == 1
313
+ end
314
+
315
+ it "can parse a DD-MM-YYYY string into a Date object" do
316
+ d = Date.parse("10-01-2007")
317
+ d.year.should == 2007
318
+ d.month.should == 1
319
+ d.day.should == 10
320
+ end
321
+
322
+ it "can parse a YY-MM-DD string into a Date object" do
323
+ d = Date.parse("10-01-07")
324
+ d.year.should == 2010
325
+ d.month.should == 1
326
+ d.day.should == 7
327
+ end
328
+
329
+ it "can parse a YY-DD-MM string into a Date object" do
330
+ d = Date.parse("10-01-07")
331
+ d.year.should == 2010
332
+ d.month.should == 1
333
+ d.day.should == 7
334
+ end
335
+
336
+ it "can parse a MM-DD-YY string into a Date object NOT using the year digits as 20XX" do
337
+ d = Date.parse("10-01-07", false)
338
+ d.year.should == 10
339
+ d.month.should == 1
340
+ d.day.should == 7
341
+ end
342
+
343
+ it "can parse a YY-MM-DD string into a Date object using the year digits as 20XX" do
344
+ d = Date.parse("10-01-07", true)
345
+ d.year.should == 2010
346
+ d.month.should == 1
347
+ d.day.should == 7
348
+ end
349
+ end
350
+
351
+ ruby_version_is "1.8.7" do
352
+ describe "Date#parse(.)" do
353
+ it "parses a YYYY.MM.DD string into a Date object" do
354
+ d = Date.parse("2007.10.01")
355
+ d.year.should == 2007
356
+ d.month.should == 10
357
+ d.day.should == 1
358
+ end
359
+
360
+ it "parses a DD.MM.YYYY string into a Date object" do
361
+ d = Date.parse("10.01.2007")
362
+ d.year.should == 2007
363
+ d.month.should == 1
364
+ d.day.should == 10
365
+ end
366
+
367
+ ruby_version_is "" ... "1.9" do
368
+ it "parses a YY.MM.DD string into a Date object" do
369
+ d = Date.parse("10.01.07")
370
+ d.year.should == 2010
371
+ d.month.should == 1
372
+ d.day.should == 7
373
+ end
374
+ end
375
+
376
+ ruby_version_is "1.9" do
377
+ it "parses a YY.MM.DD string into a Date object" do
378
+ d = Date.parse("10.01.07")
379
+ d.year.should == 2010
380
+ d.month.should == 1
381
+ d.day.should == 7
382
+ end
383
+ end
384
+
385
+ it "parses a YY.MM.DD string into a Date object using the year digits as 20XX" do
386
+ d = Date.parse("10.01.07", true)
387
+ d.year.should == 2010
388
+ d.month.should == 1
389
+ d.day.should == 7
390
+ end
391
+ end
392
+ end
393
+
394
+ describe "Date::Format::STYLE" do
395
+ before do
396
+ @style = Date::Format::STYLE.dup
397
+ end
398
+ after do
399
+ Date::Format::STYLE.replace(@style)
400
+ end
401
+
402
+ it "Can change DD/DD/DD parsing by modifying Format::STYLE[:slash]" do
403
+ Date::Format::STYLE[:slash] = :ymd
404
+ d = Date.parse("10/01/07")
405
+ d.year.should == 2010
406
+ d.month.should == 1
407
+ d.day.should == 7
408
+
409
+ Date::Format::STYLE[:slash] = :mdy
410
+ d = Date.parse("10/01/07")
411
+ d.year.should == 2007
412
+ d.month.should == 10
413
+ d.day.should == 1
414
+
415
+ Date::Format::STYLE[:slash] = :dmy
416
+ d = Date.parse("10/01/07")
417
+ d.year.should == 2007
418
+ d.month.should == 1
419
+ d.day.should == 10
420
+ end
421
+
422
+ it "Can change DD.DD.DD parsing by modifying Format::STYLE[:dot]" do
423
+ Date::Format::STYLE[:dot] = :ymd
424
+ d = Date.parse("10.01.07")
425
+ d.year.should == 2010
426
+ d.month.should == 1
427
+ d.day.should == 7
428
+
429
+ Date::Format::STYLE[:dot] = :mdy
430
+ d = Date.parse("10.01.07")
431
+ d.year.should == 2007
432
+ d.month.should == 10
433
+ d.day.should == 1
434
+
435
+ Date::Format::STYLE[:dot] = :dmy
436
+ d = Date.parse("10.01.07")
437
+ d.year.should == 2007
438
+ d.month.should == 1
439
+ d.day.should == 10
440
+ end
441
+ end
442
+
@@ -0,0 +1,77 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ ruby_version_is "1.9" do
4
+ describe "Date parsing methods" do
5
+ it "._httpdate should parse an HTTP format" do
6
+ Date._httpdate("Fri, 02 Jan 2009 00:00:00 GMT").should ==
7
+ {:year=>2009, :mon=>1, :mday=>2, :wday=>5, :hour=>0, :min=>0, :sec=>0, :offset=>0, :zone=>'GMT'}
8
+ end
9
+
10
+ it "._iso8601 should parse an ISO8601 format" do
11
+ Date._iso8601("2009-01-02").should == {:year=>2009, :mon=>1, :mday=>2}
12
+ end
13
+
14
+ it "._jisx03010 should parse an JIS X 0301 format" do
15
+ Date._jisx0301("H21.01.02").should == {:year=>2009, :mon=>1, :mday=>2}
16
+ Date._jisx0301("S63.01.02").should == {:year=>1988, :mon=>1, :mday=>2}
17
+ Date._jisx0301("T14.01.02").should == {:year=>1925, :mon=>1, :mday=>2}
18
+ Date._jisx0301("M44.01.02").should == {:year=>1911, :mon=>1, :mday=>2}
19
+ Date._jisx0301("M06.01.02").should == {:year=>1873, :mon=>1, :mday=>2}
20
+ Date._jisx0301("1872-01-02").should == {:year=>1872, :mon=>1, :mday=>2}
21
+ Date._jisx0301("1867-01-02").should == {:year=>1867, :mon=>1, :mday=>2}
22
+ end
23
+
24
+ it "._rfc2822 should parse an RFC2822 format" do
25
+ Date._rfc2822("Fri, 2 Jan 2009 00:00:00 +0000").should ==
26
+ {:year=>2009, :mon=>1, :mday=>2, :wday=>5, :hour=>0, :min=>0, :sec=>0, :offset=>0, :zone=>'+0000'}
27
+ end
28
+
29
+ it "._rfc822 should parse an RFC822 format" do
30
+ Date._rfc822("Fri, 2 Jan 2009 00:00:00 +0000").should ==
31
+ {:year=>2009, :mon=>1, :mday=>2, :wday=>5, :hour=>0, :min=>0, :sec=>0, :offset=>0, :zone=>'+0000'}
32
+ end
33
+
34
+ it "._rfc3339 should parse an RFC3339 format" do
35
+ Date._rfc3339("2009-01-02T00:00:00+00:00").should ==
36
+ {:year=>2009, :mon=>1, :mday=>2, :hour=>0, :min=>0, :sec=>0, :offset=>0, :zone=>'+00:00'}
37
+ end
38
+
39
+ it "._xmlschema should parse an ISO8601 format" do
40
+ Date._xmlschema("2009-01-02").should == {:year=>2009, :mon=>1, :mday=>2}
41
+ end
42
+
43
+ it ".httpdate should parse an HTTP format" do
44
+ Date.httpdate("Fri, 02 Jan 2009 00:00:00 GMT").should == Date.new(2009, 1, 2)
45
+ end
46
+
47
+ it ".iso8601 should parse an ISO8601 format" do
48
+ Date.iso8601("2009-01-02").should == Date.new(2009, 1, 2)
49
+ end
50
+
51
+ it ".jisx03010 should parse an JIS X 0301 format" do
52
+ Date.jisx0301("H21.01.02").should == Date.new(2009, 1, 2)
53
+ Date.jisx0301("S63.01.02").should == Date.new(1988, 1, 2)
54
+ Date.jisx0301("T14.01.02").should == Date.new(1925, 1, 2)
55
+ Date.jisx0301("M44.01.02").should == Date.new(1911, 1, 2)
56
+ Date.jisx0301("M06.01.02").should == Date.new(1873, 1, 2)
57
+ Date.jisx0301("1872-01-02").should == Date.new(1872, 1, 2)
58
+ Date.jisx0301("1867-01-02").should == Date.new(1867, 1, 2)
59
+ end
60
+
61
+ it ".rfc2822 should parse an RFC2822 format" do
62
+ Date.rfc2822("Fri, 2 Jan 2009 00:00:00 +0000").should == Date.new(2009, 1, 2)
63
+ end
64
+
65
+ it ".rfc822 should parse an RFC822 format" do
66
+ Date.rfc822("Fri, 2 Jan 2009 00:00:00 +0000").should == Date.new(2009, 1, 2)
67
+ end
68
+
69
+ it ".rfc3339 should parse an RFC3339 format" do
70
+ Date.rfc3339("2009-01-02T00:00:00+00:00").should == Date.new(2009, 1, 2)
71
+ end
72
+
73
+ it ".xmlschema should parse an ISO8601 format" do
74
+ Date.xmlschema("2009-01-02").should == Date.new(2009, 1, 2)
75
+ end
76
+ end
77
+ end