From 65d698e180b566163b50a909fdbe45ae2bb5d895 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 19 Jul 2007 05:38:48 +0000 Subject: * bignum.c (rb_big_lshift, rb_big_rshift): separated functions to get rid of infinite recursion. fixed calculation in edge cases. [ruby-dev:31244] * numeric.c (rb_fix_lshift, rb_fix_rshift): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@12814 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_integer.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'test/ruby') diff --git a/test/ruby/test_integer.rb b/test/ruby/test_integer.rb index d4b45d828..dd2be1e2c 100644 --- a/test/ruby/test_integer.rb +++ b/test/ruby/test_integer.rb @@ -93,6 +93,14 @@ class TestInteger < Test::Unit::TestCase #VS.map! {|v| 0x4000000000000000.coerce(v)[0] } + BDSIZE = 0x4000000000000000.coerce(0)[0].size + def self.bdsize(x) + ((x + 1) / 8 + BDSIZE) / BDSIZE * BDSIZE + end + def bdsize(x) + self.class.bdsize(x) + end + def test_aref VS.each {|a| 100.times {|i| @@ -233,6 +241,11 @@ class TestInteger < Test::Unit::TestCase end } } + assert_equal(0, 1 << -0x40000000) + assert_equal(0, 1 << -0x40000001) + assert_equal(0, 1 << -0x80000000) + assert_equal(0, 1 << -0x80000001) + # assert_equal(bdsize(0x80000000), (1 << 0x80000000).size) end def test_rshift @@ -248,6 +261,12 @@ class TestInteger < Test::Unit::TestCase end } } + # assert_equal(bdsize(0x40000001), (1 >> -0x40000001).size) + assert((1 >> 0x80000000).zero?) + assert((1 >> 0xffffffff).zero?) + assert((1 >> 0x100000000).zero?) + # assert_equal((1 << 0x40000000), (1 >> -0x40000000)) + # assert_equal((1 << 0x40000001), (1 >> -0x40000001)) end def test_succ -- cgit