MCPcopy Create free account
hub / github.com/dcleblanc/SafeInt / SubVerifyUint8Int16

Function SubVerifyUint8Int16

Test/SubVerify.cpp:4969–5025  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4967};
4968
4969void 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

Callers 1

SubVerifyFunction · 0.70

Calls 1

SafeSubtractFunction · 0.50

Tested by

no test coverage detected