1require 'test/unit'
2require "xmlrpc/datetime"
3
4class Test_DateTime < Test::Unit::TestCase
5
6  def test_new
7    dt = createDateTime()
8
9    assert_instance_of(XMLRPC::DateTime, dt)
10  end
11
12  def test_new_exception
13    assert_raise(ArgumentError) { XMLRPC::DateTime.new(4.5, 13, 32, 25, 60, 60) }
14    assert_raise(ArgumentError) { XMLRPC::DateTime.new(2001, 12, 32, 25, 60, 60) }
15    assert_raise(ArgumentError) { XMLRPC::DateTime.new(2001, 12, 31, 25, 60, 60) }
16    assert_raise(ArgumentError) { XMLRPC::DateTime.new(2001, 12, 31, 24, 60, 60) }
17    assert_raise(ArgumentError) { XMLRPC::DateTime.new(2001, 12, 31, 24, 59, 60) }
18    assert_nothing_raised(ArgumentError) { XMLRPC::DateTime.new(2001, 12, 31, 24, 59, 59) }
19
20    assert_raise(ArgumentError) { XMLRPC::DateTime.new(2001, 0, 0, -1, -1, -1) }
21    assert_raise(ArgumentError) { XMLRPC::DateTime.new(2001, 1, 0, -1, -1, -1) }
22    assert_raise(ArgumentError) { XMLRPC::DateTime.new(2001, 1, 1, -1, -1, -1) }
23    assert_raise(ArgumentError) { XMLRPC::DateTime.new(2001, 1, 1, 0, -1, -1) }
24    assert_raise(ArgumentError) { XMLRPC::DateTime.new(2001, 1, 1, 0, 0, -1) }
25    assert_nothing_raised(ArgumentError) { XMLRPC::DateTime.new(2001, 1, 1, 0, 0, 0) }
26  end
27
28
29  def test_get_values
30    y, m, d, h, mi, s = 1970, 3, 24, 12, 0, 5
31    dt = XMLRPC::DateTime.new(y, m, d, h, mi, s)
32
33    assert_equal(y, dt.year)
34    assert_equal(m, dt.month)
35    assert_equal(m, dt.mon)
36    assert_equal(d, dt.day)
37
38    assert_equal(h, dt.hour)
39    assert_equal(mi,dt.min)
40    assert_equal(s, dt.sec)
41  end
42
43  def test_set_values
44    dt = createDateTime()
45    y, m, d, h, mi, s = 1950, 12, 9, 8, 52, 30
46
47    dt.year  = y
48    dt.month = m
49    dt.day   = d
50    dt.hour  = h
51    dt.min   = mi
52    dt.sec   = s
53
54    assert_equal(y, dt.year)
55    assert_equal(m, dt.month)
56    assert_equal(m, dt.mon)
57    assert_equal(d, dt.day)
58
59    assert_equal(h, dt.hour)
60    assert_equal(mi,dt.min)
61    assert_equal(s, dt.sec)
62
63    dt.mon = 5
64    assert_equal(5, dt.month)
65    assert_equal(5, dt.mon)
66  end
67
68  def test_set_exception
69    dt = createDateTime()
70
71    assert_raise(ArgumentError)    { dt.year = 4.5 }
72    assert_nothing_raised(ArgumentError) { dt.year = -2000 }
73
74    assert_raise(ArgumentError) { dt.month = 0 }
75    assert_raise(ArgumentError) { dt.month = 13 }
76    assert_nothing_raised(ArgumentError) { dt.month = 7 }
77
78    assert_raise(ArgumentError) { dt.mon = 0 }
79    assert_raise(ArgumentError) { dt.mon = 13 }
80    assert_nothing_raised(ArgumentError) { dt.mon = 7 }
81
82    assert_raise(ArgumentError) { dt.day = 0 }
83    assert_raise(ArgumentError) { dt.day = 32 }
84    assert_nothing_raised(ArgumentError) { dt.day = 16 }
85
86    assert_raise(ArgumentError) { dt.hour = -1 }
87    assert_raise(ArgumentError) { dt.hour = 25 }
88    assert_nothing_raised(ArgumentError) { dt.hour = 12 }
89
90    assert_raise(ArgumentError) { dt.min = -1 }
91    assert_raise(ArgumentError) { dt.min = 60 }
92    assert_nothing_raised(ArgumentError) { dt.min = 30 }
93
94    assert_raise(ArgumentError) { dt.sec = -1 }
95    assert_raise(ArgumentError) { dt.sec = 60 }
96    assert_nothing_raised(ArgumentError) { dt.sec = 30 }
97  end
98
99  def test_to_a
100    y, m, d, h, mi, s = 1970, 3, 24, 12, 0, 5
101    dt = XMLRPC::DateTime.new(y, m, d, h, mi, s)
102    a = dt.to_a
103
104    assert_instance_of(Array, a)
105    assert_equal(6,  a.size, "Returned array has wrong size")
106
107    assert_equal(y,  a[0])
108    assert_equal(m,  a[1])
109    assert_equal(d,  a[2])
110    assert_equal(h,  a[3])
111    assert_equal(mi, a[4])
112    assert_equal(s,  a[5])
113  end
114
115  def test_to_time1
116    y, m, d, h, mi, s = 1970, 3, 24, 12, 0, 5
117    dt = XMLRPC::DateTime.new(y, m, d, h, mi, s)
118    time = dt.to_time
119
120    assert_not_nil(time)
121
122    assert_equal(y,  time.year)
123    assert_equal(m,  time.month)
124    assert_equal(d,  time.day)
125    assert_equal(h,  time.hour)
126    assert_equal(mi, time.min)
127    assert_equal(s,  time.sec)
128  end
129
130  def test_to_time2
131    dt = createDateTime()
132    dt.year = 1969
133
134    assert_nil(dt.to_time)
135  end
136
137  def test_to_date1
138    y, m, d, h, mi, s = 1970, 3, 24, 12, 0, 5
139    dt = XMLRPC::DateTime.new(y, m, d, h, mi, s)
140    date = dt.to_date
141
142    assert_equal(y, date.year)
143    assert_equal(m, date.month)
144    assert_equal(d, date.day)
145  end
146
147  def test_to_date2
148    dt = createDateTime()
149    dt.year = 666
150
151    assert_equal(666, dt.to_date.year)
152  end
153
154
155  def createDateTime
156    XMLRPC::DateTime.new(1970, 3, 24, 12, 0, 5)
157  end
158
159end
160