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