summaryrefslogtreecommitdiffhomepage
path: root/test/t/integer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/t/integer.rb')
-rw-r--r--test/t/integer.rb28
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