From 7a8a97cceeb98ced03b79306a41d5a35185ea92b Mon Sep 17 00:00:00 2001 From: cremno Date: Mon, 5 May 2014 00:04:12 +0200 Subject: add Mrbtest::FIXNUM_{MAX,MIN,BIT} --- test/driver.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'test') diff --git a/test/driver.c b/test/driver.c index f7fb1b6df..646184de1 100644 --- a/test/driver.c +++ b/test/driver.c @@ -87,6 +87,7 @@ main(int argc, char **argv) { mrb_state *mrb; struct RClass *krn; + struct RClass *mrbtest; int ret; print_hint(); @@ -106,6 +107,18 @@ main(int argc, char **argv) krn = mrb->kernel_module; mrb_define_method(mrb, krn, "__t_printstr__", mrb_t_printstr, MRB_ARGS_REQ(1)); + mrbtest = mrb_define_module(mrb, "Mrbtest"); + +#ifdef MRB_WORD_BOXING + mrb_define_const(mrb, mrbtest, "FIXNUM_MAX", mrb_fixnum_value(MRB_INT_MAX >> MRB_FIXNUM_SHIFT)); + mrb_define_const(mrb, mrbtest, "FIXNUM_MIN", mrb_fixnum_value(MRB_INT_MIN >> MRB_FIXNUM_SHIFT)); + mrb_define_const(mrb, mrbtest, "FIXNUM_BIT", mrb_fixnum_value(MRB_INT_BIT >> MRB_FIXNUM_SHIFT)); +#else + mrb_define_const(mrb, mrbtest, "FIXNUM_MAX", mrb_fixnum_value(MRB_INT_MAX)); + mrb_define_const(mrb, mrbtest, "FIXNUM_MIN", mrb_fixnum_value(MRB_INT_MIN)); + mrb_define_const(mrb, mrbtest, "FIXNUM_BIT", mrb_fixnum_value(MRB_INT_BIT)); +#endif + mrb_init_mrbtest(mrb); ret = eval_test(mrb); mrb_close(mrb); -- cgit v1.2.3 From 964ce6e3272f18325bda7756420409600120a99e Mon Sep 17 00:00:00 2001 From: cremno Date: Mon, 5 May 2014 00:06:17 +0200 Subject: test fixnum overflow for add, sub and mul --- test/t/integer.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'test') diff --git a/test/t/integer.rb b/test/t/integer.rb index 66dd61c0b..58a102943 100644 --- a/test/t/integer.rb +++ b/test/t/integer.rb @@ -18,6 +18,14 @@ assert('Integer#+', '15.2.8.3.1') do assert_raise(TypeError){ 0+nil } assert_raise(TypeError){ 1+nil } + + c = Mrbtest::FIXNUM_MAX + 1 + d = Mrbtest::FIXNUM_MAX.__send__(:+, 1) + e = Mrbtest::FIXNUM_MAX + 1.0 + assert_equal Float, c.class + assert_equal Float, d.class + assert_float e, c + assert_float e, d end assert('Integer#-', '15.2.8.3.2') do @@ -26,6 +34,14 @@ assert('Integer#-', '15.2.8.3.2') do assert_equal 1, a assert_equal 1.0, b + + c = Mrbtest::FIXNUM_MIN - 1 + d = Mrbtest::FIXNUM_MIN.__send__(:-, 1) + e = Mrbtest::FIXNUM_MIN - 1.0 + assert_equal Float, c.class + assert_equal Float, d.class + assert_float e, c + assert_float e, d end assert('Integer#*', '15.2.8.3.3') do @@ -37,6 +53,14 @@ assert('Integer#*', '15.2.8.3.3') do assert_raise(TypeError){ 0*nil } assert_raise(TypeError){ 1*nil } + + c = Mrbtest::FIXNUM_MAX * 2 + d = Mrbtest::FIXNUM_MAX.__send__(:*, 2) + e = Mrbtest::FIXNUM_MAX * 2.0 + assert_equal Float, c.class + assert_equal Float, d.class + assert_float e, c + assert_float e, d end assert('Integer#/', '15.2.8.3.4') do -- cgit v1.2.3