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.
- data/CHANGELOG +3 -0
- data/LICENSE +19 -0
- data/README.rdoc +314 -0
- data/Rakefile +135 -0
- data/bench/cpu_bench.rb +279 -0
- data/bench/dt_garbage_bench.rb +11 -0
- data/bench/dt_mem_bench.rb +14 -0
- data/bench/garbage_bench.rb +11 -0
- data/bench/mem_bench.rb +14 -0
- data/bin/home_run +91 -0
- data/default.mspec +12 -0
- data/ext/1.8/date_ext.so +0 -0
- data/ext/1.9/date_ext.so +0 -0
- data/ext/date.rb +7 -0
- data/ext/date/format.rb +842 -0
- data/ext/date_ext.c +4548 -0
- data/ext/date_parser.c +367 -0
- data/ext/date_parser.rl +134 -0
- data/ext/datetime.c +2804 -0
- data/ext/extconf.rb +6 -0
- data/spec/date/accessor_spec.rb +176 -0
- data/spec/date/add_month_spec.rb +26 -0
- data/spec/date/add_spec.rb +23 -0
- data/spec/date/boat_spec.rb +38 -0
- data/spec/date/civil_spec.rb +147 -0
- data/spec/date/commercial_spec.rb +153 -0
- data/spec/date/constants_spec.rb +44 -0
- data/spec/date/conversions_spec.rb +246 -0
- data/spec/date/day_spec.rb +73 -0
- data/spec/date/downto_spec.rb +17 -0
- data/spec/date/eql_spec.rb +16 -0
- data/spec/date/format_spec.rb +52 -0
- data/spec/date/gregorian_spec.rb +52 -0
- data/spec/date/hash_spec.rb +11 -0
- data/spec/date/julian_spec.rb +129 -0
- data/spec/date/leap_spec.rb +19 -0
- data/spec/date/minus_month_spec.rb +25 -0
- data/spec/date/minus_spec.rb +51 -0
- data/spec/date/next_prev_spec.rb +108 -0
- data/spec/date/ordinal_spec.rb +83 -0
- data/spec/date/parse_spec.rb +442 -0
- data/spec/date/parsing_spec.rb +77 -0
- data/spec/date/relationship_spec.rb +28 -0
- data/spec/date/step_spec.rb +109 -0
- data/spec/date/strftime_spec.rb +223 -0
- data/spec/date/strptime_spec.rb +201 -0
- data/spec/date/succ_spec.rb +20 -0
- data/spec/date/today_spec.rb +15 -0
- data/spec/date/upto_spec.rb +17 -0
- data/spec/datetime/accessor_spec.rb +218 -0
- data/spec/datetime/add_month_spec.rb +26 -0
- data/spec/datetime/add_spec.rb +36 -0
- data/spec/datetime/boat_spec.rb +43 -0
- data/spec/datetime/constructor_spec.rb +142 -0
- data/spec/datetime/conversions_spec.rb +54 -0
- data/spec/datetime/day_spec.rb +73 -0
- data/spec/datetime/downto_spec.rb +39 -0
- data/spec/datetime/eql_spec.rb +17 -0
- data/spec/datetime/format_spec.rb +59 -0
- data/spec/datetime/hash_spec.rb +11 -0
- data/spec/datetime/leap_spec.rb +19 -0
- data/spec/datetime/minus_month_spec.rb +25 -0
- data/spec/datetime/minus_spec.rb +77 -0
- data/spec/datetime/next_prev_spec.rb +138 -0
- data/spec/datetime/now_spec.rb +18 -0
- data/spec/datetime/parse_spec.rb +390 -0
- data/spec/datetime/parsing_spec.rb +77 -0
- data/spec/datetime/relationship_spec.rb +28 -0
- data/spec/datetime/step_spec.rb +155 -0
- data/spec/datetime/strftime_spec.rb +118 -0
- data/spec/datetime/strptime_spec.rb +117 -0
- data/spec/datetime/succ_spec.rb +24 -0
- data/spec/datetime/upto_spec.rb +39 -0
- data/spec/spec_helper.rb +59 -0
- 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
|