diff options
Diffstat (limited to 'test/t/integer.rb')
| -rw-r--r-- | test/t/integer.rb | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/test/t/integer.rb b/test/t/integer.rb index c50ef112c..d4ef8b519 100644 --- a/test/t/integer.rb +++ b/test/t/integer.rb @@ -71,10 +71,24 @@ assert('Integer#%', '15.2.8.3.5') do a = 1%1 b = 1%1.0 c = 2%4 + d = 2%5 + e = 2%-5 + f = -2%5 + g = -2%-5 + h = 2%-2 + i = -2%2 + j = -2%-2 assert_equal 0, a assert_equal 0.0, b assert_equal 2, c + assert_equal 2, d + assert_equal(-3, e) + assert_equal 3, f + assert_equal(-2, g) + assert_equal 0, h + assert_equal 0, i + assert_equal 0, j end assert('Integer#<=>', '15.2.9.3.6') do @@ -134,10 +148,11 @@ assert('Integer#<<', '15.2.8.3.12') do # Left Shift by a negative is Right Shift assert_equal 23, 46 << -1 - # Raise when shift is too large - assert_raise(RangeError) do - 2 << 128 - end + # Left Shift by 31 is bitShift overflow to SignedInt + assert_equal 2147483648, 1 << 31 + + # -3 Left Shift by 30 is bitShift overflow to SignedInt + assert_equal(-3221225472, -3 << 30) end assert('Integer#>>', '15.2.8.3.13') do @@ -151,11 +166,6 @@ assert('Integer#>>', '15.2.8.3.13') do # Don't raise on large Right Shift assert_equal 0, 23 >> 128 - - # Raise when shift is too large - assert_raise(RangeError) do - 2 >> -128 - end end assert('Integer#ceil', '15.2.8.3.14') do |
