source: util/src/unittests/AverageColumnsUnitTest.cpp@ 37ec1b

Last change on this file since 37ec1b was 37ec1b, checked in by Frederik Heber <heber@…>, 16 years ago

BUGFIX: Extended AverageColumnsUnitTest, found one bug in AverageColumns.

  • Property mode set to 100644
File size: 3.0 KB
Line 
1/*
2 * AveragerUnitTest.cpp
3 *
4 * Created on: Oct 29, 2009
5 * Author: heber
6 */
7
8using namespace std;
9
10#include <cppunit/CompilerOutputter.h>
11#include <cppunit/extensions/TestFactoryRegistry.h>
12#include <cppunit/ui/text/TestRunner.h>
13
14#include <math.h>
15
16#include "../average.hpp"
17#include "AverageColumnsUnitTest.hpp"
18
19// Registers the fixture into the 'registry'
20CPPUNIT_TEST_SUITE_REGISTRATION( AverageColumnsTest );
21
22
23void AverageColumnsTest::setUp()
24{
25 // empty stream and map
26 input.clear();
27 Columns.clear();
28 Results = NULL;
29};
30
31
32void AverageColumnsTest::tearDown()
33{
34 if (Results != NULL)
35 delete Results;
36};
37
38/** UnitTest for calculations in AverageColumns().
39 */
40void AverageColumnsTest::SimpleCalculationsTest()
41{
42 input.str("1\n1\n1\n");
43 Columns.insert(0);
44 Results = AverageColumns(input, Columns);
45 CPPUNIT_ASSERT ( Results->begin() != Results->end() );
46 const double mean = (*Results->begin()).second.first;
47 const double dev = (*Results->begin()).second.second;
48 CPPUNIT_ASSERT_EQUAL( 1., mean );
49 CPPUNIT_ASSERT_EQUAL( 0., dev );
50}
51
52/** UnitTest for some real calculations in AverageColumns().
53 */
54void AverageColumnsTest::CalculationsTest()
55{
56 MeanErrorMap::iterator Runner;
57 input.clear();
58 input.str("1.\t1.\n2.\t3.\n3.\t5.\n");
59 Columns.insert(0);
60 Columns.insert(1);
61 Results = AverageColumns(input, Columns);
62 Runner = Results->begin();
63 CPPUNIT_ASSERT ( Runner != Results->end() );
64 CPPUNIT_ASSERT_EQUAL( 2., (*Runner).second.first );
65 CPPUNIT_ASSERT_EQUAL( sqrt(2)/3., (*Runner).second.second );
66 Runner++;
67 CPPUNIT_ASSERT ( Runner != Results->end() );
68 CPPUNIT_ASSERT_EQUAL( 3., (*Runner).second.first );
69 CPPUNIT_ASSERT_EQUAL( sqrt(8.)/3., (*Runner).second.second );
70}
71
72/** UnitTest for too few columns in AverageColumns().
73 */
74void AverageColumnsTest::MissingColumnsTest()
75{
76 // fill stream
77 input.str("1\n1\n1\n");
78 Columns.insert(1);
79 Results = AverageColumns(input, Columns);
80 CPPUNIT_ASSERT ( (Results->begin() == Results->end()) && "Results should be empty, as there is no column 1." );
81};
82
83/** UnitTest for too few columns in AverageColumns().
84 */
85void AverageColumnsTest::NoRowsTest()
86{
87 // fill stream
88 input.str("");
89 Columns.insert(0);
90 Results = AverageColumns(input, Columns);
91 CPPUNIT_ASSERT ( (Results->begin() == Results->end()) && "Results should be empty, as there is no row." );
92};
93
94
95/********************************************** Main routine **************************************/
96
97int main(int argc, char **argv)
98{
99 // Get the top level suite from the registry
100 CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
101
102 // Adds the test to the list of test to run
103 CppUnit::TextUi::TestRunner runner;
104 runner.addTest( suite );
105
106 // Change the default outputter to a compiler error format outputter
107 runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(),
108 std::cerr ) );
109 // Run the tests.
110 bool wasSucessful = runner.run();
111
112 // Return error code 1 if the one of test failed.
113 return wasSucessful ? 0 : 1;
114};
Note: See TracBrowser for help on using the repository browser.