1require 'test/unit' 2require_relative 'ruby/envutil' 3 4# mathn redefines too much. It must be isolated to child processes. 5class TestMathn < Test::Unit::TestCase 6 def test_power 7 assert_in_out_err ['-r', 'mathn', '-e', 'a=1**2;!a'], "", [], [], '[ruby-core:25740]' 8 assert_in_out_err ['-r', 'mathn', '-e', 'a=(1 << 126)**2;!a'], "", [], [], '[ruby-core:25740]' 9 assert_in_out_err ['-r', 'mathn/complex', '-e', 'a=Complex(0,1)**4;!a'], "", [], [], '[ruby-core:44170]' 10 assert_in_out_err ['-r', 'mathn/complex', '-e', 'a=Complex(0,1)**5;!a'], "", [], [], '[ruby-core:44170]' 11 end 12 13 def test_floor 14 assert_separately(%w[-rmathn], <<-EOS) 15 assert_equal( 2, ( 13/5).floor) 16 assert_equal( 2, ( 5/2).floor) 17 assert_equal( 2, ( 12/5).floor) 18 assert_equal(-3, (-12/5).floor) 19 assert_equal(-3, ( -5/2).floor) 20 assert_equal(-3, (-13/5).floor) 21 22 assert_equal( 2, ( 13/5).floor(0)) 23 assert_equal( 2, ( 5/2).floor(0)) 24 assert_equal( 2, ( 12/5).floor(0)) 25 assert_equal(-3, (-12/5).floor(0)) 26 assert_equal(-3, ( -5/2).floor(0)) 27 assert_equal(-3, (-13/5).floor(0)) 28 29 assert_equal(( 13/5), ( 13/5).floor(2)) 30 assert_equal(( 5/2), ( 5/2).floor(2)) 31 assert_equal(( 12/5), ( 12/5).floor(2)) 32 assert_equal((-12/5), (-12/5).floor(2)) 33 assert_equal(( -5/2), ( -5/2).floor(2)) 34 assert_equal((-13/5), (-13/5).floor(2)) 35 EOS 36 end 37 38 def test_ceil 39 assert_separately(%w[-rmathn], <<-EOS) 40 assert_equal( 3, ( 13/5).ceil) 41 assert_equal( 3, ( 5/2).ceil) 42 assert_equal( 3, ( 12/5).ceil) 43 assert_equal(-2, (-12/5).ceil) 44 assert_equal(-2, ( -5/2).ceil) 45 assert_equal(-2, (-13/5).ceil) 46 47 assert_equal( 3, ( 13/5).ceil(0)) 48 assert_equal( 3, ( 5/2).ceil(0)) 49 assert_equal( 3, ( 12/5).ceil(0)) 50 assert_equal(-2, (-12/5).ceil(0)) 51 assert_equal(-2, ( -5/2).ceil(0)) 52 assert_equal(-2, (-13/5).ceil(0)) 53 54 assert_equal(( 13/5), ( 13/5).ceil(2)) 55 assert_equal(( 5/2), ( 5/2).ceil(2)) 56 assert_equal(( 12/5), ( 12/5).ceil(2)) 57 assert_equal((-12/5), (-12/5).ceil(2)) 58 assert_equal(( -5/2), ( -5/2).ceil(2)) 59 assert_equal((-13/5), (-13/5).ceil(2)) 60 EOS 61 end 62 63 def test_truncate 64 assert_separately(%w[-rmathn], <<-EOS) 65 assert_equal( 2, ( 13/5).truncate) 66 assert_equal( 2, ( 5/2).truncate) 67 assert_equal( 2, ( 12/5).truncate) 68 assert_equal(-2, (-12/5).truncate) 69 assert_equal(-2, ( -5/2).truncate) 70 assert_equal(-2, (-13/5).truncate) 71 72 assert_equal( 2, ( 13/5).truncate(0)) 73 assert_equal( 2, ( 5/2).truncate(0)) 74 assert_equal( 2, ( 12/5).truncate(0)) 75 assert_equal(-2, (-12/5).truncate(0)) 76 assert_equal(-2, ( -5/2).truncate(0)) 77 assert_equal(-2, (-13/5).truncate(0)) 78 79 assert_equal(( 13/5), ( 13/5).truncate(2)) 80 assert_equal(( 5/2), ( 5/2).truncate(2)) 81 assert_equal(( 12/5), ( 12/5).truncate(2)) 82 assert_equal((-12/5), (-12/5).truncate(2)) 83 assert_equal(( -5/2), ( -5/2).truncate(2)) 84 assert_equal((-13/5), (-13/5).truncate(2)) 85 EOS 86 end 87 88 def test_round 89 assert_separately(%w[-rmathn], <<-EOS) 90 assert_equal( 3, ( 13/5).round) 91 assert_equal( 3, ( 5/2).round) 92 assert_equal( 2, ( 12/5).round) 93 assert_equal(-2, (-12/5).round) 94 assert_equal(-3, ( -5/2).round) 95 assert_equal(-3, (-13/5).round) 96 97 assert_equal( 3, ( 13/5).round(0)) 98 assert_equal( 3, ( 5/2).round(0)) 99 assert_equal( 2, ( 12/5).round(0)) 100 assert_equal(-2, (-12/5).round(0)) 101 assert_equal(-3, ( -5/2).round(0)) 102 assert_equal(-3, (-13/5).round(0)) 103 104 assert_equal(( 13/5), ( 13/5).round(2)) 105 assert_equal(( 5/2), ( 5/2).round(2)) 106 assert_equal(( 12/5), ( 12/5).round(2)) 107 assert_equal((-12/5), (-12/5).round(2)) 108 assert_equal(( -5/2), ( -5/2).round(2)) 109 assert_equal((-13/5), (-13/5).round(2)) 110 EOS 111 end 112end 113