diff options
author | Jon Atack <jon@atack.com> | 2021-03-19 23:50:36 +0100 |
---|---|---|
committer | Jon Atack <jon@atack.com> | 2021-03-19 23:50:36 +0100 |
commit | 3d086f42ab58f0f5984101d5285d5a707e3dc8e7 (patch) | |
tree | 73d53dc74ba256b4d494f04b46fe68b52c7aa61a /src/test | |
parent | 3530d5d2d851d025b013b2ea79ed39a57cbbafcd (diff) | |
download | bitcoin-3d086f42ab58f0f5984101d5285d5a707e3dc8e7.tar.xz |
test: add ParseUInt16() test coverage
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/fuzz/parse_numbers.cpp | 3 | ||||
-rw-r--r-- | src/test/util_tests.cpp | 36 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/test/fuzz/parse_numbers.cpp b/src/test/fuzz/parse_numbers.cpp index 1ad5fb6a05..2c546e9b4a 100644 --- a/src/test/fuzz/parse_numbers.cpp +++ b/src/test/fuzz/parse_numbers.cpp @@ -21,6 +21,9 @@ FUZZ_TARGET(parse_numbers) uint8_t u8; (void)ParseUInt8(random_string, &u8); + uint16_t u16; + (void)ParseUInt16(random_string, &u16); + int32_t i32; (void)ParseInt32(random_string, &i32); (void)atoi(random_string); diff --git a/src/test/util_tests.cpp b/src/test/util_tests.cpp index 98a322eae5..470a8a3a44 100644 --- a/src/test/util_tests.cpp +++ b/src/test/util_tests.cpp @@ -1523,6 +1523,42 @@ BOOST_AUTO_TEST_CASE(test_ParseUInt8) BOOST_CHECK(!ParseUInt8("256", nullptr)); } +BOOST_AUTO_TEST_CASE(test_ParseUInt16) +{ + uint16_t n; + // Valid values + BOOST_CHECK(ParseUInt16("1234", nullptr)); + BOOST_CHECK(ParseUInt16("0", &n) && n == 0); + BOOST_CHECK(ParseUInt16("1234", &n) && n == 1234); + BOOST_CHECK(ParseUInt16("01234", &n) && n == 1234); // no octal + BOOST_CHECK(ParseUInt16("65535", &n) && n == static_cast<uint16_t>(65535)); + BOOST_CHECK(ParseUInt16("+65535", &n) && n == 65535); + BOOST_CHECK(ParseUInt16("00000000000000000012", &n) && n == 12); + BOOST_CHECK(ParseUInt16("00000000000000000000", &n) && n == 0); + // Invalid values + BOOST_CHECK(!ParseUInt16("-00000000000000000000", &n)); + BOOST_CHECK(!ParseUInt16("", &n)); + BOOST_CHECK(!ParseUInt16(" 1", &n)); // no padding inside + BOOST_CHECK(!ParseUInt16(" -1", &n)); + BOOST_CHECK(!ParseUInt16("++1", &n)); + BOOST_CHECK(!ParseUInt16("+-1", &n)); + BOOST_CHECK(!ParseUInt16("-+1", &n)); + BOOST_CHECK(!ParseUInt16("--1", &n)); + BOOST_CHECK(!ParseUInt16("-1", &n)); + BOOST_CHECK(!ParseUInt16("1 ", &n)); + BOOST_CHECK(!ParseUInt16("1a", &n)); + BOOST_CHECK(!ParseUInt16("aap", &n)); + BOOST_CHECK(!ParseUInt16("0x1", &n)); // no hex + BOOST_CHECK(!ParseUInt16("0x1", &n)); // no hex + BOOST_CHECK(!ParseUInt16(STRING_WITH_EMBEDDED_NULL_CHAR, &n)); + // Overflow and underflow + BOOST_CHECK(!ParseUInt16("-65535", &n)); + BOOST_CHECK(!ParseUInt16("65536", &n)); + BOOST_CHECK(!ParseUInt16("-123", &n)); + BOOST_CHECK(!ParseUInt16("-123", nullptr)); + BOOST_CHECK(!ParseUInt16("65536", nullptr)); +} + BOOST_AUTO_TEST_CASE(test_ParseUInt32) { uint32_t n; |