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
最新推荐文章于 2022-06-17 21:59:38 发布
本文介绍了一个用于检测无符号整数溢出的安全加法函数实现,并通过一系列单元测试确保其正确性和鲁棒性。测试用例覆盖了多种可能导致溢出的情况,包括接近最大值时的加法操作。

541

被折叠的 条评论
为什么被折叠?



