diff options
Diffstat (limited to 'test/ruby/test_integer.rb')
| -rw-r--r-- | test/ruby/test_integer.rb | 99 |
1 files changed, 20 insertions, 79 deletions
diff --git a/test/ruby/test_integer.rb b/test/ruby/test_integer.rb index 3349a1c493..2f3f00ecda 100644 --- a/test/ruby/test_integer.rb +++ b/test/ruby/test_integer.rb @@ -138,6 +138,20 @@ class TestInteger < Test::Unit::TestCase assert_equal(1234, Integer(1234)) assert_equal(1, Integer(1.234)) + # base argument + assert_equal(1234, Integer("1234", 10)) + assert_equal(668, Integer("1234", 8)) + assert_equal(4660, Integer("1234", 16)) + assert_equal(49360, Integer("1234", 36)) + # decimal, not octal + assert_equal(1234, Integer("01234", 10)) + assert_raise(ArgumentError) { Integer("0x123", 10) } + assert_raise(ArgumentError) { Integer(1234, 10) } + assert_raise(ArgumentError) { Integer(12.34, 10) } + assert_raise(ArgumentError) { Integer(Object.new, 1) } + + assert_raise(ArgumentError) { Integer(1, 1, 1) } + assert_equal(2 ** 50, Integer(2.0 ** 50)) assert_raise(TypeError) { Integer(nil) } @@ -231,39 +245,6 @@ class TestInteger < Test::Unit::TestCase end; end - def test_Integer_when_to_str - def (obj = Object.new).to_str - "0x10" - end - assert_equal(16, Integer(obj)) - end - - def test_Integer_with_base - assert_equal(1234, Integer("1234", 10)) - assert_equal(668, Integer("1234", 8)) - assert_equal(4660, Integer("1234", 16)) - assert_equal(49360, Integer("1234", 36)) - # decimal, not octal - assert_equal(1234, Integer("01234", 10)) - assert_raise(ArgumentError) { Integer("0x123", 10) } - assert_raise(ArgumentError) { Integer(1234, 10) } - assert_raise(ArgumentError) { Integer(12.34, 10) } - assert_raise(ArgumentError) { Integer(Object.new, 1) } - - assert_raise(ArgumentError) { Integer(1, 1, 1) } - - def (base = Object.new).to_int - 8 - end - assert_equal(8, Integer("10", base)) - - assert_raise(TypeError) { Integer("10", "8") } - def (base = Object.new).to_int - "8" - end - assert_raise(TypeError) { Integer("10", base) } - end - def test_int_p assert_not_predicate(1.0, :integer?) assert_predicate(1, :integer?) @@ -321,34 +302,23 @@ class TestInteger < Test::Unit::TestCase begin; called = false Integer.class_eval do - alias old_succ succ - undef succ - define_method(:succ){|x| called = true; x+1} + alias old_plus + + undef + + define_method(:+){|x| called = true; 1} alias old_lt < undef < define_method(:<){|x| called = true} end - - fix = 1 - fix.times{break 0} - fix_called = called - - called = false - big = 2**65 big.times{break 0} - big_called = called - Integer.class_eval do - undef succ - alias succ old_succ + undef + + alias + old_plus undef < alias < old_lt end - - # Asssert that Fixnum and Bignum behave consistently bug18377 = "[ruby-core:106361]" - assert_equal(fix_called, big_called, bug18377) + assert_equal(false, called, bug18377) end; end @@ -704,14 +674,6 @@ class TestInteger < Test::Unit::TestCase def test_fdiv assert_equal(1.0, 1.fdiv(1)) assert_equal(0.5, 1.fdiv(2)) - - m = 50 << Float::MANT_DIG - prev = 1.0 - (1..100).each do |i| - val = (m + i).fdiv(m) - assert_operator val, :>=, prev, "1+epsilon*(#{i}/100)" - prev = val - end end def test_obj_fdiv @@ -740,25 +702,4 @@ class TestInteger < Test::Unit::TestCase def o.to_int; Object.new; end assert_raise_with_message(TypeError, /can't convert Object to Integer/) {Integer.try_convert(o)} end - - def test_ceildiv - assert_equal(0, 0.ceildiv(3)) - assert_equal(1, 1.ceildiv(3)) - assert_equal(1, 3.ceildiv(3)) - assert_equal(2, 4.ceildiv(3)) - - assert_equal(-1, 4.ceildiv(-3)) - assert_equal(-1, -4.ceildiv(3)) - assert_equal(2, -4.ceildiv(-3)) - - assert_equal(3, 3.ceildiv(1.2)) - assert_equal(3, 3.ceildiv(6/5r)) - - assert_equal(10, (10**100-11).ceildiv(10**99-1)) - assert_equal(11, (10**100-9).ceildiv(10**99-1)) - - o = Object.new - def o.coerce(other); [other, 10]; end - assert_equal(124, 1234.ceildiv(o)) - end end |
