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

Function SubVerifyUint8Int64

Test/SubVerify.cpp:4667–4723  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4665};
4666
4667void SubVerifyUint8Int64()
4668{
4669 size_t i;
4670
4671 for( i = 0; i < COUNTOF(uint8_int64); ++i )
4672 {
4673 std::uint8_t ret;
4674 if( SafeSubtract(uint8_int64[i].x, uint8_int64[i].y, ret) != uint8_int64[i].fExpected )
4675 {
4676 cerr << "Error in case uint8_int64: ";
4677 cerr << hex << setw(2) << setfill('0') << (0xFF & (int)uint8_int64[i].x) << ", ";
4678 cerr << hex << setw(16) << setfill('0') << uint8_int64[i].y << ", ";
4679 cerr << "expected = " << uint8_int64[i].fExpected << endl;
4680 }
4681
4682 // Now test throwing version
4683 bool fSuccess = true;
4684 try
4685 {
4686 SafeInt<std::uint8_t> si(uint8_int64[i].x);
4687 si -= uint8_int64[i].y;
4688 }
4689 catch(...)
4690 {
4691 fSuccess = false;
4692 }
4693
4694 if( fSuccess != uint8_int64[i].fExpected )
4695 {
4696 cerr << "Error in case uint8_int64 throw (1): ";
4697 cerr << hex << setw(2) << setfill('0') << (0xFF & (int)uint8_int64[i].x) << ", ";
4698 cerr << hex << setw(16) << setfill('0') << uint8_int64[i].y << ", ";
4699 cerr << "expected = " << uint8_int64[i].fExpected << endl;
4700 }
4701
4702 // Also need to test the version that assigns back out
4703 // to a plain int, as it has different logic
4704 fSuccess = true;
4705 try
4706 {
4707 std::uint8_t x(uint8_int64[i].x);
4708 x -= SafeInt<std::int64_t>(uint8_int64[i].y);
4709 }
4710 catch(...)
4711 {
4712 fSuccess = false;
4713 }
4714
4715 if( fSuccess != uint8_int64[i].fExpected )
4716 {
4717 cerr << "Error in case uint8_int64 throw (2): ";
4718 cerr << hex << setw(2) << setfill('0') << (0xFF & (int)uint8_int64[i].x) << ", ";
4719 cerr << hex << setw(16) << setfill('0') << uint8_int64[i].y << ", ";
4720 cerr << "expected = " << uint8_int64[i].fExpected << endl;
4721 }
4722 }
4723}
4724

Callers 1

SubVerifyFunction · 0.70

Calls 1

SafeSubtractFunction · 0.50

Tested by

no test coverage detected