unsigned safeAdd(unsigned a, unsigned b)
{
if(a > ~b) throw "overflow...!";
return a + b;
}
TEST(TESTSAFEADD, CASE0)
{
EXPECT_ANY_THROW(safeAdd(1, 0xffffffff));
EXPECT_ANY_THROW(safeAdd(0xffffffff, 1));
EXPECT_ANY_THROW(safeAdd(0xffffffff - 4, 1 + 4));
EXPECT_ANY_THROW(safeAdd(1 + 10, 0xffffffff - 10));
srand(time(0));
for(int i = 0;i < 100;i++)
{
unsigned x = rand() % 1000;
EXPECT_ANY_THROW(safeAdd(1 + x, 0xffffffff - x));
}
for(int i = 0;i < 100;i++)
{
unsigned x = rand() % 1000;
EXPECT_EQ(0xffffffff, safeAdd(x, 0xffffffff - x));
}
}
gtest unsigned overflow
Guess you like
Origin blog.csdn.net/wangzhicheng2013/article/details/74936944
Recommended
Ranking