From 899d2c14b055e180308396b5ef36397c0737f6f7 Mon Sep 17 00:00:00 2001 From: tadf Date: Tue, 31 May 2011 13:28:48 +0000 Subject: * ext/date/date_core.c: use simple/complex mode instead of light/right mode. * test/date/*.rb: followed the above changes. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/date/test_switch_hitter.rb | 134 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 129 insertions(+), 5 deletions(-) (limited to 'test/date/test_switch_hitter.rb') diff --git a/test/date/test_switch_hitter.rb b/test/date/test_switch_hitter.rb index d309c8ee69..9500821b2b 100644 --- a/test/date/test_switch_hitter.rb +++ b/test/date/test_switch_hitter.rb @@ -235,6 +235,116 @@ class TestSH < Test::Unit::TestCase assert_equal(false, Date.new(2001,2,3) === Rational('4903886/2')) end + def test_period + # -5000 + d = Date.new(-5000,1,1) + assert_equal([-5000, 1, 1, 5], [d.year, d.mon, d.mday, d.wday]) + d2 = d.gregorian + assert_equal([-5001, 11, 22, 5], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.new(-5000,1,1,Date::JULIAN) + assert_equal([-5000, 1, 1, 5], [d.year, d.mon, d.mday, d.wday]) + d2 = d.gregorian + assert_equal([-5001, 11, 22, 5], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.new(-5000,1,1,Date::GREGORIAN) + assert_equal([-5000, 1, 1, 3], [d.year, d.mon, d.mday, d.wday]) + d2 = d.julian + assert_equal([-5000, 2, 10, 3], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.jd(-105192) + assert_equal([-5000, 1, 1, 5], [d.year, d.mon, d.mday, d.wday]) + d2 = d.gregorian + assert_equal([-5001, 11, 22, 5], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.jd(-105192,Date::JULIAN) + assert_equal([-5000, 1, 1, 5], [d.year, d.mon, d.mday, d.wday]) + d2 = d.gregorian + assert_equal([-5001, 11, 22, 5], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.jd(-105152,Date::GREGORIAN) + assert_equal([-5000, 1, 1, 3], [d.year, d.mon, d.mday, d.wday]) + d2 = d.julian + assert_equal([-5000, 2, 10, 3], [d2.year, d2.mon, d2.mday, d.wday]) + + # -5000000 + d = Date.new(-5_000_000,1,1) + assert_equal([-5_000_000, 1, 1, 3], [d.year, d.mon, d.mday, d.wday]) + d2 = d.gregorian + assert_equal([-5_000_103, 4, 28, 3], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.new(-5_000_000,1,1,Date::JULIAN) + assert_equal([-5_000_000, 1, 1, 3], [d.year, d.mon, d.mday, d.wday]) + d2 = d.gregorian + assert_equal([-5_000_103, 4, 28, 3], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.new(-5_000_000,1,1,Date::GREGORIAN) + assert_equal([-5_000_000, 1, 1, 6], [d.year, d.mon, d.mday, d.wday]) + d2 = d.julian + assert_equal([-4_999_898, 9, 4, 6], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.jd(-1824528942) + assert_equal([-5_000_000, 1, 1, 3], [d.year, d.mon, d.mday, d.wday]) + d2 = d.gregorian + assert_equal([-5_000_103, 4, 28, 3], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.jd(-1824528942,Date::JULIAN) + assert_equal([-5_000_000, 1, 1, 3], [d.year, d.mon, d.mday, d.wday]) + d2 = d.gregorian + assert_equal([-5_000_103, 4, 28, 3], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.jd(-1824491440,Date::GREGORIAN) + assert_equal([-5_000_000, 1, 1, 6], [d.year, d.mon, d.mday, d.wday]) + d2 = d.julian + assert_equal([-4_999_898, 9, 4, 6], [d2.year, d2.mon, d2.mday, d.wday]) + + # 5000000 + d = Date.new(5_000_000,1,1) + assert_equal([5_000_000, 1, 1, 6], [d.year, d.mon, d.mday, d.wday]) + d2 = d.julian + assert_equal([4_999_897, 5, 3, 6], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.new(5_000_000,1,1,Date::JULIAN) + assert_equal([5_000_000, 1, 1, 5], [d.year, d.mon, d.mday, d.wday]) + d2 = d.gregorian + assert_equal([5_000_102, 9, 1, 5], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.new(5_000_000,1,1,Date::GREGORIAN) + assert_equal([5_000_000, 1, 1, 6], [d.year, d.mon, d.mday, d.wday]) + d2 = d.julian + assert_equal([4_999_897, 5, 3, 6], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.jd(1827933560) + assert_equal([5_000_000, 1, 1, 6], [d.year, d.mon, d.mday, d.wday]) + d2 = d.julian + assert_equal([4_999_897, 5, 3, 6], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.jd(1827971058,Date::JULIAN) + assert_equal([5_000_000, 1, 1, 5], [d.year, d.mon, d.mday, d.wday]) + d2 = d.gregorian + assert_equal([5_000_102, 9, 1, 5], [d2.year, d2.mon, d2.mday, d.wday]) + + d = Date.jd(1827933560,Date::GREGORIAN) + assert_equal([5_000_000, 1, 1, 6], [d.year, d.mon, d.mday, d.wday]) + d2 = d.julian + assert_equal([4_999_897, 5, 3, 6], [d2.year, d2.mon, d2.mday, d.wday]) + + # dt + d = DateTime.new(-123456789,2,3,4,5,6,0) + assert_equal([-123456789, 2, 3, 4, 5, 6, 1], + [d.year, d.mon, d.mday, d.hour, d.min, d.sec, d.wday]) + d2 = d.gregorian + assert_equal([-123459325, 12, 27, 4, 5, 6, 1], + [d2.year, d2.mon, d2.mday, d2.hour, d2.min, d2.sec, d.wday]) + + d = DateTime.new(123456789,2,3,4,5,6,0) + assert_equal([123456789, 2, 3, 4, 5, 6, 5], + [d.year, d.mon, d.mday, d.hour, d.min, d.sec, d.wday]) + d2 = d.julian + assert_equal([123454254, 1, 19, 4, 5, 6, 5], + [d2.year, d2.mon, d2.mday, d2.hour, d2.min, d2.sec, d.wday]) + end + def test_marshal s = "\x04\bU:\tDate[\bU:\rRational[\ai\x03\xCF\xD3Ji\ai\x00o:\x13Date::Infinity\x06:\a@di\xFA" d = Marshal.load(s) @@ -245,11 +355,6 @@ class TestSH < Test::Unit::TestCase assert_equal(DateTime.new(2001,2,3,4,5,6,Rational(9,24),Date::GREGORIAN), d) end - def test_base - skip unless defined?(Date.test_all) - assert_equal(true, Date.test_all) - end - def test_taint h = Date._strptime('15:43+09:00', '%R%z') assert_equal(false, h[:zone].tainted?) @@ -277,4 +382,23 @@ class TestSH < Test::Unit::TestCase assert_equal(true, s.tainted?) end + def test_dup + d = Date.new(2001,2,3) + d2 = d.dup + assert_not_equal(d.object_id, d2.object_id) + assert_kind_of(Date, d2) + assert_equal(d, d2) + + d = DateTime.new(2001,2,3) + d2 = d.dup + assert_not_equal(d.object_id, d2.object_id) + assert_kind_of(DateTime, d2) + assert_equal(d, d2) + end + + def test_base + skip unless defined?(Date.test_all) + assert_equal(true, Date.test_all) + end + end -- cgit v1.2.3