@@ -1523,6 +1523,42 @@ BOOST_AUTO_TEST_CASE(test_ParseUInt8)
1523
1523
BOOST_CHECK (!ParseUInt8 (" 256" , nullptr ));
1524
1524
}
1525
1525
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
+
1526
1562
BOOST_AUTO_TEST_CASE (test_ParseUInt32)
1527
1563
{
1528
1564
uint32_t n;
0 commit comments