// RandomRegistry_t.cpp #include "RandomRegistry.h" #include "RandomGeneratorTest.h" #include "TRFMath.h" #include #include #include using std::string; using std::cout; using std::cerr; using std::endl; using trf::is_equal; //********************************************************************** int main( ) { string component = "RandomRegistry"; string ok_prefix = component + " (I): "; string error_prefix = component + " test (E): "; cout << ok_prefix << "---------- Testing component " + component + ". ----------" << endl; // Make sure assert is enabled. bool assert_flag = false; assert ( ( assert_flag = true, assert_flag ) ); if ( ! assert_flag ) { cerr << "Assert is disabled" << endl; return 1; } //******************************************************************** cout << ok_prefix << "Create generators." << endl; double min = 2.0; double max = 5.0; long seed = 246813579L; RandomGeneratorTest rgen1(min,max,seed); RandomGeneratorTest rgen2(2*min,2*max,2*seed); RandomGeneratorTest rgen3(3*min,3*max,3*seed); cout << rgen1 << endl; cout << rgen2 << endl; cout << rgen3 << endl; //******************************************************************** cout << ok_prefix << "Create registry." << endl; RandomRegistry reg; reg.add_generator(rgen1); reg.add_generator(rgen2); reg.add_generator(rgen3); cout << reg << endl; assert( reg.get_generator_count() == 3 ); assert( reg.get_state_count() == 0 ); assert( reg.record() == 0 ); assert( reg.record() == 1 ); assert( reg.get_state_count() == 2 ); //******************************************************************** cout << ok_prefix << "Check set." << endl; double save1 = rgen2.flat(); double save2 = rgen2.flat(); rgen2.flat(); rgen2.flat(); assert( rgen2.flat() != save1 ); assert( reg.record() == 2 ); reg.set(1); assert( rgen2.flat() == save1 ); assert( rgen2.flat() == save2 ); reg.set(2); assert( rgen2.flat() != save1 ); //******************************************************************** cout << ok_prefix << "Check set for gauss." << endl; // Note odd number of gauss calls. rgen3.gauss(); assert( reg.record() == 3 ); double gsave1 = rgen3.gauss(); double gsave2 = rgen3.gauss(); //assert( rgen3.gauss() != gsave1 ); assert( ! is_equal( rgen3.gauss(), gsave1 ) ); reg.set(3); //assert( rgen3.gauss() == gsave1 ); //assert( rgen3.gauss() == gsave2 ); assert( is_equal( rgen3.gauss(), gsave1 ) ); assert( is_equal( rgen3.gauss(), gsave2 ) ); //******************************************************************** cout << ok_prefix << "------------- All tests passed. -------------" << endl; return 0; //******************************************************************** }