gtest unsigned overflow

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));
	}
}


Guess you like

Origin blog.csdn.net/wangzhicheng2013/article/details/74936944