From 04e4f9cdb895a36eb24b512b188a190f58aa06aa Mon Sep 17 00:00:00 2001 From: Paul Holser Date: Wed, 23 May 2012 14:47:54 -0500 Subject: [PATCH] more subtraction/addition tests --- Bignum_unittest.cpp | 48 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/Bignum_unittest.cpp b/Bignum_unittest.cpp index e01358c..30ef65a 100644 --- a/Bignum_unittest.cpp +++ b/Bignum_unittest.cpp @@ -286,6 +286,54 @@ TEST(BignumTest, LargerSimpleSubtraction) { ASSERT_EQ(Bignum(d(1, 0x0FFFFFFFU), 1), m - n); } +TEST(BignumTest, StillLargerSimpleSubtraction) { + Bignum m(d(2, 0x00000000U, 0x01000000), 1); + Bignum n(d(1, 1U), 1); + + ASSERT_EQ(Bignum(d(2, 0xFFFFFFFFU, 0x00FFFFFFU), 1), m - n); +} + +TEST(BignumTest, EnormousSimpleSubtraction) { + Bignum m(d(6, 0x00000001U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00001000U), 1); + Bignum n(d(1, 1U), 1); + + ASSERT_EQ( + Bignum(d(6, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00001000U), 1), + m - n); +} + +TEST(BignumTest, LargeSubtractionSmallResult) { + Bignum m(d(2, 0x00000001U, 0x00010000U), 1); + Bignum n(d(2, 0x00000000U, 0x00010000U), 1); + + ASSERT_EQ(Bignum(d(1, 0x00000001U), 1), m - n); +} + +TEST(BignumTest, LargeSubtractionMediumResult) { + Bignum m(d(2, 0x0FFFFFFFU, 0x00010000U), 1); + Bignum n(d(2, 0x00000000U, 0x00010000U), 1); + + ASSERT_EQ(Bignum(d(1, 0x0FFFFFFFU), 1), m - n); +} + +TEST(BignumTest, EnormousSubtractionMediumResult) { + Bignum m(d(6, 0x00000000U, 0x00010000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00001000U), 1); + Bignum n(d(2, 0x00000000U, 0x00010000U), 1); + + ASSERT_EQ( + Bignum(d(6, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00001000U), 1), + m - n); +} + +TEST(BignumTest, AnotherEnormousSubtractionMediumResult) { + Bignum m(d(6, 0xFFFFFFFFU, 0x0000FFFFU, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000100U), 1); + Bignum n(d(2, 0x00000000U, 0x00010000U), 1); + + ASSERT_EQ( + Bignum(d(6, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFF, 0xFFFFFFFFU, 0x000000FFU), 1), + m - n); +} + TEST(BignumTest, PositiveMinusPositiveOfSameMagnitude) { Bignum m(d(3, 0x1U, 0x2U, 0x3U), 1); m -= Bignum(d(3, 0x1U, 0x2U, 0x3U), 1);