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