From: Yusuke Endoh Date: 2010-01-28T22:58:48+09:00 Subject: [ruby-dev:40215] [Bug #2675](Rejected) rubyspec: Date#valid_civil? should be able to handle negative months and days FAILED チケット #2675 が更新されました。 (by Yusuke Endoh) ステータス OpenからRejectedに変更 ruby -v ruby 1.9.2dev (2010-01-28 trunk 26458) [i686-linux]にセット > したがって、1582年-3月-18日は、1.8 では存在するが、1.9 では存在しないと > いうことになります。 説明ありがとうございます!わかりました。 聞かないと到底わかりそうになかったです。 このチケットは reject しつつ、以下のようなパッチを rubyspec に 送ろうと思います。 diff --git a/library/date/civil_spec.rb b/library/date/civil_spec.rb index e26968c..d169cc2 100644 --- a/library/date/civil_spec.rb +++ b/library/date/civil_spec.rb @@ -10,19 +10,56 @@ end describe "Date#valid_civil?" do - it "should be able to determine if a date is valid" do - Date.valid_civil?(1582, 10, 14).should == nil - Date.valid_civil?(1582, 10, 15).should == Date.civil(1582, 10, 15).jd - Date.valid_civil?(1582, 10, 14, Date::ENGLAND).should_not == nil - Date.valid_civil?(1582, 10, 14, Date::ENGLAND).should == Date.civil(1582, 10, 14, Date::ENGLAND).jd + ruby_version_is "" ... "1.9" do + it "should be able to determine if a date is valid" do + Date.valid_civil?(1582, 10, 14).should == nil + Date.valid_civil?(1582, 10, 15).should == Date.civil(1582, 10, 15).jd + Date.valid_civil?(1582, 10, 14, Date::ENGLAND).should_not == nil + Date.valid_civil?(1582, 10, 14, Date::ENGLAND).should == Date.civil(1582, 10, 14, Date::ENGLAND).jd + end + + it "should be able to handle negative months and days" do + # October 1582 + # S M Tu W Th F S + # -31 -30 -29 -28 -17 -16 + # -15 -14 -13 -12 -11 -10 -9 + # -8 -7 -6 -5 -4 -3 -2 + # -1 + Date.valid_civil?(1582, -3, -31).should == Date.civil(1582, 10, 1).jd + Date.valid_civil?(1582, -3, -28).should == Date.civil(1582, 10, 4).jd + Date.valid_civil?(1582, -3, -27).should == nil + Date.valid_civil?(1582, -3, -22).should == nil + Date.valid_civil?(1582, -3, -21).should == nil + Date.valid_civil?(1582, -3, -18).should == nil + Date.valid_civil?(1582, -3, -17).should == Date.civil(1582, 10, 15).jd + + Date.valid_civil?(2007, -11, -10).should == Date.civil(2007, 2, 19).jd + Date.valid_civil?(2008, -11, -10).should == Date.civil(2008, 2, 20).jd + end end - - it "should be able to handle negative months and days" do - Date.valid_civil?(1582, -3, -18).should == nil - Date.valid_civil?(1582, -3, -17).should == Date.civil(1582, 10, 15).jd + + ruby_version_is "1.9" do + it "should be able to determine if a date is valid" do + Date.valid_civil?(1582, 10, 14).should == false + Date.valid_civil?(1582, 10, 15).should == true + Date.valid_civil?(1582, 10, 14, Date::ENGLAND).should == true + end + + it "should be able to handle negative months and days" do + # October 1582 + # S M Tu W Th F S + # -21 -20 -19 -18 -17 -16 + # -15 -14 -13 -12 -11 -10 -9 + # -8 -7 -6 -5 -4 -3 -2 + # -1 + Date.valid_civil?(1582, -3, -22).should == false + Date.valid_civil?(1582, -3, -21).should == true + Date.valid_civil?(1582, -3, -18).should == true + Date.valid_civil?(1582, -3, -17).should == true - Date.valid_civil?(2007, -11, -10).should == Date.civil(2007, 2, 19).jd - Date.valid_civil?(2008, -11, -10).should == Date.civil(2008, 2, 20).jd + Date.valid_civil?(2007, -11, -10).should == true + Date.valid_civil?(2008, -11, -10).should == true + end end end -- Yusuke Endoh ---------------------------------------- http://redmine.ruby-lang.org/issues/show/2675 ---------------------------------------- http://redmine.ruby-lang.org