Skip to content

Commit 24c6546

Browse files
committed
test: add ParseUInt8() unit and fuzz test coverage
1 parent 3c63191 commit 24c6546

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

src/test/fuzz/parse_numbers.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ FUZZ_TARGET(parse_numbers)
1818
double d;
1919
(void)ParseDouble(random_string, &d);
2020

21+
uint8_t u8;
22+
(void)ParseUInt8(random_string, &u8);
23+
2124
int32_t i32;
2225
(void)ParseInt32(random_string, &i32);
2326
(void)atoi(random_string);

src/test/util_tests.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1490,6 +1490,42 @@ BOOST_AUTO_TEST_CASE(test_ParseInt64)
14901490
BOOST_CHECK(!ParseInt64("32482348723847471234", nullptr));
14911491
}
14921492

1493+
BOOST_AUTO_TEST_CASE(test_ParseUInt8)
1494+
{
1495+
uint8_t n;
1496+
// Valid values
1497+
BOOST_CHECK(ParseUInt8("255", nullptr));
1498+
BOOST_CHECK(ParseUInt8("0", &n) && n == 0);
1499+
BOOST_CHECK(ParseUInt8("255", &n) && n == 255);
1500+
BOOST_CHECK(ParseUInt8("0255", &n) && n == 255); // no octal
1501+
BOOST_CHECK(ParseUInt8("255", &n) && n == static_cast<uint8_t>(255));
1502+
BOOST_CHECK(ParseUInt8("+255", &n) && n == 255);
1503+
BOOST_CHECK(ParseUInt8("00000000000000000012", &n) && n == 12);
1504+
BOOST_CHECK(ParseUInt8("00000000000000000000", &n) && n == 0);
1505+
// Invalid values
1506+
BOOST_CHECK(!ParseUInt8("-00000000000000000000", &n));
1507+
BOOST_CHECK(!ParseUInt8("", &n));
1508+
BOOST_CHECK(!ParseUInt8(" 1", &n)); // no padding inside
1509+
BOOST_CHECK(!ParseUInt8(" -1", &n));
1510+
BOOST_CHECK(!ParseUInt8("++1", &n));
1511+
BOOST_CHECK(!ParseUInt8("+-1", &n));
1512+
BOOST_CHECK(!ParseUInt8("-+1", &n));
1513+
BOOST_CHECK(!ParseUInt8("--1", &n));
1514+
BOOST_CHECK(!ParseUInt8("-1", &n));
1515+
BOOST_CHECK(!ParseUInt8("1 ", &n));
1516+
BOOST_CHECK(!ParseUInt8("1a", &n));
1517+
BOOST_CHECK(!ParseUInt8("aap", &n));
1518+
BOOST_CHECK(!ParseUInt8("0x1", &n)); // no hex
1519+
BOOST_CHECK(!ParseUInt8("0x1", &n)); // no hex
1520+
BOOST_CHECK(!ParseUInt8("1"s "\0" "1"s, &n)); // no embedded NULs
1521+
// Overflow and underflow
1522+
BOOST_CHECK(!ParseUInt8("-255", &n));
1523+
BOOST_CHECK(!ParseUInt8("256", &n));
1524+
BOOST_CHECK(!ParseUInt8("-123", &n));
1525+
BOOST_CHECK(!ParseUInt8("-123", nullptr));
1526+
BOOST_CHECK(!ParseUInt8("256", nullptr));
1527+
}
1528+
14931529
BOOST_AUTO_TEST_CASE(test_ParseUInt32)
14941530
{
14951531
uint32_t n;

0 commit comments

Comments
 (0)