| 1471 | /* Check for overflow */ |
| 1472 | template <typename T> |
| 1473 | static void TestAddMatrixOverflow() |
| 1474 | { |
| 1475 | constexpr T MAXI{std::numeric_limits<T>::max()}; |
| 1476 | BOOST_CHECK(!CheckedAdd(T{1}, MAXI)); |
| 1477 | BOOST_CHECK(!CheckedAdd(MAXI, MAXI)); |
| 1478 | BOOST_CHECK_EQUAL(MAXI, SaturatingAdd(T{1}, MAXI)); |
| 1479 | BOOST_CHECK_EQUAL(MAXI, SaturatingAdd(MAXI, MAXI)); |
| 1480 | |
| 1481 | BOOST_CHECK_EQUAL(0, CheckedAdd(T{0}, T{0}).value()); |
| 1482 | BOOST_CHECK_EQUAL(MAXI, CheckedAdd(T{0}, MAXI).value()); |
| 1483 | BOOST_CHECK_EQUAL(MAXI, CheckedAdd(T{1}, MAXI - 1).value()); |
| 1484 | BOOST_CHECK_EQUAL(MAXI - 1, CheckedAdd(T{1}, MAXI - 2).value()); |
| 1485 | BOOST_CHECK_EQUAL(0, SaturatingAdd(T{0}, T{0})); |
| 1486 | BOOST_CHECK_EQUAL(MAXI, SaturatingAdd(T{0}, MAXI)); |
| 1487 | BOOST_CHECK_EQUAL(MAXI, SaturatingAdd(T{1}, MAXI - 1)); |
| 1488 | BOOST_CHECK_EQUAL(MAXI - 1, SaturatingAdd(T{1}, MAXI - 2)); |
| 1489 | } |
| 1490 | |
| 1491 | /* Check for overflow or underflow */ |
| 1492 | template <typename T> |
nothing calls this directly
no test coverage detected