| 6838 | }; |
| 6839 | |
| 6840 | void SubVerifyInt8Uint8() |
| 6841 | { |
| 6842 | size_t i; |
| 6843 | |
| 6844 | for( i = 0; i < COUNTOF(int8_uint8); ++i ) |
| 6845 | { |
| 6846 | std::int8_t ret; |
| 6847 | if( SafeSubtract(int8_uint8[i].x, int8_uint8[i].y, ret) != int8_uint8[i].fExpected ) |
| 6848 | { |
| 6849 | cerr << "Error in case int8_uint8: "; |
| 6850 | cerr << hex << setw(2) << setfill('0') << (0xFF & (int)int8_uint8[i].x) << ", "; |
| 6851 | cerr << hex << setw(2) << setfill('0') << (0xFF & (int)int8_uint8[i].y) << ", "; |
| 6852 | cerr << "expected = " << int8_uint8[i].fExpected << endl; |
| 6853 | } |
| 6854 | |
| 6855 | // Now test throwing version |
| 6856 | bool fSuccess = true; |
| 6857 | try |
| 6858 | { |
| 6859 | SafeInt<std::int8_t> si(int8_uint8[i].x); |
| 6860 | si -= int8_uint8[i].y; |
| 6861 | } |
| 6862 | catch(...) |
| 6863 | { |
| 6864 | fSuccess = false; |
| 6865 | } |
| 6866 | |
| 6867 | if( fSuccess != int8_uint8[i].fExpected ) |
| 6868 | { |
| 6869 | cerr << "Error in case int8_uint8 throw (1): "; |
| 6870 | cerr << hex << setw(2) << setfill('0') << (0xFF & (int)int8_uint8[i].x) << ", "; |
| 6871 | cerr << hex << setw(2) << setfill('0') << (0xFF & (int)int8_uint8[i].y) << ", "; |
| 6872 | cerr << "expected = " << int8_uint8[i].fExpected << endl; |
| 6873 | } |
| 6874 | |
| 6875 | // Also need to test the version that assigns back out |
| 6876 | // to a plain int, as it has different logic |
| 6877 | fSuccess = true; |
| 6878 | try |
| 6879 | { |
| 6880 | std::int8_t x(int8_uint8[i].x); |
| 6881 | x -= SafeInt<std::uint8_t>(int8_uint8[i].y); |
| 6882 | } |
| 6883 | catch(...) |
| 6884 | { |
| 6885 | fSuccess = false; |
| 6886 | } |
| 6887 | |
| 6888 | if( fSuccess != int8_uint8[i].fExpected ) |
| 6889 | { |
| 6890 | cerr << "Error in case int8_uint8 throw (2): "; |
| 6891 | cerr << hex << setw(2) << setfill('0') << (0xFF & (int)int8_uint8[i].x) << ", "; |
| 6892 | cerr << hex << setw(2) << setfill('0') << (0xFF & (int)int8_uint8[i].y) << ", "; |
| 6893 | cerr << "expected = " << int8_uint8[i].fExpected << endl; |
| 6894 | } |
| 6895 | } |
| 6896 | } |
| 6897 |
no test coverage detected