abacus: bignum: add addition & substraction
This commit is contained in:
parent
d083ede78c
commit
fe01661613
3 changed files with 203 additions and 0 deletions
|
|
@ -56,3 +56,89 @@ TEST(BigNum, unary) {
|
|||
auto const minus_one = BigNum(-1);
|
||||
EXPECT_EQ(minus_one, -one);
|
||||
}
|
||||
|
||||
TEST(BigNum, addition_positive) {
|
||||
auto const zero = BigNum(0);
|
||||
auto const one = BigNum(1);
|
||||
auto const two = BigNum(2);
|
||||
|
||||
EXPECT_EQ(zero + zero, zero);
|
||||
EXPECT_EQ(zero + one, one);
|
||||
EXPECT_EQ(one + zero, one);
|
||||
EXPECT_EQ(one + one, two);
|
||||
}
|
||||
|
||||
TEST(BigNum, addition_negative) {
|
||||
auto const zero = BigNum(0);
|
||||
auto const minus_one = BigNum(-1);
|
||||
auto const minus_two = BigNum(-2);
|
||||
|
||||
EXPECT_EQ(zero + zero, zero);
|
||||
EXPECT_EQ(zero + minus_one, minus_one);
|
||||
EXPECT_EQ(minus_one + zero, minus_one);
|
||||
EXPECT_EQ(minus_one + minus_one, minus_two);
|
||||
}
|
||||
|
||||
TEST(BigNum, addition_mixed_signs) {
|
||||
auto const zero = BigNum(0);
|
||||
auto const one = BigNum(1);
|
||||
auto const minus_one = BigNum(-1);
|
||||
|
||||
EXPECT_EQ(one + minus_one, zero);
|
||||
EXPECT_EQ(minus_one + one, zero);
|
||||
}
|
||||
|
||||
TEST(BigNum, addition_flips_sign) {
|
||||
auto const one = BigNum(1);
|
||||
auto const two = BigNum(2);
|
||||
auto const minus_one = BigNum(-1);
|
||||
auto const minus_two = BigNum(-2);
|
||||
|
||||
EXPECT_EQ(one + minus_two, minus_one);
|
||||
EXPECT_EQ(minus_two + one, minus_one);
|
||||
|
||||
EXPECT_EQ(minus_one + two, one);
|
||||
EXPECT_EQ(two + minus_one, one);
|
||||
}
|
||||
|
||||
TEST(BigNum, substraction_positive) {
|
||||
auto const zero = BigNum(0);
|
||||
auto const one = BigNum(1);
|
||||
auto const two = BigNum(2);
|
||||
|
||||
EXPECT_EQ(zero - zero, zero);
|
||||
EXPECT_EQ(two - zero, two);
|
||||
EXPECT_EQ(two - one, one);
|
||||
EXPECT_EQ(one - one, zero);
|
||||
}
|
||||
|
||||
TEST(BigNum, substraction_negative) {
|
||||
auto const zero = BigNum(0);
|
||||
auto const minus_one = BigNum(-1);
|
||||
auto const one = BigNum(1);
|
||||
|
||||
EXPECT_EQ(zero - zero, zero);
|
||||
EXPECT_EQ(zero - minus_one, one);
|
||||
EXPECT_EQ(zero - one, minus_one);
|
||||
}
|
||||
|
||||
TEST(BigNum, substraction_mixed_signs) {
|
||||
auto const zero = BigNum(0);
|
||||
auto const one = BigNum(1);
|
||||
auto const two = BigNum(2);
|
||||
auto const minus_one = BigNum(-1);
|
||||
auto const minus_two = BigNum(-2);
|
||||
|
||||
EXPECT_EQ(one - minus_one, two);
|
||||
EXPECT_EQ(minus_one - one, minus_two);
|
||||
}
|
||||
|
||||
TEST(BigNum, substraction_flips_sign) {
|
||||
auto const one = BigNum(1);
|
||||
auto const two = BigNum(2);
|
||||
auto const minus_one = BigNum(-1);
|
||||
auto const minus_two = BigNum(-2);
|
||||
|
||||
EXPECT_EQ(one - two, minus_one);
|
||||
EXPECT_EQ(minus_one - minus_two, one);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue