/test/date/test_date.rb
Ruby | 166 lines | 142 code | 22 blank | 2 comment | 0 complexity | 591030fd0f79a43e558cd43c2b4e5184 MD5 | raw file
Possible License(s): GPL-2.0, BSD-3-Clause, AGPL-3.0
- # frozen_string_literal: true
- require 'test/unit'
- require 'date'
- class DateSub < Date; end
- class DateTimeSub < DateTime; end
- class TestDate < Test::Unit::TestCase
- def test_range_infinite_float
- today = Date.today
- r = today...Float::INFINITY
- assert_equal today, r.begin
- assert_equal Float::INFINITY, r.end
- assert_equal true, r.cover?(today+1)
- assert_equal false, r.cover?(today-1)
- r = (-Float::INFINITY)...today
- assert_equal(-Float::INFINITY, r.begin)
- assert_equal today, r.end
- assert_equal false, r.cover?(today+1)
- assert_equal true, r.cover?(today-1)
- end
- def test__const
- assert_nil(Date::MONTHNAMES[0])
- assert_equal('January', Date::MONTHNAMES[1])
- assert_equal(13, Date::MONTHNAMES.size)
- assert_equal('Sunday', Date::DAYNAMES[0])
- assert_equal(7, Date::DAYNAMES.size)
- assert_nil(Date::ABBR_MONTHNAMES[0])
- assert_equal('Jan', Date::ABBR_MONTHNAMES[1])
- assert_equal(13, Date::ABBR_MONTHNAMES.size)
- assert_equal('Sun', Date::ABBR_DAYNAMES[0])
- assert_equal(7, Date::ABBR_DAYNAMES.size)
- assert(Date::MONTHNAMES.frozen?)
- assert(Date::MONTHNAMES[1].frozen?)
- assert(Date::DAYNAMES.frozen?)
- assert(Date::DAYNAMES[0].frozen?)
- assert(Date::ABBR_MONTHNAMES.frozen?)
- assert(Date::ABBR_MONTHNAMES[1].frozen?)
- assert(Date::ABBR_DAYNAMES.frozen?)
- assert(Date::ABBR_DAYNAMES[0].frozen?)
- end
- def test_sub
- d = DateSub.new
- dt = DateTimeSub.new
- assert_instance_of(DateSub, d)
- assert_instance_of(DateTimeSub, dt)
- assert_instance_of(DateSub, DateSub.today)
- assert_instance_of(DateTimeSub, DateTimeSub.now)
- assert_equal('-4712-01-01', d.to_s)
- assert_equal('-4712-01-01T00:00:00+00:00', dt.to_s)
- d2 = d + 1
- assert_instance_of(DateSub, d2)
- d2 = d - 1
- assert_instance_of(DateSub, d2)
- d2 = d >> 1
- assert_instance_of(DateSub, d2)
- d2 = d << 1
- assert_instance_of(DateSub, d2)
- d2 = d.succ
- assert_instance_of(DateSub, d2)
- d2 = d.next
- assert_instance_of(DateSub, d2)
- d2 = d.italy
- assert_instance_of(DateSub, d2)
- d2 = d.england
- assert_instance_of(DateSub, d2)
- d2 = d.julian
- assert_instance_of(DateSub, d2)
- d2 = d.gregorian
- assert_instance_of(DateSub, d2)
- s = Marshal.dump(d)
- d2 = Marshal.load(s)
- assert_equal(d2, d)
- assert_instance_of(DateSub, d2)
- dt2 = dt + 1
- assert_instance_of(DateTimeSub, dt2)
- dt2 = dt - 1
- assert_instance_of(DateTimeSub, dt2)
- dt2 = dt >> 1
- assert_instance_of(DateTimeSub, dt2)
- dt2 = dt << 1
- assert_instance_of(DateTimeSub, dt2)
- dt2 = dt.succ
- assert_instance_of(DateTimeSub, dt2)
- dt2 = dt.next
- assert_instance_of(DateTimeSub, dt2)
- dt2 = dt.italy
- assert_instance_of(DateTimeSub, dt2)
- dt2 = dt.england
- assert_instance_of(DateTimeSub, dt2)
- dt2 = dt.julian
- assert_instance_of(DateTimeSub, dt2)
- dt2 = dt.gregorian
- assert_instance_of(DateTimeSub, dt2)
- s = Marshal.dump(dt)
- dt2 = Marshal.load(s)
- assert_equal(dt2, dt)
- assert_instance_of(DateTimeSub, dt2)
- end
- def test_eql_p
- d = Date.jd(0)
- d2 = Date.jd(0)
- dt = DateTime.jd(0)
- dt2 = DateTime.jd(0)
- assert_equal(d, d2)
- assert_not_equal(d, 0)
- assert_equal(dt, dt2)
- assert_not_equal(dt, 0)
- assert_equal(d, dt)
- assert_equal(d2, dt2)
- end
- def test_hash
- h = {}
- h[Date.new(1999,5,23)] = 0
- h[Date.new(1999,5,24)] = 1
- h[Date.new(1999,5,25)] = 2
- h[Date.new(1999,5,25)] = 9
- assert_equal(3, h.size)
- assert_equal(9, h[Date.new(1999,5,25)])
- assert_equal(9, h[DateTime.new(1999,5,25)])
- h = {}
- h[DateTime.new(1999,5,23)] = 0
- h[DateTime.new(1999,5,24)] = 1
- h[DateTime.new(1999,5,25)] = 2
- h[DateTime.new(1999,5,25)] = 9
- assert_equal(3, h.size)
- assert_equal(9, h[Date.new(1999,5,25)])
- assert_equal(9, h[DateTime.new(1999,5,25)])
- assert_instance_of(String, Date.new(1999,5,25).hash.to_s)
- end
- def test_freeze
- d = Date.new
- d.freeze
- assert_equal(true, d.frozen?)
- assert_instance_of(Integer, d.yday)
- assert_instance_of(String, d.to_s)
- end
- def test_submillisecond_comparison
- d1 = DateTime.new(2013, 12, 6, 0, 0, Rational(1, 10000))
- d2 = DateTime.new(2013, 12, 6, 0, 0, Rational(2, 10000))
- # d1 is 0.0001s earlier than d2
- assert_equal(-1, d1 <=> d2)
- assert_equal(0, d1 <=> d1)
- assert_equal(1, d2 <=> d1)
- end
- end