source: src/Helpers/unittests/ChronosUnitTest.cpp@ 3f2719

Last change on this file since 3f2719 was 3f2719, checked in by Frederik Heber <heber@…>, 15 years ago

Moved ChronosTest's InfoTest over to InfoTest::NumberInfosTest where it belongs.

  • Property mode set to 100644
File size: 3.2 KB
Line 
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
24#include <limits>
25
26#include "Chronos.hpp"
27#include "Info.hpp"
28
29#include "ChronosUnitTest.hpp"
30
31#ifdef HAVE_TESTRUNNER
32#include "UnitTestMain.hpp"
33#endif /*HAVE_TESTRUNNER*/
34
35/********************************************** Test classes **************************************/
36
37// Registers the fixture into the 'registry'
38CPPUNIT_TEST_SUITE_REGISTRATION( ChronosTest );
39
40
41void dummy()
42{
43 Info FunctionInfo(__func__);
44 for (int i=0;i<10000000;++i)
45 std::cout << "";
46}
47
48void dummy_two()
49{
50 Info FunctionInfo(__func__);
51 for (int i=0;i<1000000;++i)
52 std::cout << "";
53}
54
55
56void ChronosTest::setUp()
57{
58}
59
60void ChronosTest::tearDown()
61{
62 Chronos::purgeInstance();
63}
64
65/**
66 * UnitTest for Chronos()
67 */
68void ChronosTest::InstanceTest()
69{
70 // check that we get a Non-NULL pointer
71 CPPUNIT_ASSERT(Chronos::getPointer());
72}
73
74/**
75 * UnitTest for Chronos()
76 */
77void ChronosTest::dummyTest()
78{
79 double timings[4];
80 // first dummy
81 dummy();
82 CPPUNIT_ASSERT( Chronos::getInstance().TimeRunning.find(std::string("dummy"))
83 != Chronos::getInstance().TimeRunning.end() );
84 CPPUNIT_ASSERT_EQUAL( (size_t) 1, Chronos::getInstance().SumUpTotalFunctions() );
85 timings[0] = Chronos::getInstance().AccountedTime[std::string("dummy")];
86 std::cout << "Timing[0]: " << timings[0] << std::endl;
87 CPPUNIT_ASSERT(timings[0] > 0.);
88 dummy();
89 // second call goes to same entry
90 CPPUNIT_ASSERT_EQUAL( (size_t) 1, Chronos::getInstance().SumUpTotalFunctions() );
91 timings[1] = Chronos::getInstance().AccountedTime[std::string("dummy")] - timings[0];
92 std::cout << "Timing[1]: " << timings[1] << std::endl;
93 CPPUNIT_ASSERT(timings[1] > 0.);
94
95
96 // second dummy
97 dummy_two();
98 CPPUNIT_ASSERT( Chronos::getInstance().TimeRunning.find(std::string("dummy_two"))
99 != Chronos::getInstance().TimeRunning.end() );
100 CPPUNIT_ASSERT_EQUAL( (size_t) 2, Chronos::getInstance().SumUpTotalFunctions() );
101 timings[2] = Chronos::getInstance().AccountedTime[std::string("dummy_two")];
102 std::cout << "Timing[2]: " << timings[2] << std::endl;
103 CPPUNIT_ASSERT(timings[2] > 0.);
104
105 // "inline" dummy
106 {
107 Info DummyInfo("dummy_three");
108 for (int i=0;i<1000000;++i)
109 std::cout << "";
110 }
111 CPPUNIT_ASSERT( Chronos::getInstance().TimeRunning.find(std::string("dummy_three"))
112 != Chronos::getInstance().TimeRunning.end() );
113 CPPUNIT_ASSERT_EQUAL( (size_t) 3, Chronos::getInstance().SumUpTotalFunctions() );
114 timings[3] = Chronos::getInstance().AccountedTime[std::string("dummy_three")];
115 std::cout << "Timing[3]: " << timings[3] << std::endl;
116 CPPUNIT_ASSERT(timings[3] > 0.);
117
118 // check summing of times
119 CPPUNIT_ASSERT( fabs(timings[0] + timings[1] + timings[2] + timings[3]- Chronos::getInstance().SumUpTotalTime()) < numeric_limits<double>::epsilon());
120
121 std::cout << Chronos::getInstance() << std::endl;
122}
Note: See TracBrowser for help on using the repository browser.