1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/spec/rubyspec/library/date/parse_spec.rb
eregon 95e8c48dd3 Add in-tree mspec and ruby/spec
* For easier modifications of ruby/spec by MRI developers.
* .gitignore: track changes under spec.
* spec/mspec, spec/rubyspec: add in-tree mspec and ruby/spec.
  These files can therefore be updated like any other file in MRI.
  Instructions are provided in spec/README.
  [Feature #13156] [ruby-core:79246]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-07 12:04:49 +00:00

137 lines
3.3 KiB
Ruby

require File.expand_path('../../../spec_helper', __FILE__)
require File.expand_path('../shared/parse', __FILE__)
require File.expand_path('../shared/parse_us', __FILE__)
require File.expand_path('../shared/parse_eu', __FILE__)
require 'date'
describe "Date#parse" do
# The space separator is also different, doesn't work for only numbers
it "parses a day name into a Date object" do
d = Date.parse("friday")
d.should == Date.commercial(d.cwyear, d.cweek, 5)
end
it "parses a month name into a Date object" do
d = Date.parse("october")
d.should == Date.civil(Date.today.year, 10)
end
it "parses a month day into a Date object" do
d = Date.parse("5th")
d.should == Date.civil(Date.today.year, Date.today.month, 5)
end
# Specs using numbers
it "throws an argument error for a single digit" do
lambda{ Date.parse("1") }.should raise_error(ArgumentError)
end
it "parses DD as month day number" do
d = Date.parse("10")
d.should == Date.civil(Date.today.year, Date.today.month, 10)
end
it "parses DDD as year day number" do
d = Date.parse("100")
if Date.gregorian_leap?(Date.today.year)
d.should == Date.civil(Date.today.year, 4, 9)
else
d.should == Date.civil(Date.today.year, 4, 10)
end
end
it "parses MMDD as month and day" do
d = Date.parse("1108")
d.should == Date.civil(Date.today.year, 11, 8)
end
it "parses YYDDD as year and day number in 1969--2068" do
d = Date.parse("10100")
d.should == Date.civil(2010, 4, 10)
end
it "parses YYMMDD as year, month and day in 1969--2068" do
d = Date.parse("201023")
d.should == Date.civil(2020, 10, 23)
end
it "parses YYYYDDD as year and day number" do
d = Date.parse("1910100")
d.should == Date.civil(1910, 4, 10)
end
it "parses YYYYMMDD as year, month and day number" do
d = Date.parse("19101101")
d.should == Date.civil(1910, 11, 1)
end
end
describe "Date#parse with '.' separator" do
before :all do
@sep = '.'
end
it_should_behave_like "date_parse"
end
describe "Date#parse with '/' separator" do
before :all do
@sep = '/'
end
it_should_behave_like "date_parse"
end
describe "Date#parse with ' ' separator" do
before :all do
@sep = ' '
end
it_should_behave_like "date_parse"
end
describe "Date#parse with '/' separator US-style" do
before :all do
@sep = '/'
end
it_should_behave_like "date_parse_us"
end
describe "Date#parse with '-' separator EU-style" do
before :all do
@sep = '-'
end
it_should_behave_like "date_parse_eu"
end
describe "Date#parse(.)" do
it "parses YYYY.MM.DD into a Date object" do
d = Date.parse("2007.10.01")
d.year.should == 2007
d.month.should == 10
d.day.should == 1
end
it "parses DD.MM.YYYY into a Date object" do
d = Date.parse("10.01.2007")
d.year.should == 2007
d.month.should == 1
d.day.should == 10
end
it "parses YY.MM.DD into a Date object using the year 20YY" do
d = Date.parse("10.01.07")
d.year.should == 2010
d.month.should == 1
d.day.should == 7
end
it "parses YY.MM.DD using the year digits as 20YY when given true as additional argument" do
d = Date.parse("10.01.07", true)
d.year.should == 2010
d.month.should == 1
d.day.should == 7
end
end