@@ -1617,6 +1617,35 @@ BOOST_AUTO_TEST_CASE(test_ParseInt32)
16171617 BOOST_CHECK (!ParseInt32 (" 32482348723847471234" , nullptr ));
16181618}
16191619
1620+ template <typename T>
1621+ static void RunToIntegralTests ()
1622+ {
1623+ BOOST_CHECK (!ToIntegral<T>(STRING_WITH_EMBEDDED_NULL_CHAR));
1624+ BOOST_CHECK (!ToIntegral<T>(" 1" ));
1625+ BOOST_CHECK (!ToIntegral<T>(" 1 " ));
1626+ BOOST_CHECK (!ToIntegral<T>(" 1a" ));
1627+ BOOST_CHECK (!ToIntegral<T>(" 1.1" ));
1628+ BOOST_CHECK (!ToIntegral<T>(" 1.9" ));
1629+ BOOST_CHECK (!ToIntegral<T>(" +01.9" ));
1630+ BOOST_CHECK (!ToIntegral<T>(" -" ));
1631+ BOOST_CHECK (!ToIntegral<T>(" +" ));
1632+ BOOST_CHECK (!ToIntegral<T>(" -1" ));
1633+ BOOST_CHECK (!ToIntegral<T>(" -1 " ));
1634+ BOOST_CHECK (!ToIntegral<T>(" -1 " ));
1635+ BOOST_CHECK (!ToIntegral<T>(" +1" ));
1636+ BOOST_CHECK (!ToIntegral<T>(" +1" ));
1637+ BOOST_CHECK (!ToIntegral<T>(" +1 " ));
1638+ BOOST_CHECK (!ToIntegral<T>(" +-1" ));
1639+ BOOST_CHECK (!ToIntegral<T>(" -+1" ));
1640+ BOOST_CHECK (!ToIntegral<T>(" ++1" ));
1641+ BOOST_CHECK (!ToIntegral<T>(" --1" ));
1642+ BOOST_CHECK (!ToIntegral<T>(" " ));
1643+ BOOST_CHECK (!ToIntegral<T>(" aap" ));
1644+ BOOST_CHECK (!ToIntegral<T>(" 0x1" ));
1645+ BOOST_CHECK (!ToIntegral<T>(" -32482348723847471234" ));
1646+ BOOST_CHECK (!ToIntegral<T>(" 32482348723847471234" ));
1647+ }
1648+
16201649BOOST_AUTO_TEST_CASE (test_ToIntegral)
16211650{
16221651 BOOST_CHECK_EQUAL (ToIntegral<int32_t >(" 1234" ).value (), 1'234 );
@@ -1629,27 +1658,14 @@ BOOST_AUTO_TEST_CASE(test_ToIntegral)
16291658 BOOST_CHECK_EQUAL (ToIntegral<int32_t >(" -1234" ).value (), -1'234 );
16301659 BOOST_CHECK_EQUAL (ToIntegral<int32_t >(" -1" ).value (), -1 );
16311660
1632- BOOST_CHECK (!ToIntegral<int32_t >(" 1" ));
1633- BOOST_CHECK (!ToIntegral<int32_t >(" 1 " ));
1634- BOOST_CHECK (!ToIntegral<int32_t >(" 1a" ));
1635- BOOST_CHECK (!ToIntegral<int32_t >(" 1.1" ));
1636- BOOST_CHECK (!ToIntegral<int32_t >(" 1.9" ));
1637- BOOST_CHECK (!ToIntegral<int32_t >(" +01.9" ));
1638- BOOST_CHECK (!ToIntegral<int32_t >(" -1" ));
1639- BOOST_CHECK (!ToIntegral<int32_t >(" -1 " ));
1640- BOOST_CHECK (!ToIntegral<int32_t >(" -1 " ));
1641- BOOST_CHECK (!ToIntegral<int32_t >(" +1" ));
1642- BOOST_CHECK (!ToIntegral<int32_t >(" +1" ));
1643- BOOST_CHECK (!ToIntegral<int32_t >(" +1 " ));
1644- BOOST_CHECK (!ToIntegral<int32_t >(" +-1" ));
1645- BOOST_CHECK (!ToIntegral<int32_t >(" -+1" ));
1646- BOOST_CHECK (!ToIntegral<int32_t >(" ++1" ));
1647- BOOST_CHECK (!ToIntegral<int32_t >(" --1" ));
1648- BOOST_CHECK (!ToIntegral<int32_t >(" " ));
1649- BOOST_CHECK (!ToIntegral<int32_t >(" aap" ));
1650- BOOST_CHECK (!ToIntegral<int32_t >(" 0x1" ));
1651- BOOST_CHECK (!ToIntegral<int32_t >(" -32482348723847471234" ));
1652- BOOST_CHECK (!ToIntegral<int32_t >(" 32482348723847471234" ));
1661+ RunToIntegralTests<uint64_t >();
1662+ RunToIntegralTests<int64_t >();
1663+ RunToIntegralTests<uint32_t >();
1664+ RunToIntegralTests<int32_t >();
1665+ RunToIntegralTests<uint16_t >();
1666+ RunToIntegralTests<int16_t >();
1667+ RunToIntegralTests<uint8_t >();
1668+ RunToIntegralTests<int8_t >();
16531669
16541670 BOOST_CHECK (!ToIntegral<int64_t >(" -9223372036854775809" ));
16551671 BOOST_CHECK_EQUAL (ToIntegral<int64_t >(" -9223372036854775808" ).value (), -9'223'372'036'854'775'807LL - 1LL );
@@ -1928,32 +1944,6 @@ BOOST_AUTO_TEST_CASE(test_ParseUInt64)
19281944 BOOST_CHECK (!ParseUInt64 (" -1234" , &n));
19291945}
19301946
1931- BOOST_AUTO_TEST_CASE (test_ParseDouble)
1932- {
1933- double n;
1934- // Valid values
1935- BOOST_CHECK (ParseDouble (" 1234" , nullptr ));
1936- BOOST_CHECK (ParseDouble (" 0" , &n) && n == 0.0 );
1937- BOOST_CHECK (ParseDouble (" 1234" , &n) && n == 1234.0 );
1938- BOOST_CHECK (ParseDouble (" 01234" , &n) && n == 1234.0 ); // no octal
1939- BOOST_CHECK (ParseDouble (" 2147483647" , &n) && n == 2147483647.0 );
1940- BOOST_CHECK (ParseDouble (" -2147483648" , &n) && n == -2147483648.0 );
1941- BOOST_CHECK (ParseDouble (" -1234" , &n) && n == -1234.0 );
1942- BOOST_CHECK (ParseDouble (" 1e6" , &n) && n == 1e6 );
1943- BOOST_CHECK (ParseDouble (" -1e6" , &n) && n == -1e6 );
1944- // Invalid values
1945- BOOST_CHECK (!ParseDouble (" " , &n));
1946- BOOST_CHECK (!ParseDouble (" 1" , &n)); // no padding inside
1947- BOOST_CHECK (!ParseDouble (" 1 " , &n));
1948- BOOST_CHECK (!ParseDouble (" 1a" , &n));
1949- BOOST_CHECK (!ParseDouble (" aap" , &n));
1950- BOOST_CHECK (!ParseDouble (" 0x1" , &n)); // no hex
1951- BOOST_CHECK (!ParseDouble (STRING_WITH_EMBEDDED_NULL_CHAR, &n));
1952- // Overflow and underflow
1953- BOOST_CHECK (!ParseDouble (" -1e10000" , nullptr ));
1954- BOOST_CHECK (!ParseDouble (" 1e10000" , nullptr ));
1955- }
1956-
19571947BOOST_AUTO_TEST_CASE (test_FormatParagraph)
19581948{
19591949 BOOST_CHECK_EQUAL (FormatParagraph (" " , 79 , 0 ), " " );
0 commit comments