| 1491 | /* Check for overflow or underflow */ |
| 1492 | template <typename T> |
| 1493 | static void TestAddMatrix() |
| 1494 | { |
| 1495 | TestAddMatrixOverflow<T>(); |
| 1496 | constexpr T MINI{std::numeric_limits<T>::min()}; |
| 1497 | constexpr T MAXI{std::numeric_limits<T>::max()}; |
| 1498 | BOOST_CHECK(!CheckedAdd(T{-1}, MINI)); |
| 1499 | BOOST_CHECK(!CheckedAdd(MINI, MINI)); |
| 1500 | BOOST_CHECK_EQUAL(MINI, SaturatingAdd(T{-1}, MINI)); |
| 1501 | BOOST_CHECK_EQUAL(MINI, SaturatingAdd(MINI, MINI)); |
| 1502 | |
| 1503 | BOOST_CHECK_EQUAL(MINI, CheckedAdd(T{0}, MINI).value()); |
| 1504 | BOOST_CHECK_EQUAL(MINI, CheckedAdd(T{-1}, MINI + 1).value()); |
| 1505 | BOOST_CHECK_EQUAL(-1, CheckedAdd(MINI, MAXI).value()); |
| 1506 | BOOST_CHECK_EQUAL(MINI + 1, CheckedAdd(T{-1}, MINI + 2).value()); |
| 1507 | BOOST_CHECK_EQUAL(MINI, SaturatingAdd(T{0}, MINI)); |
| 1508 | BOOST_CHECK_EQUAL(MINI, SaturatingAdd(T{-1}, MINI + 1)); |
| 1509 | BOOST_CHECK_EQUAL(MINI + 1, SaturatingAdd(T{-1}, MINI + 2)); |
| 1510 | BOOST_CHECK_EQUAL(-1, SaturatingAdd(MINI, MAXI)); |
| 1511 | } |
| 1512 | |
| 1513 | BOOST_AUTO_TEST_CASE(util_overflow) |
| 1514 | { |
nothing calls this directly
no test coverage detected