Skip to content

Commit 3d086f4

Browse files
committed
test: add ParseUInt16() test coverage
1 parent 3530d5d commit 3d086f4

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
@@ -21,6 +21,9 @@ FUZZ_TARGET(parse_numbers)
2121
uint8_t u8;
2222
(void)ParseUInt8(random_string, &u8);
2323

24+
uint16_t u16;
25+
(void)ParseUInt16(random_string, &u16);
26+
2427
int32_t i32;
2528
(void)ParseInt32(random_string, &i32);
2629
(void)atoi(random_string);

src/test/util_tests.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1523,6 +1523,42 @@ BOOST_AUTO_TEST_CASE(test_ParseUInt8)
15231523
BOOST_CHECK(!ParseUInt8("256", nullptr));
15241524
}
15251525

1526+
BOOST_AUTO_TEST_CASE(test_ParseUInt16)
1527+
{
1528+
uint16_t n;
1529+
// Valid values
1530+
BOOST_CHECK(ParseUInt16("1234", nullptr));
1531+
BOOST_CHECK(ParseUInt16("0", &n) && n == 0);
1532+
BOOST_CHECK(ParseUInt16("1234", &n) && n == 1234);
1533+
BOOST_CHECK(ParseUInt16("01234", &n) && n == 1234); // no octal
1534+
BOOST_CHECK(ParseUInt16("65535", &n) && n == static_cast<uint16_t>(65535));
1535+
BOOST_CHECK(ParseUInt16("+65535", &n) && n == 65535);
1536+
BOOST_CHECK(ParseUInt16("00000000000000000012", &n) && n == 12);
1537+
BOOST_CHECK(ParseUInt16("00000000000000000000", &n) && n == 0);
1538+
// Invalid values
1539+
BOOST_CHECK(!ParseUInt16("-00000000000000000000", &n));
1540+
BOOST_CHECK(!ParseUInt16("", &n));
1541+
BOOST_CHECK(!ParseUInt16(" 1", &n)); // no padding inside
1542+
BOOST_CHECK(!ParseUInt16(" -1", &n));
1543+
BOOST_CHECK(!ParseUInt16("++1", &n));
1544+
BOOST_CHECK(!ParseUInt16("+-1", &n));
1545+
BOOST_CHECK(!ParseUInt16("-+1", &n));
1546+
BOOST_CHECK(!ParseUInt16("--1", &n));
1547+
BOOST_CHECK(!ParseUInt16("-1", &n));
1548+
BOOST_CHECK(!ParseUInt16("1 ", &n));
1549+
BOOST_CHECK(!ParseUInt16("1a", &n));
1550+
BOOST_CHECK(!ParseUInt16("aap", &n));
1551+
BOOST_CHECK(!ParseUInt16("0x1", &n)); // no hex
1552+
BOOST_CHECK(!ParseUInt16("0x1", &n)); // no hex
1553+
BOOST_CHECK(!ParseUInt16(STRING_WITH_EMBEDDED_NULL_CHAR, &n));
1554+
// Overflow and underflow
1555+
BOOST_CHECK(!ParseUInt16("-65535", &n));
1556+
BOOST_CHECK(!ParseUInt16("65536", &n));
1557+
BOOST_CHECK(!ParseUInt16("-123", &n));
1558+
BOOST_CHECK(!ParseUInt16("-123", nullptr));
1559+
BOOST_CHECK(!ParseUInt16("65536", nullptr));
1560+
}
1561+
15261562
BOOST_AUTO_TEST_CASE(test_ParseUInt32)
15271563
{
15281564
uint32_t n;

0 commit comments

Comments
 (0)