/* * Project: MoleCuilder * Description: creates and alters molecular systems * Copyright (C) 2010 University of Bonn. All rights reserved. * Please see the LICENSE file or "Copyright notice" in builder.cpp for details. */ /* * ChronosUnitTest.cpp */ // include config.h #ifdef HAVE_CONFIG_H #include #endif using namespace std; #include #include #include #include "Chronos.hpp" #include "Info.hpp" #include "ChronosUnitTest.hpp" #ifdef HAVE_TESTRUNNER #include "UnitTestMain.hpp" #endif /*HAVE_TESTRUNNER*/ /********************************************** Test classes **************************************/ // Registers the fixture into the 'registry' CPPUNIT_TEST_SUITE_REGISTRATION( ChronosTest ); void dummy() { Info FunctionInfo(__func__); for (int i=0;i<10000000;++i) std::cout << ""; } void dummy_two() { Info FunctionInfo(__func__); for (int i=0;i<1000000;++i) std::cout << ""; } void ChronosTest::setUp() { } void ChronosTest::tearDown() { Chronos::purgeInstance(); } /** * UnitTest for Chronos() */ void ChronosTest::InstanceTest() { // check that we get a Non-NULL pointer CPPUNIT_ASSERT(Chronos::getPointer()); } /** * UnitTest for Chronos() */ void ChronosTest::InfoTest() { Info FunctionInfo(__func__); CPPUNIT_ASSERT_EQUAL( (size_t) 1, Info::NumberInfos ); } /** * UnitTest for Chronos() */ void ChronosTest::dummyTest() { double timings[4]; // first dummy dummy(); CPPUNIT_ASSERT( Chronos::getInstance().TimeRunning.find(std::string("dummy")) != Chronos::getInstance().TimeRunning.end() ); CPPUNIT_ASSERT_EQUAL( (size_t) 1, Chronos::getInstance().SumUpTotalFunctions() ); timings[0] = Chronos::getInstance().AccountedTime[std::string("dummy")]; std::cout << "Timing[0]: " << timings[0] << std::endl; CPPUNIT_ASSERT(timings[0] > 0.); dummy(); // second call goes to same entry CPPUNIT_ASSERT_EQUAL( (size_t) 1, Chronos::getInstance().SumUpTotalFunctions() ); timings[1] = Chronos::getInstance().AccountedTime[std::string("dummy")] - timings[0]; std::cout << "Timing[1]: " << timings[1] << std::endl; CPPUNIT_ASSERT(timings[1] > 0.); // second dummy dummy_two(); CPPUNIT_ASSERT( Chronos::getInstance().TimeRunning.find(std::string("dummy_two")) != Chronos::getInstance().TimeRunning.end() ); CPPUNIT_ASSERT_EQUAL( (size_t) 2, Chronos::getInstance().SumUpTotalFunctions() ); timings[2] = Chronos::getInstance().AccountedTime[std::string("dummy_two")]; std::cout << "Timing[2]: " << timings[2] << std::endl; CPPUNIT_ASSERT(timings[2] > 0.); // "inline" dummy { Info DummyInfo("dummy_three"); for (int i=0;i<1000000;++i) std::cout << ""; } CPPUNIT_ASSERT( Chronos::getInstance().TimeRunning.find(std::string("dummy_three")) != Chronos::getInstance().TimeRunning.end() ); CPPUNIT_ASSERT_EQUAL( (size_t) 3, Chronos::getInstance().SumUpTotalFunctions() ); timings[3] = Chronos::getInstance().AccountedTime[std::string("dummy_three")]; std::cout << "Timing[3]: " << timings[3] << std::endl; CPPUNIT_ASSERT(timings[3] > 0.); // check summing of times CPPUNIT_ASSERT_EQUAL( timings[0] + timings[1] + timings[2] + timings[3], Chronos::getInstance().SumUpTotalTime()); std::cout << Chronos::getInstance() << std::endl; }