summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-rational/test
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-05-16 22:09:56 +0900
committerKOBAYASHI Shuji <[email protected]>2019-05-16 22:09:56 +0900
commitf5fb1307b017fb972c12b4ec4b1866d789b0ca09 (patch)
tree944be2d50b5d40da236cd81d3793bad4884c4aca /mrbgems/mruby-rational/test
parent9b604abc8300d378bb32fb0e88d6f0831ed7e0d9 (diff)
downloadmruby-f5fb1307b017fb972c12b4ec4b1866d789b0ca09.tar.gz
mruby-f5fb1307b017fb972c12b4ec4b1866d789b0ca09.zip
Fix `Rational#==`
Diffstat (limited to 'mrbgems/mruby-rational/test')
-rw-r--r--mrbgems/mruby-rational/test/rational.rb49
1 files changed, 47 insertions, 2 deletions
diff --git a/mrbgems/mruby-rational/test/rational.rb b/mrbgems/mruby-rational/test/rational.rb
index 85cebc316..4d3d36ccc 100644
--- a/mrbgems/mruby-rational/test/rational.rb
+++ b/mrbgems/mruby-rational/test/rational.rb
@@ -1,8 +1,18 @@
def assert_rational(real, exp)
- assert_float real.numerator, exp.numerator
+ assert_float real.numerator, exp.numerator
assert_float real.denominator, exp.denominator
end
+def assert_equal_rational(exp, r1, r2)
+ if exp
+ assert_operator(r1, :==, r2)
+ assert_not_operator(r1, :!=, r2)
+ else
+ assert_not_operator(r1, :==, r2)
+ assert_operator(r1, :!=, r2)
+ end
+end
+
assert 'Rational' do
r = 5r
assert_equal Rational, r.class
@@ -54,4 +64,39 @@ assert 'Rational#/' do
assert_rational Rational(-2, 9) / Rational(-9, 2), Rational(4, 81)
assert_rational Rational(9, 8) / 4, Rational(9, 32)
assert_float Rational(20, 9) / 9.8, 0.22675736961451246
-end \ No newline at end of file
+end
+
+assert 'Rational#==, Rational#!=' do
+ assert_equal_rational(true, Rational(1,1), Rational(1))
+ assert_equal_rational(true, Rational(-1,1), -1r)
+ assert_equal_rational(true, Rational(13,4), 3.25)
+ assert_equal_rational(true, Rational(13,3.25), Rational(4,1))
+ assert_equal_rational(true, Rational(-3,-4), Rational(3,4))
+ assert_equal_rational(true, Rational(-4,5), Rational(4,-5))
+ assert_equal_rational(true, Rational(4,2), 2)
+ assert_equal_rational(true, Rational(-4,2), -2)
+ assert_equal_rational(true, Rational(4,-2), -2)
+ assert_equal_rational(true, Rational(4,2), 2.0)
+ assert_equal_rational(true, Rational(-4,2), -2.0)
+ assert_equal_rational(true, Rational(4,-2), -2.0)
+ assert_equal_rational(true, Rational(8,6), Rational(4,3))
+ assert_equal_rational(false, Rational(13,4), 3)
+ assert_equal_rational(false, Rational(13,4), 3.3)
+ assert_equal_rational(false, Rational(2,1), 1r)
+ assert_equal_rational(false, Rational(1), nil)
+ assert_equal_rational(false, Rational(1), '')
+end
+
+assert 'Fixnum#==(Rational), Fixnum#!=(Rational)' do
+ assert_equal_rational(true, 2, Rational(4,2))
+ assert_equal_rational(true, -2, Rational(-4,2))
+ assert_equal_rational(true, -2, Rational(4,-2))
+ assert_equal_rational(false, 3, Rational(13,4))
+end
+
+assert 'Float#==(Rational), Float#!=(Rational)' do
+ assert_equal_rational(true, 2.0, Rational(4,2))
+ assert_equal_rational(true, -2.0, Rational(-4,2))
+ assert_equal_rational(true, -2.0, Rational(4,-2))
+ assert_equal_rational(false, 3.3, Rational(13,4))
+end