summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-04-28 05:42:34 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-04-28 05:42:34 +0000
commitc4eb7b916f23d2cadb40c1409e8b1427949724f2 (patch)
treea64c8f53de782fc57abf50ca63355a4d74512b60 /test
parente2551558e4b5c1176f59802bb3199a18f20ce631 (diff)
more tests.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16228 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_float.rb149
1 files changed, 117 insertions, 32 deletions
diff --git a/test/ruby/test_float.rb b/test/ruby/test_float.rb
index 3b23a3cd82..c3277acfdb 100644
--- a/test/ruby/test_float.rb
+++ b/test/ruby/test_float.rb
@@ -278,37 +278,122 @@ class TestFloat < Test::Unit::TestCase
assert_raise(TypeError) { Float.induced_from(nil) }
end
- def test_to_i
- assert_operator(4611686018427387905.0.to_i, :>, 0)
- assert_operator(4611686018427387904.0.to_i, :>, 0)
- assert_operator(4611686018427387903.8.to_i, :>, 0)
- assert_operator(4611686018427387903.5.to_i, :>, 0)
- assert_operator(4611686018427387903.2.to_i, :>, 0)
- assert_operator(4611686018427387903.0.to_i, :>, 0)
- assert_operator(4611686018427387902.0.to_i, :>, 0)
-
- assert_operator(1073741825.0.to_i, :>, 0)
- assert_operator(1073741824.0.to_i, :>, 0)
- assert_operator(1073741823.8.to_i, :>, 0)
- assert_operator(1073741823.5.to_i, :>, 0)
- assert_operator(1073741823.2.to_i, :>, 0)
- assert_operator(1073741823.0.to_i, :>, 0)
- assert_operator(1073741822.0.to_i, :>, 0)
-
- assert_operator((-1073741823.0).to_i, :<, 0)
- assert_operator((-1073741824.0).to_i, :<, 0)
- assert_operator((-1073741824.2).to_i, :<, 0)
- assert_operator((-1073741824.5).to_i, :<, 0)
- assert_operator((-1073741824.8).to_i, :<, 0)
- assert_operator((-1073741825.0).to_i, :<, 0)
- assert_operator((-1073741826.0).to_i, :<, 0)
-
- assert_operator((-4611686018427387903.0).to_i, :<, 0)
- assert_operator((-4611686018427387904.0).to_i, :<, 0)
- assert_operator((-4611686018427387904.2).to_i, :<, 0)
- assert_operator((-4611686018427387904.5).to_i, :<, 0)
- assert_operator((-4611686018427387904.8).to_i, :<, 0)
- assert_operator((-4611686018427387905.0).to_i, :<, 0)
- assert_operator((-4611686018427387906.0).to_i, :<, 0)
+
+ VS = [
+ 18446744073709551617.0,
+ 18446744073709551616.0,
+ 18446744073709551615.8,
+ 18446744073709551615.5,
+ 18446744073709551615.2,
+ 18446744073709551615.0,
+ 18446744073709551614.0,
+
+ 4611686018427387905.0,
+ 4611686018427387904.0,
+ 4611686018427387903.8,
+ 4611686018427387903.5,
+ 4611686018427387903.2,
+ 4611686018427387903.0,
+ 4611686018427387902.0,
+
+ 4294967297.0,
+ 4294967296.0,
+ 4294967295.8,
+ 4294967295.5,
+ 4294967295.2,
+ 4294967295.0,
+ 4294967294.0,
+
+ 1073741825.0,
+ 1073741824.0,
+ 1073741823.8,
+ 1073741823.5,
+ 1073741823.2,
+ 1073741823.0,
+ 1073741822.0,
+
+ -1073741823.0,
+ -1073741824.0,
+ -1073741824.2,
+ -1073741824.5,
+ -1073741824.8,
+ -1073741825.0,
+ -1073741826.0,
+
+ -4294967295.0,
+ -4294967296.0,
+ -4294967296.2,
+ -4294967296.5,
+ -4294967296.8,
+ -4294967297.0,
+ -4294967298.0,
+
+ -4611686018427387903.0,
+ -4611686018427387904.0,
+ -4611686018427387904.2,
+ -4611686018427387904.5,
+ -4611686018427387904.8,
+ -4611686018427387905.0,
+ -4611686018427387906.0,
+
+ -18446744073709551615.0,
+ -18446744073709551616.0,
+ -18446744073709551616.2,
+ -18446744073709551616.5,
+ -18446744073709551616.8,
+ -18446744073709551617.0,
+ -18446744073709551618.0,
+ ]
+
+ def test_truncate
+ VS.each {|f|
+ i = f.truncate
+ assert_equal(i, f.to_i)
+ if f < 0
+ assert_operator(i, :<, 0)
+ else
+ assert_operator(i, :>, 0)
+ end
+ assert_operator(i.abs, :<=, f.abs)
+ }
+ end
+
+ def test_ceil
+ VS.each {|f|
+ i = f.ceil
+ if f < 0
+ assert_operator(i, :<, 0)
+ else
+ assert_operator(i, :>, 0)
+ end
+ assert_operator(i, :>=, f)
+ }
+ end
+
+ def test_floor
+ VS.each {|f|
+ i = f.floor
+ if f < 0
+ assert_operator(i, :<, 0)
+ else
+ assert_operator(i, :>, 0)
+ end
+ assert_operator(i, :<=, f)
+ }
+ end
+
+ def test_round
+ VS.each {|f|
+ i = f.round
+ if f < 0
+ assert_operator(i, :<, 0)
+ else
+ assert_operator(i, :>, 0)
+ end
+ d = f - i
+ assert_operator(-0.5, :<=, d)
+ assert_operator(d, :<=, 0.5)
+ }
end
+
end