# HG changeset patch # User Jaroslav Hajek # Date 1223387343 -7200 # Node ID 9a0a66f650b179c6af41998e18dd2362cc6bc419 # Parent 9cb73236e5521df0e35a81b4179f98c145e1ecf6 tests for int64 arithmetics diff -r 9cb73236e552 -r 9a0a66f650b1 liboctave/oct-inttypes.cc --- a/liboctave/oct-inttypes.cc Tue Oct 07 15:28:45 2008 +0200 +++ b/liboctave/oct-inttypes.cc Tue Oct 07 15:49:03 2008 +0200 @@ -607,6 +607,41 @@ INSTANTIATE_INTTYPE (uint64_t); +// Tests follow. + +/* + +%!assert(intmax("int64")/intmin("int64"),int64(-1)) +%!assert(intmin("int64")/int64(-1),intmax("int64")) +%!assert(int64(2**63),intmax("int64")) +%!test +%! wstate = warning("query", "Octave:int-convert-overflow"); +%! warning("on", "Octave:int-convert-overflow"); +%! fail("int64(2**63)","warning",".*") +%! warning(wstate.state, "Octave:int-convert-overflow"); +%!assert(uint64(2**64),intmax("uint64")) +%!test +%! a = 1.9*2^61; b = uint64(a); b++; assert(b > a) +%!test +%! a = -1.9*2^61; b = int64(a); b++; assert(b > a) +%!test +%! a = int64(-2**60) + 2; assert(1.25*a == (5*a)/4) +%!test +%! a = uint64(2**61) + 2; assert(1.25*a == (5*a)/4) +%!assert(int32(2**31+0.5),intmax('int32')) +%!test +%! wstate = warning("query", "Octave:int-convert-overflow"); +%! warning("on", "Octave:int-convert-overflow"); +%! fail("int32(2**31+0.5)","warning",".*") +%! warning(wstate.state, "Octave:int-convert-overflow"); +%!assert(int32(-2**31-0.5),intmin('int32')) +%!test +%! wstate = warning("query", "Octave:int-convert-overflow"); +%! warning("on", "Octave:int-convert-overflow"); +%! fail("int32(-2**31-0.5)","warning",".*") +%! warning(wstate.state, "Octave:int-convert-overflow"); +*/ + /* ;;; Local Variables: *** ;;; mode: C++ ***