summaryrefslogtreecommitdiffhomepage
path: root/test/assert.rb
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-04-12 22:27:07 +0900
committerKOBAYASHI Shuji <[email protected]>2019-04-12 22:27:07 +0900
commit6626fbc5006d662f8fc69a51660ae7c1e998a1f0 (patch)
treeb2829164ec9159df2e8d4bfb4ac19b2d80acb016 /test/assert.rb
parent6da10f643ab8453d0bbe66258df6b756d2326d65 (diff)
downloadmruby-6626fbc5006d662f8fc69a51660ae7c1e998a1f0.tar.gz
mruby-6626fbc5006d662f8fc69a51660ae7c1e998a1f0.zip
Refine `assert_float`
Avoid arithmetic operations when `exp` and/or `act` are infinity or NaN.
Diffstat (limited to 'test/assert.rb')
-rw-r--r--test/assert.rb6
1 files changed, 3 insertions, 3 deletions
diff --git a/test/assert.rb b/test/assert.rb
index c57b04c12..e0fac4d90 100644
--- a/test/assert.rb
+++ b/test/assert.rb
@@ -149,11 +149,11 @@ end
# Fails unless +exp+ is equal to +act+ in terms of a Float
def assert_float(exp, act, msg = nil)
e, a = exp.to_f, act.to_f
- if (e.infinite? || a.infinite?) && e != a ||
+ if e.finite? && a.finite? && (n = (e - a).abs) > Mrbtest::FLOAT_TOLERANCE
+ flunk(msg, " Expected |#{exp} - #{act}| (#{n}) to be <= #{Mrbtest::FLOAT_TOLERANCE}.")
+ elsif (e.infinite? || a.infinite?) && e != a ||
e.nan? && !a.nan? || !e.nan? && a.nan?
flunk(msg, " Expected #{act} to be #{exp}.")
- elsif (n = (e - a).abs) > Mrbtest::FLOAT_TOLERANCE
- flunk(msg, " Expected |#{exp} - #{act}| (#{n}) to be <= #{Mrbtest::FLOAT_TOLERANCE}.")
else
pass
end