From fcbf63e62c627deae76c1b8cb8c0876c536ed811 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Mon, 16 Mar 2020 18:49:26 +0900 Subject: Fresh start --- jni/ruby/test/date/test_date_arith.rb | 264 ++++++++++++++++++++++++++++++++++ 1 file changed, 264 insertions(+) create mode 100644 jni/ruby/test/date/test_date_arith.rb (limited to 'jni/ruby/test/date/test_date_arith.rb') diff --git a/jni/ruby/test/date/test_date_arith.rb b/jni/ruby/test/date/test_date_arith.rb new file mode 100644 index 0000000..7b79c18 --- /dev/null +++ b/jni/ruby/test/date/test_date_arith.rb @@ -0,0 +1,264 @@ +require 'test/unit' +require 'date' + +class TestDateArith < Test::Unit::TestCase + + def new_offset + d = DateTime.new(2002, 3, 14) + assert_equal(Rational(9, 24), d.new_offset(Rational(9, 24)).offset) + assert_equal(Rational(9, 24), d.new_offset('+0900').offset) + end + + def test__plus + d = Date.new(2000,2,29) + -1 + assert_equal([2000, 2, 28], [d.year, d.mon, d.mday]) + d = Date.new(2000,2,29) + 0 + assert_equal([2000, 2, 29], [d.year, d.mon, d.mday]) + d = Date.new(2000,2,29) + 1 + assert_equal([2000, 3, 1], [d.year, d.mon, d.mday]) + + d = DateTime.new(2000,2,29) + 1.to_r/2 + assert_equal([2000, 2, 29, 12, 0, 0], + [d.year, d.mon, d.mday, d.hour, d.min, d.sec]) + end + + def test__plus__ex + e = TypeError + assert_raise(e) do + Date.new(2000,2,29) + 'foo' + end + assert_raise(e) do + DateTime.new(2000,2,29) + 'foo' + end + assert_raise(e) do + Date.new(2000,2,29) + Time.mktime(2000,2,29) + end + assert_raise(e) do + DateTime.new(2000,2,29) + Time.mktime(2000,2,29) + end + end + + def test__minus + d = Date.new(2000,3,1) - -1 + assert_equal([2000, 3, 2], [d.year, d.mon, d.mday]) + d = Date.new(2000,3,1) - 0 + assert_equal([2000, 3, 1], [d.year, d.mon, d.mday]) + d = Date.new(2000,3,1) - 1 + assert_equal([2000, 2, 29], [d.year, d.mon, d.mday]) + + d = Date.new(2000,3,1) - Date.new(2000,2,29) + assert_equal(1, d) + d = Date.new(2000,2,29) - Date.new(2000,3,1) + assert_equal(-1, d) + + d = DateTime.new(2000,3,1) - 1.to_r/2 + assert_equal([2000, 2, 29, 12, 0, 0], + [d.year, d.mon, d.mday, d.hour, d.min, d.sec]) + end + + def test__minus__ex + e = TypeError + assert_raise(e) do + Date.new(2000,2,29) - 'foo' + end + assert_raise(e) do + DateTime.new(2000,2,29) - 'foo' + end + assert_raise(e) do + Date.new(2000,2,29) - Time.mktime(2000,2,29) + end + assert_raise(e) do + DateTime.new(2000,2,29) - Time.mktime(2000,2,29) + end + end + + def test__compare + assert_equal(0, (Date.new(2000,1,1) <=> Date.new(2000,1,1))) + assert_equal(-1, (Date.new(2000,1,1) <=> Date.new(2000,1,2))) + assert_equal(1, (Date.new(2000,1,2) <=> Date.new(2000,1,1))) + assert_equal(0, (Date.new(2001,1,4,Date::JULIAN) <=> + Date.new(2001,1,17, Date::GREGORIAN))) + assert_equal(0, (DateTime.new(2001,1,4,0,0,0,0,Date::JULIAN) <=> + DateTime.new(2001,1,17,0,0,0,0,Date::GREGORIAN))) + end + + def test_prev + d = Date.new(2000,1,1) + assert_raise(NoMethodError) do + d.prev + end + end + + def test_prev_day + d = Date.new(2001,1,1).prev_day + assert_equal([2000, 12, 31], [d.year, d.mon, d.mday]) + d = Date.new(2001,1,1).prev_day(2) + assert_equal([2000, 12, 30], [d.year, d.mon, d.mday]) + d = Date.new(2000,12,31).prev_day(-2) + assert_equal([2001, 1, 2], [d.year, d.mon, d.mday]) + + d = DateTime.new(2000,3,1).prev_day(1.to_r/2) + assert_equal([2000, 2, 29, 12, 0, 0], [d.year, d.mon, d.mday, d.hour, d.min, d.sec]) + end + + def test_prev_month + d = Date.new(2000,1,31) << -1 + assert_equal([2000, 2, 29], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31) << 1 + assert_equal([1999, 12, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31) << 12 + assert_equal([1999, 1, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31) << 14 + assert_equal([1998, 11, 30], [d.year, d.mon, d.mday]) + + end + + def test_prev_month__2 + d = Date.new(2000,1,31).prev_month(-1) + assert_equal([2000, 2, 29], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31).prev_month + assert_equal([1999, 12, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31).prev_month(12) + assert_equal([1999, 1, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31).prev_month(14) + assert_equal([1998, 11, 30], [d.year, d.mon, d.mday]) + end + + def test_prev_year + d = Date.new(2000,1,31).prev_year(-1) + assert_equal([2001, 1, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31).prev_year + assert_equal([1999, 1, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31).prev_year(10) + assert_equal([1990, 1, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31).prev_year(100) + assert_equal([1900, 1, 31], [d.year, d.mon, d.mday]) + end + + def test_next + d = Date.new(2000,12,31).next + assert_equal([2001, 1, 1], [d.year, d.mon, d.mday]) + d = Date.new(2000,12,31).succ + assert_equal([2001, 1, 1], [d.year, d.mon, d.mday]) + + d = Date.today + d2 = d.next + assert_equal(d, (d2 - 1)) + d = Date.today + d2 = d.succ + assert_equal(d, (d2 - 1)) + + d = DateTime.now + d2 = d.next + assert_equal(d, (d2 - 1)) + d = DateTime.now + d2 = d.succ + assert_equal(d, (d2 - 1)) + end + + def test_next_day + d = Date.new(2000,12,31).next_day + assert_equal([2001, 1, 1], [d.year, d.mon, d.mday]) + d = Date.new(2000,12,31).next_day(2) + assert_equal([2001, 1, 2], [d.year, d.mon, d.mday]) + d = Date.new(2001,1,1).next_day(-2) + assert_equal([2000, 12, 30], [d.year, d.mon, d.mday]) + + d = DateTime.new(2000,2,29).next_day(1.to_r/2) + assert_equal([2000, 2, 29, 12, 0, 0], [d.year, d.mon, d.mday, d.hour, d.min, d.sec]) + end + + def test_next_month + d = Date.new(2000,1,31) >> -1 + assert_equal([1999, 12, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31) >> 1 + assert_equal([2000, 2, 29], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31) >> 12 + assert_equal([2001, 1, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31) >> 13 + assert_equal([2001, 2, 28], [d.year, d.mon, d.mday]) + end + + def test_next_month__2 + d = Date.new(2000,1,31).next_month(-1) + assert_equal([1999, 12, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31).next_month + assert_equal([2000, 2, 29], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31).next_month(12) + assert_equal([2001, 1, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31).next_month(13) + assert_equal([2001, 2, 28], [d.year, d.mon, d.mday]) + end + + def test_next_year + d = Date.new(2000,1,31).next_year(-1) + assert_equal([1999, 1, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31).next_year + assert_equal([2001, 1, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31).next_year(10) + assert_equal([2010, 1, 31], [d.year, d.mon, d.mday]) + d = Date.new(2000,1,31).next_year(100) + assert_equal([2100, 1, 31], [d.year, d.mon, d.mday]) + end + + def test_downto + p = Date.new(2001,1,14) + q = Date.new(2001,1,7) + i = 0 + p.downto(q) do + i += 1 + end + assert_equal(8, i) + end + + def test_downto__noblock + p = Date.new(2001,1,14) + q = Date.new(2001,1,7) + e = p.downto(q) + assert_equal(8, e.to_a.size) + end + + def test_upto + p = Date.new(2001,1,14) + q = Date.new(2001,1,21) + i = 0 + p.upto(q) do + i += 1 + end + assert_equal(8, i) + end + + def test_upto__noblock + p = Date.new(2001,1,14) + q = Date.new(2001,1,21) + e = p.upto(q) + assert_equal(8, e.to_a.size) + end + + def test_step + p = Date.new(2001,1,14) + q = Date.new(2001,1,21) + i = 0 + p.step(q, 2) do + i += 1 + end + assert_equal(4, i) + + i = 0 + p.step(q) do + i += 1 + end + assert_equal(8, i) + end + + def test_step__noblock + p = Date.new(2001,1,14) + q = Date.new(2001,1,21) + e = p.step(q, 2) + assert_equal(4, e.to_a.size) + + e = p.step(q) + assert_equal(8, e.to_a.size) + end + +end -- cgit v1.2.3