Skip to content

Commit 05c1095

Browse files
test: Add testing of ParseInt/ParseUInt edge cases with leading +/-/0:s
1 parent 555b5d1 commit 05c1095

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

src/test/util_tests.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1423,10 +1423,18 @@ BOOST_AUTO_TEST_CASE(test_ParseInt32)
14231423
BOOST_CHECK(ParseInt32("2147483647", &n) && n == 2147483647);
14241424
BOOST_CHECK(ParseInt32("-2147483648", &n) && n == (-2147483647 - 1)); // (-2147483647 - 1) equals INT_MIN
14251425
BOOST_CHECK(ParseInt32("-1234", &n) && n == -1234);
1426+
BOOST_CHECK(ParseInt32("00000000000000001234", &n) && n == 1234);
1427+
BOOST_CHECK(ParseInt32("-00000000000000001234", &n) && n == -1234);
1428+
BOOST_CHECK(ParseInt32("00000000000000000000", &n) && n == 0);
1429+
BOOST_CHECK(ParseInt32("-00000000000000000000", &n) && n == 0);
14261430
// Invalid values
14271431
BOOST_CHECK(!ParseInt32("", &n));
14281432
BOOST_CHECK(!ParseInt32(" 1", &n)); // no padding inside
14291433
BOOST_CHECK(!ParseInt32("1 ", &n));
1434+
BOOST_CHECK(!ParseInt32("++1", &n));
1435+
BOOST_CHECK(!ParseInt32("+-1", &n));
1436+
BOOST_CHECK(!ParseInt32("-+1", &n));
1437+
BOOST_CHECK(!ParseInt32("--1", &n));
14301438
BOOST_CHECK(!ParseInt32("1a", &n));
14311439
BOOST_CHECK(!ParseInt32("aap", &n));
14321440
BOOST_CHECK(!ParseInt32("0x1", &n)); // no hex
@@ -1482,10 +1490,19 @@ BOOST_AUTO_TEST_CASE(test_ParseUInt32)
14821490
BOOST_CHECK(ParseUInt32("2147483647", &n) && n == 2147483647);
14831491
BOOST_CHECK(ParseUInt32("2147483648", &n) && n == (uint32_t)2147483648);
14841492
BOOST_CHECK(ParseUInt32("4294967295", &n) && n == (uint32_t)4294967295);
1493+
BOOST_CHECK(ParseUInt32("+1234", &n) && n == 1234);
1494+
BOOST_CHECK(ParseUInt32("00000000000000001234", &n) && n == 1234);
1495+
BOOST_CHECK(ParseUInt32("00000000000000000000", &n) && n == 0);
14851496
// Invalid values
1497+
BOOST_CHECK(!ParseUInt32("-00000000000000000000", &n));
14861498
BOOST_CHECK(!ParseUInt32("", &n));
14871499
BOOST_CHECK(!ParseUInt32(" 1", &n)); // no padding inside
14881500
BOOST_CHECK(!ParseUInt32(" -1", &n));
1501+
BOOST_CHECK(!ParseUInt32("++1", &n));
1502+
BOOST_CHECK(!ParseUInt32("+-1", &n));
1503+
BOOST_CHECK(!ParseUInt32("-+1", &n));
1504+
BOOST_CHECK(!ParseUInt32("--1", &n));
1505+
BOOST_CHECK(!ParseUInt32("-1", &n));
14891506
BOOST_CHECK(!ParseUInt32("1 ", &n));
14901507
BOOST_CHECK(!ParseUInt32("1a", &n));
14911508
BOOST_CHECK(!ParseUInt32("aap", &n));

0 commit comments

Comments
 (0)