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

Last change on this file since 8f60da was 9b8fa4, checked in by Frederik Heber <heber@…>, 14 years ago

Huge update of file structure to place installation header files into right folder.

  • The problem ist that we desire use as include "CodePatterns/...". For this to work, especially with the new Observer subfolder structure, it has been necessary to place all header files away from their source files into a distinct folder called CodePatterns. This emulates the later, after make install present structure.
  • essentially all source and header files had to be changed to adapt the include.
  • all Makefile.am's had to be changed.
  • nobase_ ... was removed such that header files are installed flat and not creating their subfolder along the process.
  • We placed Observer into its own convenience library and own folder Observer away from Patterns.

Some other changes:

  • FIX: MemDebug.hpp inclusion has been removed in all stubs.
  • Property mode set to 100644
File size: 3.4 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 "CodePatterns/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{
42 Chronos::getInstance().startTiming(__func__);
43 for (int i=0;i<10000000;++i)
44 std::cout << "";
45 Chronos::getInstance().endTiming(__func__);
46}
47
48void dummy_two()
49{
50 Chronos::getInstance().startTiming(__func__);
51 for (int i=0;i<1000000;++i)
52 std::cout << "";
53 Chronos::getInstance().endTiming(__func__);
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{
80 double timings[4];
81 // first dummy
82 dummy();
83 CPPUNIT_ASSERT( Chronos::getInstance().TimeRunning.find(std::string("dummy"))
84 != Chronos::getInstance().TimeRunning.end() );
85 CPPUNIT_ASSERT_EQUAL( (size_t) 1, Chronos::getInstance().SumUpTotalFunctions() );
86 timings[0] = Chronos::getInstance().AccountedTime[std::string("dummy")];
87 std::cout << "Timing[0]: " << timings[0] << std::endl;
88 CPPUNIT_ASSERT(timings[0] > 0.);
89 dummy();
90 // second call goes to same entry
91 CPPUNIT_ASSERT_EQUAL( (size_t) 1, Chronos::getInstance().SumUpTotalFunctions() );
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
96
97 // second dummy
98 dummy_two();
99 CPPUNIT_ASSERT( Chronos::getInstance().TimeRunning.find(std::string("dummy_two"))
100 != Chronos::getInstance().TimeRunning.end() );
101 CPPUNIT_ASSERT_EQUAL( (size_t) 2, Chronos::getInstance().SumUpTotalFunctions() );
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 {
108 Chronos::getInstance().startTiming("dummy_three");
109 for (int i=0;i<1000000;++i)
110 std::cout << "";
111 Chronos::getInstance().endTiming("dummy_three");
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
121 CPPUNIT_ASSERT( fabs(timings[0] + timings[1] + timings[2] + timings[3]- Chronos::getInstance().SumUpTotalTime()) < numeric_limits<double>::epsilon());
122
123 std::cout << Chronos::getInstance() << std::endl;
124}
Note: See TracBrowser for help on using the repository browser.