git-svn-id: svn://ultimatepp.org/upp/trunk@6463 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2013-10-21 18:34:12 +00:00
parent c7671fcfda
commit 4ded1b0cd2

View file

@ -2,6 +2,21 @@
using namespace Upp;
#define CHECK_OVERFLOW(s, method, overflow) \
{ \
DLOG(s << ' ' << #method); \
bool isoverflow = false; \
try { \
CParser p(s); \
DDUMP(p.method); \
} \
catch(CParser::Error) { \
DLOG("Overflow"); \
isoverflow = true; \
} \
ASSERT(isoverflow == overflow); \
}
CONSOLE_APP_MAIN
{
CParser p("i if while 12345 alfa");
@ -12,4 +27,27 @@ CONSOLE_APP_MAIN
ASSERT(p.ReadInt() == 12345);
ASSERT(p.IsId());
ASSERT(p.ReadId() == "alfa");
CHECK_OVERFLOW("2147483647", ReadInt(), false);
CHECK_OVERFLOW("2147483648", ReadInt(), true);
CHECK_OVERFLOW("-2147483648", ReadInt(), false);
CHECK_OVERFLOW("-2147483649", ReadInt(), true);
CHECK_OVERFLOW("ffffffff", ReadNumber(16), false);
CHECK_OVERFLOW("100000000", ReadNumber(16), true);
CHECK_OVERFLOW("9223372036854775807", ReadInt64(), false);
CHECK_OVERFLOW("9223372036854775808", ReadInt64(), true);
CHECK_OVERFLOW("-9223372036854775808", ReadInt64(), false);
CHECK_OVERFLOW("-9223372036854775809", ReadInt64(), true);
CHECK_OVERFLOW("ffffffffffffffff", ReadNumber64(16), false);
CHECK_OVERFLOW("10000000000000000", ReadNumber64(16), true);
// CHECK_OVERFLOW("1e300", ReadDouble(), false);
// CHECK_OVERFLOW("1e500", ReadDouble(), true);
// CHECK_OVERFLOW("-1e300", ReadDouble(), false);
// CHECK_OVERFLOW("-1e500", ReadDouble(), true);
}