Skip to content

Commit e8ebeee

Browse files
committed
add mathlib tests
1 parent 7be7430 commit e8ebeee

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

‎test/testmathlib.cpp‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ class TestMathLib : public TestFixture {
6464
TEST_CASE(tan);
6565
TEST_CASE(abs);
6666
TEST_CASE(toString);
67+
TEST_CASE(additionWouldOverflow);
68+
TEST_CASE(subtractionWouldOverflow);
6769
}
6870

6971
void isGreater() const {
@@ -1511,6 +1513,34 @@ class TestMathLib : public TestFixture {
15111513
ASSERT_EQUALS("2.22507385851e-308", MathLib::toString(std::numeric_limits<double>::min()));
15121514
ASSERT_EQUALS("1.79769313486e+308", MathLib::toString(std::numeric_limits<double>::max()));
15131515
}
1516+
1517+
void additionWouldOverflow() const {
1518+
const auto max = std::numeric_limits<MathLib::bigint>::max();
1519+
const auto min = std::numeric_limits<MathLib::bigint>::min();
1520+
1521+
ASSERT_EQUALS(false, MathLib::additionWouldOverflow(1, 2));
1522+
ASSERT_EQUALS(false, MathLib::additionWouldOverflow(1, -2));
1523+
ASSERT_EQUALS(false, MathLib::additionWouldOverflow(max - 1, 1));
1524+
ASSERT_EQUALS(true, MathLib::additionWouldOverflow(max - 1, 2));
1525+
ASSERT_EQUALS(false, MathLib::additionWouldOverflow(0, min));
1526+
ASSERT_EQUALS(true, MathLib::additionWouldOverflow(-1, min));
1527+
ASSERT_EQUALS(false, MathLib::additionWouldOverflow(min + 1, -1));
1528+
ASSERT_EQUALS(true, MathLib::additionWouldOverflow(min, -1));
1529+
}
1530+
1531+
void subtractionWouldOverflow() const {
1532+
const auto max = std::numeric_limits<MathLib::bigint>::max();
1533+
const auto min = std::numeric_limits<MathLib::bigint>::min();
1534+
1535+
ASSERT_EQUALS(false, MathLib::subtractionWouldOverflow(1, 2));
1536+
ASSERT_EQUALS(false, MathLib::subtractionWouldOverflow(1, -2));
1537+
ASSERT_EQUALS(false, MathLib::subtractionWouldOverflow(min, 0));
1538+
ASSERT_EQUALS(true, MathLib::subtractionWouldOverflow(min, 1));
1539+
ASSERT_EQUALS(false, MathLib::subtractionWouldOverflow(max - 1, -1));
1540+
ASSERT_EQUALS(true, MathLib::subtractionWouldOverflow(max, -1));
1541+
ASSERT_EQUALS(true, MathLib::subtractionWouldOverflow(0, min));
1542+
ASSERT_EQUALS(false, MathLib::subtractionWouldOverflow(-1, min));
1543+
}
15141544
};
15151545

15161546
REGISTER_TEST(TestMathLib)

0 commit comments

Comments
 (0)