| 82 | } |
| 83 | |
| 84 | static void CheckSubtract(const int64_t& num1, const int64_t& num2) |
| 85 | { |
| 86 | const CScriptNum10 bignum1(num1); |
| 87 | const CScriptNum10 bignum2(num2); |
| 88 | const CScriptNum scriptnum1(num1); |
| 89 | const CScriptNum scriptnum2(num2); |
| 90 | |
| 91 | // int64_t overflow is undefined. |
| 92 | bool invalid = ((num2 > 0 && num1 < std::numeric_limits<int64_t>::min() + num2) || |
| 93 | (num2 < 0 && num1 > std::numeric_limits<int64_t>::max() + num2)); |
| 94 | if (!invalid) |
| 95 | { |
| 96 | BOOST_CHECK(verify(bignum1 - bignum2, scriptnum1 - scriptnum2)); |
| 97 | BOOST_CHECK(verify(bignum1 - bignum2, scriptnum1 - num2)); |
| 98 | } |
| 99 | |
| 100 | invalid = ((num1 > 0 && num2 < std::numeric_limits<int64_t>::min() + num1) || |
| 101 | (num1 < 0 && num2 > std::numeric_limits<int64_t>::max() + num1)); |
| 102 | if (!invalid) |
| 103 | { |
| 104 | BOOST_CHECK(verify(bignum2 - bignum1, scriptnum2 - scriptnum1)); |
| 105 | BOOST_CHECK(verify(bignum2 - bignum1, scriptnum2 - num1)); |
| 106 | } |
| 107 | } |
| 108 | |
| 109 | static void CheckCompare(const int64_t& num1, const int64_t& num2) |
| 110 | { |
no test coverage detected