From: Matt McCutchen Date: Wed, 16 Jul 2008 20:56:52 +0000 (-0400) Subject: Add more clearly visible section headers to testsuite.cc. X-Git-Tag: v2008.07.20~9 X-Git-Url: https://mattmccutchen.net/bigint/bigint.git/commitdiff_plain/82cba2ffac509186ee0960a1186f4bd6d9957435 Add more clearly visible section headers to testsuite.cc. --- diff --git a/testsuite.cc b/testsuite.cc index 9fab02a..8d31eda 100644 --- a/testsuite.cc +++ b/testsuite.cc @@ -55,11 +55,13 @@ TEST(10); //10 // TODO: Comprehensively test the general and special cases of each function. -// Default constructors +// === Default constructors === + TEST(check(BigUnsigned())); //0 TEST(check(BigInteger())); //0 -// BigUnsigned conversion limits +// === BigUnsigned conversion limits === + TEST(BigUnsigned(0).toUnsignedLong()); //0 TEST(BigUnsigned(4294967295U).toUnsignedLong()); //4294967295 TEST(stringToBigUnsigned("4294967296").toUnsignedLong()); //error @@ -85,7 +87,8 @@ TEST(BigUnsigned(0).toShort()); //0 TEST(BigUnsigned(32767).toShort()); //32767 TEST(BigUnsigned(32768).toShort()); //error -// BigInteger conversion limits +// === BigInteger conversion limits === + TEST(BigInteger(-1).toUnsignedLong()); //error TEST(BigInteger(0).toUnsignedLong()); //0 TEST(BigInteger(4294967295U).toUnsignedLong()); //4294967295 @@ -123,7 +126,8 @@ TEST(BigInteger(0).toShort()); //0 TEST(BigInteger(32767).toShort()); //32767 TEST(BigInteger(32768).toShort()); //error -// Negative BigUnsigneds +// === Negative BigUnsigneds === + // ...during construction TEST(BigUnsigned(short(-1))); //error TEST(BigUnsigned(pathologicalShort)); //error @@ -131,6 +135,7 @@ TEST(BigUnsigned(-1)); //error TEST(BigUnsigned(pathologicalInt)); //error TEST(BigUnsigned(long(-1))); //error TEST(BigUnsigned(pathologicalLong)); //error + // ...during subtraction TEST(BigUnsigned(5) - BigUnsigned(6)); //error TEST(stringToBigUnsigned("314159265358979323") - stringToBigUnsigned("314159265358979324")); //error @@ -138,7 +143,8 @@ TEST(check(BigUnsigned(5) - BigUnsigned(5))); //0 TEST(check(stringToBigUnsigned("314159265358979323") - stringToBigUnsigned("314159265358979323"))); //0 TEST(check(stringToBigUnsigned("4294967296") - BigUnsigned(1))); //4294967295 -// Addition +// === BigUnsigned addition === + TEST(check(BigUnsigned(0) + 0)); //0 TEST(check(BigUnsigned(0) + 1)); //1 // Ordinary carry @@ -147,7 +153,8 @@ TEST(check(stringToBigUnsigned("8589934591" /* 2^33 - 1*/) // Creation of a new block TEST(check(BigUnsigned(0xFFFFFFFFU) + 1)); //4294967296 -// Subtraction +// === BigUnsigned subtraction === + TEST(check(BigUnsigned(1) - 0)); //1 TEST(check(BigUnsigned(1) - 1)); //0 TEST(check(BigUnsigned(2) - 1)); //1 @@ -157,7 +164,8 @@ TEST(check(stringToBigUnsigned("12884901889") // Borrow that removes a block TEST(check(stringToBigUnsigned("4294967296") - 1)); //4294967295 -// Multiplication and division +// === BigUnsigned multiplication and division === + BigUnsigned a = check(BigUnsigned(314159265) * 358979323); TEST(a); //112776680263877595 TEST(a / 123); //916883579381118 @@ -165,7 +173,8 @@ TEST(a % 123); //81 TEST(BigUnsigned(5) / 0); //error -// Block accessors +// === Block accessors === + BigUnsigned b; TEST(b); //0 TEST(b.getBlock(0)); //0 @@ -192,7 +201,8 @@ TEST(bb.getBlock(1)); //0 TEST(bb.getBlock(2)); //0 TEST(bb.getBlock(314159)); //0 -// Bit accessors +// === Bit accessors === + TEST(BigUnsigned(0).bitLength()); //0 TEST(BigUnsigned(1).bitLength()); //1 TEST(BigUnsigned(4095).bitLength()); //12 @@ -215,6 +225,8 @@ bbb.setBit(31, true); bbb.setBit(32, false); TEST(check(bbb)); //2147483673 +// === Combining BigUnsigned, BigInteger, and primitive integers === + BigUnsigned p1 = BigUnsigned(3) * 5; TEST(p1); //15 /* In this case, we would like g++ to implicitly promote the BigUnsigned to a @@ -227,6 +239,8 @@ TEST(p1); //15 BigInteger p2 = BigInteger(BigUnsigned(3)) * -5; TEST(p2); //-15 +// === Test some previous bugs === + { /* Test that BigInteger division sets the sign to zero. * Bug reported by David Allen. */