3 class TestNumeric < Test::Unit::TestCase
4 class DummyNumeric < Numeric
9 assert_equal(Fixnum, a.class)
10 assert_equal(Fixnum, b.class)
13 assert_equal(Float, a.class)
14 assert_equal(Float, b.class)
16 assert_raise(TypeError) { -Numeric.new }
22 DummyNumeric.class_eval do
23 def coerce(x); nil; end
25 assert_raise(TypeError) { -a }
27 assert_raise(ArgumentError) { 1 <= a }
29 DummyNumeric.class_eval do
30 def coerce(x); 1.coerce(x); end
32 assert_equal(2, 1 + a)
33 assert_equal(0, 1 <=> a)
36 DummyNumeric.class_eval do
37 def coerce(x); [x, 1]; end
42 DummyNumeric.class_eval do
49 assert_raise(TypeError) { def a.foo; end }
50 assert_raise(TypeError) { a.dup }
54 assert_raise(ArgumentError) {DummyNumeric.new.quo(1)}
58 DummyNumeric.class_eval do
63 assert_equal(42, DummyNumeric.new.div(1))
64 assert_equal(:mod, DummyNumeric.new.modulo(1))
65 assert_equal([42, :mod], DummyNumeric.new.divmod(1))
67 assert_kind_of(Integer, 11.divmod(3.5).first, '[ruby-dev:34006]')
70 DummyNumeric.class_eval do
76 assert(Numeric.new.real?)
80 assert(!Numeric.new.integer?)
85 DummyNumeric.class_eval do
90 assert_equal(:ok, a.abs)
92 DummyNumeric.class_eval do
96 assert_equal(a, a.abs)
99 DummyNumeric.class_eval do
100 remove_method :-@, :<
105 DummyNumeric.class_eval do
109 assert(DummyNumeric.new.zero?)
112 DummyNumeric.class_eval do
118 DummyNumeric.class_eval do
122 assert_equal(:ok, DummyNumeric.new.to_int)
125 DummyNumeric.class_eval do
132 assert_equal(0, a <=> a)
133 assert_nil(a <=> :foo)
136 def test_floor_ceil_round_truncate
137 DummyNumeric.class_eval do
142 assert_equal(1, a.floor)
143 assert_equal(2, a.ceil)
144 assert_equal(2, a.round)
145 assert_equal(1, a.truncate)
147 DummyNumeric.class_eval do
152 assert_equal(1, a.floor)
153 assert_equal(2, a.ceil)
154 assert_equal(1, a.round)
155 assert_equal(1, a.truncate)
157 DummyNumeric.class_eval do
162 assert_equal(-2, a.floor)
163 assert_equal(-1, a.ceil)
164 assert_equal(-2, a.round)
165 assert_equal(-1, a.truncate)
168 DummyNumeric.class_eval do
175 1.step(10) {|x| a << x }
176 assert_equal([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], a)
179 1.step(10, 2) {|x| a << x }
180 assert_equal([1, 3, 5, 7, 9], a)
182 assert_raise(ArgumentError) { 1.step(10, 1, 0) { } }
183 assert_raise(ArgumentError) { 1.step(10, 0) { } }
186 10.step(1, -2) {|x| a << x }
187 assert_equal([10, 8, 6, 4, 2], a)
190 1.0.step(10.0, 2.0) {|x| a << x }
191 assert_equal([1.0, 3.0, 5.0, 7.0, 9.0], a)
194 1.step(10, 2**32) {|x| a << x }
198 10.step(1, -(2**32)) {|x| a << x }
199 assert_equal([10], a)
203 assert_raise(TypeError) { 1 & nil }
204 assert_raise(TypeError) { 1 & 1.0 }
205 assert_raise(TypeError) { 1 & 2147483648.0 }
206 assert_raise(TypeError) { 1 & 9223372036854777856.0 }
209 assert_equal(1, 1 & o)
214 assert(!(1.eql?(1.0)))