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

Function SubVerifyUint8Int32

Test/SubVerify.cpp:4818–4874  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4816};
4817
4818void SubVerifyUint8Int32()
4819{
4820 size_t i;
4821
4822 for( i = 0; i < COUNTOF(uint8_int32); ++i )
4823 {
4824 std::uint8_t ret;
4825 if( SafeSubtract(uint8_int32[i].x, uint8_int32[i].y, ret) != uint8_int32[i].fExpected )
4826 {
4827 cerr << "Error in case uint8_int32: ";
4828 cerr << hex << setw(2) << setfill('0') << (0xFF & (int)uint8_int32[i].x) << ", ";
4829 cerr << hex << setw(8) << setfill('0') << uint8_int32[i].y << ", ";
4830 cerr << "expected = " << uint8_int32[i].fExpected << endl;
4831 }
4832
4833 // Now test throwing version
4834 bool fSuccess = true;
4835 try
4836 {
4837 SafeInt<std::uint8_t> si(uint8_int32[i].x);
4838 si -= uint8_int32[i].y;
4839 }
4840 catch(...)
4841 {
4842 fSuccess = false;
4843 }
4844
4845 if( fSuccess != uint8_int32[i].fExpected )
4846 {
4847 cerr << "Error in case uint8_int32 throw (1): ";
4848 cerr << hex << setw(2) << setfill('0') << (0xFF & (int)uint8_int32[i].x) << ", ";
4849 cerr << hex << setw(8) << setfill('0') << uint8_int32[i].y << ", ";
4850 cerr << "expected = " << uint8_int32[i].fExpected << endl;
4851 }
4852
4853 // Also need to test the version that assigns back out
4854 // to a plain int, as it has different logic
4855 fSuccess = true;
4856 try
4857 {
4858 std::uint8_t x(uint8_int32[i].x);
4859 x -= SafeInt<std::int32_t>(uint8_int32[i].y);
4860 }
4861 catch(...)
4862 {
4863 fSuccess = false;
4864 }
4865
4866 if( fSuccess != uint8_int32[i].fExpected )
4867 {
4868 cerr << "Error in case uint8_int32 throw (2): ";
4869 cerr << hex << setw(2) << setfill('0') << (0xFF & (int)uint8_int32[i].x) << ", ";
4870 cerr << hex << setw(8) << setfill('0') << uint8_int32[i].y << ", ";
4871 cerr << "expected = " << uint8_int32[i].fExpected << endl;
4872 }
4873 }
4874}
4875

Callers 1

SubVerifyFunction · 0.70

Calls 1

SafeSubtractFunction · 0.50

Tested by

no test coverage detected