| 1582 | }; |
| 1583 | |
| 1584 | void |
| 1585 | testNumberLiteral() |
| 1586 | { |
| 1587 | const auto check = |
| 1588 | [](string_view expected) |
| 1589 | { |
| 1590 | string_view sv = expected; |
| 1591 | sv.remove_suffix(1); |
| 1592 | for(std::size_t i = 0; |
| 1593 | i < sv.size(); ++i) |
| 1594 | { |
| 1595 | literal_parser p; |
| 1596 | system::error_code ec; |
| 1597 | if(i != 0) |
| 1598 | { |
| 1599 | p.write(true, |
| 1600 | sv.data(), i, ec); |
| 1601 | } |
| 1602 | if(BOOST_TEST(! ec)) |
| 1603 | { |
| 1604 | p.write(false, |
| 1605 | sv.data() + i, |
| 1606 | sv.size() - i, ec); |
| 1607 | } |
| 1608 | BOOST_TEST(! ec); |
| 1609 | BOOST_TEST(p.captured() == expected); |
| 1610 | } |
| 1611 | }; |
| 1612 | |
| 1613 | check("1s"); |
| 1614 | check("-1s"); |
| 1615 | check("0s"); |
| 1616 | check("0s"); |
| 1617 | check("123456s"); |
| 1618 | check("-123456s"); |
| 1619 | check("9223372036854775808u"); |
| 1620 | |
| 1621 | check("1.0d"); |
| 1622 | check("-1.0d"); |
| 1623 | check("0.0d"); |
| 1624 | check("1.0e3d"); |
| 1625 | check("1e1d"); |
| 1626 | check("1e+1d"); |
| 1627 | check("1e-1d"); |
| 1628 | check("-100000000000000000000000d"); |
| 1629 | check("100000000000000000000000d"); |
| 1630 | check("10000000000.10000000000000d"); |
| 1631 | check("-10000000000.10000000000000d"); |
| 1632 | check("1000000000000000.0e1000000d"); |
| 1633 | } |
| 1634 | |
| 1635 | void |
| 1636 | testStickyErrors() |