summaryrefslogtreecommitdiff log msg author committer range
path: root/test/-ext-/rational/test_rat.rb
 ```1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 ``` ``````# frozen_string_literal: false require 'test/unit' require "-test-/rational" class TestRational < Test::Unit::TestCase class TestGCD < Test::Unit::TestCase def test_gcd_normal x = 2*2*3*3*3 y = 2*2*2*3*3 gcd = 2*2*3*3 assert_equal(gcd, x.gcd_normal(y)) end def test_gcd_gmp x = 2*2*3*3*3 y = 2*2*2*3*3 gcd = 2*2*3*3 assert_equal(gcd, x.gcd_gmp(y)) rescue NotImplementedError end def test_gcd_gmp_brute_force -13.upto(13) {|x| -13.upto(13) {|y| assert_equal(x.gcd_normal(y), x.gcd_gmp(y)) } } rescue NotImplementedError end end def test_rb_rational_raw rat = Rational.raw(1, 2) assert_equal(1, rat.numerator) assert_equal(2, rat.denominator) rat = Rational.raw(-1, 2) assert_equal(-1, rat.numerator) assert_equal(2, rat.denominator) rat = Rational.raw(1, -2) assert_equal(-1, rat.numerator) assert_equal(2, rat.denominator) assert_equal(1/2r, Rational.raw(1.0, 2.0)) assert_raise(TypeError) { Rational.raw("1", 2) } assert_raise(TypeError) { Rational.raw(1, "2") } class << (o = Object.new) def to_i; 42; end end assert_raise(TypeError) { Rational.raw(o, 2) } assert_raise(TypeError) { Rational.raw(1, o) } class << (o = Object.new) def to_int; 42; end end rat = Rational.raw(o, 2) assert_equal(42, rat.numerator) assert_equal(2, rat.denominator) rat = Rational.raw(2, o) assert_equal(2, rat.numerator) assert_equal(42, rat.denominator) end end ``````