X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Ftests%2Farb.cpp;h=b6e58cbe05f71efed2265e6939a402a40c7c9b66;hp=c867a8f632675936393a509bac8b5ff7bb3516a2;hb=3ab3475a54c82cb9f5e0b1dbb88035f341b92d49;hpb=ee5287fabfb214e8f7b483cde424108270525fd7 diff --git a/src/tests/arb.cpp b/src/tests/arb.cpp index c867a8f..b6e58cb 100644 --- a/src/tests/arb.cpp +++ b/src/tests/arb.cpp @@ -1,17 +1,54 @@ #include #include #include - +#include #include "arbint.h" using namespace std; using namespace IPDF; +#define TEST_CASES 100 + + int main(int argc, char ** argv) { - Arbint a(100L); - Arbint b(200L); - Arbint c(b-a); - printf("(%d), %s\n",c.Sign(), c.DigitStr().c_str()); + + for (unsigned i = 0; i < TEST_CASES; ++i) + { + Arbint::digit_t a = rand(); + Arbint::digit_t b = rand(); + + Arbint arb_a(a); + Arbint arb_b(b); + + Debug("Test %u: a = %li, b = %li", i, a, b); + + Debug("a < b = %d", a < b); + Debug("Arb a b = %d", a > b); + Debug("Arb a>b = %d", arb_a > arb_b); + assert((arb_a > arb_b) == (a > b)); + + Debug("a + b = %.16lx", a+b); + Debug("Arb a+b = %s", (arb_a+arb_b).DigitStr().c_str()); + assert((arb_a+arb_b).AsDigit() == a + b); + + Debug("a - b = %li %.16lx", (a-b), (a-b)); + Debug("Arb a-b = %s %.16lx", (arb_a-arb_b).DigitStr().c_str(), (arb_a-arb_b).AsDigit()); + assert((arb_a-arb_b).AsDigit() == a - b); + + Debug("a * b = %.16lx", a*b); + Debug("Arb a*b = %s", (arb_a*arb_b).DigitStr().c_str()); + assert((arb_a*arb_b).AsDigit() == a * b); + + Debug("a / b = %.16lx", a/b); + Debug("Arb a/b = %s", (arb_a/arb_b).DigitStr().c_str()); + assert((arb_a/arb_b).AsDigit() == a / b); + assert((arb_a%arb_b).AsDigit() == a % b); + } + printf("All tests successful!\n"); + return 0; }