@@ -1474,6 +1474,35 @@ BOOST_AUTO_TEST_CASE(test_ParseInt32)
1474
1474
BOOST_CHECK (!ParseInt32 (" 32482348723847471234" , nullptr ));
1475
1475
}
1476
1476
1477
+ template <typename T>
1478
+ static void RunToIntegralTests ()
1479
+ {
1480
+ BOOST_CHECK (!ToIntegral<T>(STRING_WITH_EMBEDDED_NULL_CHAR));
1481
+ BOOST_CHECK (!ToIntegral<T>(" 1" ));
1482
+ BOOST_CHECK (!ToIntegral<T>(" 1 " ));
1483
+ BOOST_CHECK (!ToIntegral<T>(" 1a" ));
1484
+ BOOST_CHECK (!ToIntegral<T>(" 1.1" ));
1485
+ BOOST_CHECK (!ToIntegral<T>(" 1.9" ));
1486
+ BOOST_CHECK (!ToIntegral<T>(" +01.9" ));
1487
+ BOOST_CHECK (!ToIntegral<T>(" -" ));
1488
+ BOOST_CHECK (!ToIntegral<T>(" +" ));
1489
+ BOOST_CHECK (!ToIntegral<T>(" -1" ));
1490
+ BOOST_CHECK (!ToIntegral<T>(" -1 " ));
1491
+ BOOST_CHECK (!ToIntegral<T>(" -1 " ));
1492
+ BOOST_CHECK (!ToIntegral<T>(" +1" ));
1493
+ BOOST_CHECK (!ToIntegral<T>(" +1" ));
1494
+ BOOST_CHECK (!ToIntegral<T>(" +1 " ));
1495
+ BOOST_CHECK (!ToIntegral<T>(" +-1" ));
1496
+ BOOST_CHECK (!ToIntegral<T>(" -+1" ));
1497
+ BOOST_CHECK (!ToIntegral<T>(" ++1" ));
1498
+ BOOST_CHECK (!ToIntegral<T>(" --1" ));
1499
+ BOOST_CHECK (!ToIntegral<T>(" " ));
1500
+ BOOST_CHECK (!ToIntegral<T>(" aap" ));
1501
+ BOOST_CHECK (!ToIntegral<T>(" 0x1" ));
1502
+ BOOST_CHECK (!ToIntegral<T>(" -32482348723847471234" ));
1503
+ BOOST_CHECK (!ToIntegral<T>(" 32482348723847471234" ));
1504
+ }
1505
+
1477
1506
BOOST_AUTO_TEST_CASE (test_ToIntegral)
1478
1507
{
1479
1508
BOOST_CHECK_EQUAL (ToIntegral<int32_t >(" 1234" ).value (), 1'234 );
@@ -1486,27 +1515,14 @@ BOOST_AUTO_TEST_CASE(test_ToIntegral)
1486
1515
BOOST_CHECK_EQUAL (ToIntegral<int32_t >(" -1234" ).value (), -1'234 );
1487
1516
BOOST_CHECK_EQUAL (ToIntegral<int32_t >(" -1" ).value (), -1 );
1488
1517
1489
- BOOST_CHECK (!ToIntegral<int32_t >(" 1" ));
1490
- BOOST_CHECK (!ToIntegral<int32_t >(" 1 " ));
1491
- BOOST_CHECK (!ToIntegral<int32_t >(" 1a" ));
1492
- BOOST_CHECK (!ToIntegral<int32_t >(" 1.1" ));
1493
- BOOST_CHECK (!ToIntegral<int32_t >(" 1.9" ));
1494
- BOOST_CHECK (!ToIntegral<int32_t >(" +01.9" ));
1495
- BOOST_CHECK (!ToIntegral<int32_t >(" -1" ));
1496
- BOOST_CHECK (!ToIntegral<int32_t >(" -1 " ));
1497
- BOOST_CHECK (!ToIntegral<int32_t >(" -1 " ));
1498
- BOOST_CHECK (!ToIntegral<int32_t >(" +1" ));
1499
- BOOST_CHECK (!ToIntegral<int32_t >(" +1" ));
1500
- BOOST_CHECK (!ToIntegral<int32_t >(" +1 " ));
1501
- BOOST_CHECK (!ToIntegral<int32_t >(" +-1" ));
1502
- BOOST_CHECK (!ToIntegral<int32_t >(" -+1" ));
1503
- BOOST_CHECK (!ToIntegral<int32_t >(" ++1" ));
1504
- BOOST_CHECK (!ToIntegral<int32_t >(" --1" ));
1505
- BOOST_CHECK (!ToIntegral<int32_t >(" " ));
1506
- BOOST_CHECK (!ToIntegral<int32_t >(" aap" ));
1507
- BOOST_CHECK (!ToIntegral<int32_t >(" 0x1" ));
1508
- BOOST_CHECK (!ToIntegral<int32_t >(" -32482348723847471234" ));
1509
- BOOST_CHECK (!ToIntegral<int32_t >(" 32482348723847471234" ));
1518
+ RunToIntegralTests<uint64_t >();
1519
+ RunToIntegralTests<int64_t >();
1520
+ RunToIntegralTests<uint32_t >();
1521
+ RunToIntegralTests<int32_t >();
1522
+ RunToIntegralTests<uint16_t >();
1523
+ RunToIntegralTests<int16_t >();
1524
+ RunToIntegralTests<uint8_t >();
1525
+ RunToIntegralTests<int8_t >();
1510
1526
1511
1527
BOOST_CHECK (!ToIntegral<int64_t >(" -9223372036854775809" ));
1512
1528
BOOST_CHECK_EQUAL (ToIntegral<int64_t >(" -9223372036854775808" ).value (), -9'223'372'036'854'775'807LL - 1LL );
@@ -1785,32 +1801,6 @@ BOOST_AUTO_TEST_CASE(test_ParseUInt64)
1785
1801
BOOST_CHECK (!ParseUInt64 (" -1234" , &n));
1786
1802
}
1787
1803
1788
- BOOST_AUTO_TEST_CASE (test_ParseDouble)
1789
- {
1790
- double n;
1791
- // Valid values
1792
- BOOST_CHECK (ParseDouble (" 1234" , nullptr ));
1793
- BOOST_CHECK (ParseDouble (" 0" , &n) && n == 0.0 );
1794
- BOOST_CHECK (ParseDouble (" 1234" , &n) && n == 1234.0 );
1795
- BOOST_CHECK (ParseDouble (" 01234" , &n) && n == 1234.0 ); // no octal
1796
- BOOST_CHECK (ParseDouble (" 2147483647" , &n) && n == 2147483647.0 );
1797
- BOOST_CHECK (ParseDouble (" -2147483648" , &n) && n == -2147483648.0 );
1798
- BOOST_CHECK (ParseDouble (" -1234" , &n) && n == -1234.0 );
1799
- BOOST_CHECK (ParseDouble (" 1e6" , &n) && n == 1e6 );
1800
- BOOST_CHECK (ParseDouble (" -1e6" , &n) && n == -1e6 );
1801
- // Invalid values
1802
- BOOST_CHECK (!ParseDouble (" " , &n));
1803
- BOOST_CHECK (!ParseDouble (" 1" , &n)); // no padding inside
1804
- BOOST_CHECK (!ParseDouble (" 1 " , &n));
1805
- BOOST_CHECK (!ParseDouble (" 1a" , &n));
1806
- BOOST_CHECK (!ParseDouble (" aap" , &n));
1807
- BOOST_CHECK (!ParseDouble (" 0x1" , &n)); // no hex
1808
- BOOST_CHECK (!ParseDouble (STRING_WITH_EMBEDDED_NULL_CHAR, &n));
1809
- // Overflow and underflow
1810
- BOOST_CHECK (!ParseDouble (" -1e10000" , nullptr ));
1811
- BOOST_CHECK (!ParseDouble (" 1e10000" , nullptr ));
1812
- }
1813
-
1814
1804
BOOST_AUTO_TEST_CASE (test_FormatParagraph)
1815
1805
{
1816
1806
BOOST_CHECK_EQUAL (FormatParagraph (" " , 79 , 0 ), " " );
0 commit comments