source: src/Helpers/unittests/ChronosUnitTest.cpp@ 8fe1e2

Last change on this file since 8fe1e2 was 0e5675, checked in by Frederik Heber <heber@…>, 15 years ago

Removed Info usage in ChronosUnitTest.

  • added dummy InfoStub.
  • but test uses Chronos functions only, not via Info class (this is for InfoTest!).
  • removed TESTLIB in Makefile.am, replaced by specific modules required.
  • Property mode set to 100644
File size: 3.4 KB
RevLine 
[93abe8]1/*
2 * Project: MoleCuilder
3 * Description: creates and alters molecular systems
4 * Copyright (C) 2010 University of Bonn. All rights reserved.
5 * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
6 */
7
8/*
9 * ChronosUnitTest.cpp
10 */
11
12
13// include config.h
14#ifdef HAVE_CONFIG_H
15#include <config.h>
16#endif
17
18using namespace std;
19
20#include <cppunit/CompilerOutputter.h>
21#include <cppunit/extensions/TestFactoryRegistry.h>
22#include <cppunit/ui/text/TestRunner.h>
23
[6aa233]24#include <limits>
25
[93abe8]26#include "Chronos.hpp"
27
28#include "ChronosUnitTest.hpp"
29
30#ifdef HAVE_TESTRUNNER
31#include "UnitTestMain.hpp"
32#endif /*HAVE_TESTRUNNER*/
33
34/********************************************** Test classes **************************************/
35
36// Registers the fixture into the 'registry'
37CPPUNIT_TEST_SUITE_REGISTRATION( ChronosTest );
38
39
40void dummy()
41{
[0e5675]42 Chronos::getInstance().startTiming(__func__);
[8e24ef]43 for (int i=0;i<10000000;++i)
44 std::cout << "";
[0e5675]45 Chronos::getInstance().endTiming(__func__);
[93abe8]46}
47
48void dummy_two()
49{
[0e5675]50 Chronos::getInstance().startTiming(__func__);
[8e24ef]51 for (int i=0;i<1000000;++i)
52 std::cout << "";
[0e5675]53 Chronos::getInstance().endTiming(__func__);
[93abe8]54}
55
56
57void ChronosTest::setUp()
58{
59}
60
61void ChronosTest::tearDown()
62{
63 Chronos::purgeInstance();
64}
65
66/**
67 * UnitTest for Chronos()
68 */
69void ChronosTest::InstanceTest()
70{
71 // check that we get a Non-NULL pointer
72 CPPUNIT_ASSERT(Chronos::getPointer());
73}
74
75/**
76 * UnitTest for Chronos()
77 */
78void ChronosTest::dummyTest()
79{
[8e24ef]80 double timings[4];
[93abe8]81 // first dummy
82 dummy();
[8e24ef]83 CPPUNIT_ASSERT( Chronos::getInstance().TimeRunning.find(std::string("dummy"))
84 != Chronos::getInstance().TimeRunning.end() );
[93abe8]85 CPPUNIT_ASSERT_EQUAL( (size_t) 1, Chronos::getInstance().SumUpTotalFunctions() );
[8e24ef]86 timings[0] = Chronos::getInstance().AccountedTime[std::string("dummy")];
87 std::cout << "Timing[0]: " << timings[0] << std::endl;
88 CPPUNIT_ASSERT(timings[0] > 0.);
[93abe8]89 dummy();
90 // second call goes to same entry
91 CPPUNIT_ASSERT_EQUAL( (size_t) 1, Chronos::getInstance().SumUpTotalFunctions() );
[8e24ef]92 timings[1] = Chronos::getInstance().AccountedTime[std::string("dummy")] - timings[0];
93 std::cout << "Timing[1]: " << timings[1] << std::endl;
94 CPPUNIT_ASSERT(timings[1] > 0.);
95
[93abe8]96
97 // second dummy
98 dummy_two();
[8e24ef]99 CPPUNIT_ASSERT( Chronos::getInstance().TimeRunning.find(std::string("dummy_two"))
100 != Chronos::getInstance().TimeRunning.end() );
[93abe8]101 CPPUNIT_ASSERT_EQUAL( (size_t) 2, Chronos::getInstance().SumUpTotalFunctions() );
[8e24ef]102 timings[2] = Chronos::getInstance().AccountedTime[std::string("dummy_two")];
103 std::cout << "Timing[2]: " << timings[2] << std::endl;
104 CPPUNIT_ASSERT(timings[2] > 0.);
105
106 // "inline" dummy
107 {
[0e5675]108 Chronos::getInstance().startTiming("dummy_three");
[8e24ef]109 for (int i=0;i<1000000;++i)
110 std::cout << "";
[0e5675]111 Chronos::getInstance().endTiming("dummy_three");
[8e24ef]112 }
113 CPPUNIT_ASSERT( Chronos::getInstance().TimeRunning.find(std::string("dummy_three"))
114 != Chronos::getInstance().TimeRunning.end() );
115 CPPUNIT_ASSERT_EQUAL( (size_t) 3, Chronos::getInstance().SumUpTotalFunctions() );
116 timings[3] = Chronos::getInstance().AccountedTime[std::string("dummy_three")];
117 std::cout << "Timing[3]: " << timings[3] << std::endl;
118 CPPUNIT_ASSERT(timings[3] > 0.);
119
120 // check summing of times
[6aa233]121 CPPUNIT_ASSERT( fabs(timings[0] + timings[1] + timings[2] + timings[3]- Chronos::getInstance().SumUpTotalTime()) < numeric_limits<double>::epsilon());
[8e24ef]122
123 std::cout << Chronos::getInstance() << std::endl;
[93abe8]124}
Note: See TracBrowser for help on using the repository browser.