summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2019-03-27 06:53:30 +0900
committerGitHub <[email protected]>2019-03-27 06:53:30 +0900
commit55986123366110a441223ad8155c95717dddbf34 (patch)
tree3718e369517fd3dca7be81364e0b4fdf72a4c18f
parentc2660b8111cd6cd98a41aa257c503cbd3a7cf881 (diff)
parent0b6696cc2872c9b33efa48c7dcd45dc4a17f3686 (diff)
downloadmruby-55986123366110a441223ad8155c95717dddbf34.tar.gz
mruby-55986123366110a441223ad8155c95717dddbf34.zip
Merge pull request #4343 from shuujii/fix-dealing-with-infinity-and-NaN-in-assert_float
Fix dealing with infinity and NaN in `test/assert.rb:assert_float`
-rw-r--r--test/assert.rb24
1 files changed, 8 insertions, 16 deletions
diff --git a/test/assert.rb b/test/assert.rb
index f6914cf81..33d9285ce 100644
--- a/test/assert.rb
+++ b/test/assert.rb
@@ -148,10 +148,15 @@ end
##
# Fails unless +exp+ is equal to +act+ in terms of a Float
def assert_float(exp, act, msg = nil)
- unless ret = check_float(exp, act)
- diff = " Expected |#{exp} - #{act}| (#{(exp-act).abs}) to be <= #{Mrbtest::FLOAT_TOLERANCE}."
+ e, a = exp.to_f, act.to_f
+ if (e.infinite? || a.infinite?) && e != a ||
+ e.nan? && !a.nan? || !e.nan? && a.nan?
+ assert_true(false, msg, " Expected #{act} to be #{exp}.")
+ elsif (n = (e - a).abs) > Mrbtest::FLOAT_TOLERANCE
+ assert_true(false, msg, " Expected |#{exp} - #{act}| (#{n}) to be <= #{Mrbtest::FLOAT_TOLERANCE}.")
+ else
+ assert_true(true)
end
- assert_true(ret, msg, diff)
end
def assert_raise(*exc)
@@ -211,19 +216,6 @@ def report
$ko_test == 0 && $kill_test == 0
end
-##
-# Performs fuzzy check for equality on methods returning floats
-def check_float(a, b)
- tolerance = Mrbtest::FLOAT_TOLERANCE
- a = a.to_f
- b = b.to_f
- if a.finite? and b.finite?
- (a-b).abs < tolerance
- else
- true
- end
-end
-
def _eval_assertion(meth, exp, act_or_msg, msg, block)
if block
exp, act, msg = exp, block.call, act_or_msg