1require 'test/unit' 2require 'date' 3 4class DateSub < Date; end 5class DateTimeSub < DateTime; end 6 7class TestDate < Test::Unit::TestCase 8 9 def test__const 10 assert_nil(Date::MONTHNAMES[0]) 11 assert_equal('January', Date::MONTHNAMES[1]) 12 assert_equal(13, Date::MONTHNAMES.size) 13 assert_equal('Sunday', Date::DAYNAMES[0]) 14 assert_equal(7, Date::DAYNAMES.size) 15 16 assert_nil(Date::ABBR_MONTHNAMES[0]) 17 assert_equal('Jan', Date::ABBR_MONTHNAMES[1]) 18 assert_equal(13, Date::ABBR_MONTHNAMES.size) 19 assert_equal('Sun', Date::ABBR_DAYNAMES[0]) 20 assert_equal(7, Date::ABBR_DAYNAMES.size) 21 22 assert(Date::MONTHNAMES.frozen?) 23 assert(!Date::MONTHNAMES[0].frozen?) 24 assert(Date::MONTHNAMES[1].frozen?) 25 assert(Date::DAYNAMES.frozen?) 26 assert(Date::DAYNAMES[0].frozen?) 27 28 assert(Date::ABBR_MONTHNAMES.frozen?) 29 assert(Date::ABBR_MONTHNAMES[1].frozen?) 30 assert(Date::ABBR_DAYNAMES.frozen?) 31 assert(Date::ABBR_DAYNAMES[0].frozen?) 32 end 33 34 def test_sub 35 d = DateSub.new 36 dt = DateTimeSub.new 37 38 assert_instance_of(DateSub, d) 39 assert_instance_of(DateTimeSub, dt) 40 41 assert_instance_of(DateSub, DateSub.today) 42 assert_instance_of(DateTimeSub, DateTimeSub.now) 43 44# assert_equal('#<DateSub: -4712-01-01 (-1/2,0,2299161)>', d.inspect) 45 assert_equal('-4712-01-01', d.to_s) 46# assert_equal('#<DateTimeSub: -4712-01-01T00:00:00+00:00 (-1/2,0,2299161)>', dt.inspect) 47 assert_equal('-4712-01-01T00:00:00+00:00', dt.to_s) 48 49 d2 = d + 1 50 assert_instance_of(DateSub, d2) 51 d2 = d - 1 52 assert_instance_of(DateSub, d2) 53 d2 = d >> 1 54 assert_instance_of(DateSub, d2) 55 d2 = d << 1 56 assert_instance_of(DateSub, d2) 57 d2 = d.succ 58 assert_instance_of(DateSub, d2) 59 d2 = d.next 60 assert_instance_of(DateSub, d2) 61 d2 = d.italy 62 assert_instance_of(DateSub, d2) 63 d2 = d.england 64 assert_instance_of(DateSub, d2) 65 d2 = d.julian 66 assert_instance_of(DateSub, d2) 67 d2 = d.gregorian 68 assert_instance_of(DateSub, d2) 69 s = Marshal.dump(d) 70 d2 = Marshal.load(s) 71 assert_equal(d2, d) 72 assert_instance_of(DateSub, d2) 73 74 dt2 = dt + 1 75 assert_instance_of(DateTimeSub, dt2) 76 dt2 = dt - 1 77 assert_instance_of(DateTimeSub, dt2) 78 dt2 = dt >> 1 79 assert_instance_of(DateTimeSub, dt2) 80 dt2 = dt << 1 81 assert_instance_of(DateTimeSub, dt2) 82 dt2 = dt.succ 83 assert_instance_of(DateTimeSub, dt2) 84 dt2 = dt.next 85 assert_instance_of(DateTimeSub, dt2) 86 dt2 = dt.italy 87 assert_instance_of(DateTimeSub, dt2) 88 dt2 = dt.england 89 assert_instance_of(DateTimeSub, dt2) 90 dt2 = dt.julian 91 assert_instance_of(DateTimeSub, dt2) 92 dt2 = dt.gregorian 93 assert_instance_of(DateTimeSub, dt2) 94 s = Marshal.dump(dt) 95 dt2 = Marshal.load(s) 96 assert_equal(dt2, dt) 97 assert_instance_of(DateTimeSub, dt2) 98 end 99 100 def test_eql_p 101 d = Date.jd(0) 102 d2 = Date.jd(0) 103 dt = DateTime.jd(0) 104 dt2 = DateTime.jd(0) 105 106 assert_equal(d, d2) 107 assert_not_equal(d, 0) 108 109 assert_equal(dt, dt2) 110 assert_not_equal(dt, 0) 111 112 assert_equal(d, dt) 113 assert_equal(d2, dt2) 114 end 115 116 def test_hash 117 h = {} 118 h[Date.new(1999,5,23)] = 0 119 h[Date.new(1999,5,24)] = 1 120 h[Date.new(1999,5,25)] = 2 121 h[Date.new(1999,5,25)] = 9 122 assert_equal(3, h.size) 123 assert_equal(9, h[Date.new(1999,5,25)]) 124 assert_equal(9, h[DateTime.new(1999,5,25)]) 125 126 h = {} 127 h[DateTime.new(1999,5,23)] = 0 128 h[DateTime.new(1999,5,24)] = 1 129 h[DateTime.new(1999,5,25)] = 2 130 h[DateTime.new(1999,5,25)] = 9 131 assert_equal(3, h.size) 132 assert_equal(9, h[Date.new(1999,5,25)]) 133 assert_equal(9, h[DateTime.new(1999,5,25)]) 134 end 135 136 def test_freeze 137 d = Date.new 138 d.freeze 139 assert_equal(true, d.frozen?) 140 assert_instance_of(Fixnum, d.yday) 141 assert_instance_of(String, d.to_s) 142 end 143 144end 145