| 4967 | }; |
| 4968 | |
| 4969 | void SubVerifyUint8Int16() |
| 4970 | { |
| 4971 | size_t i; |
| 4972 | |
| 4973 | for( i = 0; i < COUNTOF(uint8_int16); ++i ) |
| 4974 | { |
| 4975 | std::uint8_t ret; |
| 4976 | if( SafeSubtract(uint8_int16[i].x, uint8_int16[i].y, ret) != uint8_int16[i].fExpected ) |
| 4977 | { |
| 4978 | cerr << "Error in case uint8_int16: "; |
| 4979 | cerr << hex << setw(2) << setfill('0') << (0xFF & (int)uint8_int16[i].x) << ", "; |
| 4980 | cerr << hex << setw(4) << setfill('0') << uint8_int16[i].y << ", "; |
| 4981 | cerr << "expected = " << uint8_int16[i].fExpected << endl; |
| 4982 | } |
| 4983 | |
| 4984 | // Now test throwing version |
| 4985 | bool fSuccess = true; |
| 4986 | try |
| 4987 | { |
| 4988 | SafeInt<std::uint8_t> si(uint8_int16[i].x); |
| 4989 | si -= uint8_int16[i].y; |
| 4990 | } |
| 4991 | catch(...) |
| 4992 | { |
| 4993 | fSuccess = false; |
| 4994 | } |
| 4995 | |
| 4996 | if( fSuccess != uint8_int16[i].fExpected ) |
| 4997 | { |
| 4998 | cerr << "Error in case uint8_int16 throw (1): "; |
| 4999 | cerr << hex << setw(2) << setfill('0') << (0xFF & (int)uint8_int16[i].x) << ", "; |
| 5000 | cerr << hex << setw(4) << setfill('0') << uint8_int16[i].y << ", "; |
| 5001 | cerr << "expected = " << uint8_int16[i].fExpected << endl; |
| 5002 | } |
| 5003 | |
| 5004 | // Also need to test the version that assigns back out |
| 5005 | // to a plain int, as it has different logic |
| 5006 | fSuccess = true; |
| 5007 | try |
| 5008 | { |
| 5009 | std::uint8_t x(uint8_int16[i].x); |
| 5010 | x -= SafeInt<std::int16_t>(uint8_int16[i].y); |
| 5011 | } |
| 5012 | catch(...) |
| 5013 | { |
| 5014 | fSuccess = false; |
| 5015 | } |
| 5016 | |
| 5017 | if( fSuccess != uint8_int16[i].fExpected ) |
| 5018 | { |
| 5019 | cerr << "Error in case uint8_int16 throw (2): "; |
| 5020 | cerr << hex << setw(2) << setfill('0') << (0xFF & (int)uint8_int16[i].x) << ", "; |
| 5021 | cerr << hex << setw(4) << setfill('0') << uint8_int16[i].y << ", "; |
| 5022 | cerr << "expected = " << uint8_int16[i].fExpected << endl; |
| 5023 | } |
| 5024 | } |
| 5025 | } |
| 5026 |
no test coverage detected