summaryrefslogtreecommitdiff
path: root/test/ruby/test_integer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/test_integer.rb')
-rw-r--r--test/ruby/test_integer.rb99
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