1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/test/ruby/test_float.rb
ocean b9bfdbb13e * util.c (ruby_strtod): should not convert string in the form of
"-I.FE-X" which both "I" and "F" are ommitted. [ruby-dev:23883]

* test/ruby/test_float.rb (test_strtod): add test for bug fix.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6625 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-14 03:32:20 +00:00

89 lines
2.3 KiB
Ruby

require 'test/unit'
class TestFloat < Test::Unit::TestCase
def test_float
assert_equal(2, 2.6.floor)
assert_equal(-3, (-2.6).floor)
assert_equal(3, 2.6.ceil)
assert_equal(-2, (-2.6).ceil)
assert_equal(2, 2.6.truncate)
assert_equal(-2, (-2.6).truncate)
assert_equal(3, 2.6.round)
assert_equal(-2, (-2.4).truncate)
assert((13.4 % 1 - 0.4).abs < 0.0001)
end
def nan_test(x,y)
extend Test::Unit::Assertions
assert(x != y)
assert_equal(false, (x < y))
assert_equal(false, (x > y))
assert_equal(false, (x <= y))
assert_equal(false, (x >= y))
end
def test_nan
nan = 0.0/0
nan_test(nan, nan)
nan_test(nan, 0)
nan_test(nan, 1)
nan_test(nan, -1)
nan_test(nan, 1000)
nan_test(nan, -1000)
nan_test(nan, 1_000_000_000_000)
nan_test(nan, -1_000_000_000_000)
nan_test(nan, 100.0);
nan_test(nan, -100.0);
nan_test(nan, 0.001);
nan_test(nan, -0.001);
nan_test(nan, 1.0/0);
nan_test(nan, -1.0/0);
end
def test_precision
#s = "3.7517675036461267e+17"
#assert(s == sprintf("%.16e", s.to_f))
f = 3.7517675036461267e+17
assert_equal(f, sprintf("%.16e", f).to_f)
end
def test_symmetry_bignum # [ruby-bugs-ja:118]
a = 100000000000000000000000
b = 100000000000000000000000.0
assert_equal(a == b, b == a)
end
def test_strtod
a = Float("0")
assert(a.abs < Float::EPSILON)
a = Float("0.0")
assert(a.abs < Float::EPSILON)
a = Float("+0.0")
assert(a.abs < Float::EPSILON)
a = Float("-0.0")
assert(a.abs < Float::EPSILON)
a = Float("0.0000000000000000001")
assert(a != 0.0)
a = Float("+0.0000000000000000001")
assert(a != 0.0)
a = Float("-0.0000000000000000001")
assert(a != 0.0)
a = Float(".0")
assert(a.abs < Float::EPSILON)
a = Float("+.0")
assert(a.abs < Float::EPSILON)
a = Float("-.0")
assert(a.abs < Float::EPSILON)
a = Float("0.")
assert(a.abs < Float::EPSILON)
a = Float("+0.")
assert(a.abs < Float::EPSILON)
a = Float("-0.")
assert(a.abs < Float::EPSILON)
assert_raise(ArgumentError){Float(".")}
assert_raise(ArgumentError){Float("+")}
assert_raise(ArgumentError){Float("+.")}
assert_raise(ArgumentError){Float("-")}
assert_raise(ArgumentError){Float("-.")}
# add expected behaviour here.
end
end