/* * tester.cpp * * Created on: Oct 18, 2011 * Author: mike */ #include "tester.hpp" //-------------------------------------------------------------------- // Perform some tests. // Leave the system PRNG back in its initial state void Tester::run() { test1(); test2(); test3(); } void Tester::test1() { cout << "Testing RandBit in normal mode" << endl; double p[] = { 0, 0.25, 0.5, 0.5, 0.75, 1.0 }; unsigned s[] = { 1234, 1234, 1234, 9999, 1234, 1234 }; int n = 100; unsigned nTests = sizeof(p) / sizeof(double); for (unsigned t = 0; t < nTests; t++) { cout << " " << n << " random bits with bias " << p[t] << " and seed " << s[t] << endl; RandBit gen(p[t], s[t]); int k; for (k = 0; k < n; k++) { if (k % 25 == 0) cout << " "; cout << " " << gen.next(); if (k % 25 == 24) cout << endl; } if (k % 25 != 0) cout << endl; } } void Tester::test2() { cout << "Testing RandBit in test mode" << endl; string filename[] = { "bits.in" }; int n = 100; unsigned nTests = sizeof(filename) / sizeof(string); for (unsigned t = 0; t < nTests; t++) { cout << " " << n << " fake random bits from file " << filename[t] << endl; RandBit gen(filename[t]); int k; for (k = 0; k < n; k++) { if (k % 25 == 0) cout << " "; cout << " " << gen.next(); if (k % 25 == 24) cout << endl; } if (k % 25 != 0) cout << endl; } } void Tester::test3() { cout << "Testing Coin flips" << endl; string filename[] = { "bits.in" }; int n = 100; unsigned nTests = sizeof(filename) / sizeof(string); for (unsigned t = 0; t < nTests; t++) { cout << " " << n << " coin tosses using fake random bits from file " << filename[t] << endl; RandBit gen(filename[t]); Coin c(&gen); int k; for (k = 0; k < n; k++) { if (k % 25 == 0) cout << " "; cout << " "; c.toss(); c.print(cout); if (k % 25 == 24) cout << endl; } if (k % 25 != 0) cout << endl; } }