testAccumulator.cc
Go to the documentation of this file.
1 
9 #include <cppunit/extensions/HelperMacros.h>
10 #include <tst/Verify.h>
11 #include <utl/Accumulator.h>
12 
13 using namespace utl;
14 using namespace tst;
15 
16 
17 #define ASSERT_EQUAL(x, y) CPPUNIT_ASSERT(Verify<Equal>(x, y))
18 
19 
23 class TestAccumulator : public CppUnit::TestFixture {
24 
25  CPPUNIT_TEST_SUITE(TestAccumulator);
26  CPPUNIT_TEST(TestMinMaxAverage);
27  CPPUNIT_TEST(TestSafeMinMaxAverage);
28  CPPUNIT_TEST_SUITE_END();
29 
30 private:
31 
32 public:
33  void setUp() { }
34 
35  void tearDown() { }
36 
37  void
39  {
40  Accumulator::Min<int> min(0);
41  Accumulator::Max<int> max(0);
42  Accumulator::MinMax<int> minMax(0);
43  Accumulator::MinMax<int> minMax2(0, 1000);
44  Accumulator::MinMaxAverage<int> minMaxAvg(0);
45 
46  for (int i = -10; i <= 10; ++i) {
47  min(i);
48  max(i);
49  minMax(i);
50  minMax2(i);
51  minMaxAvg(i);
52  }
53 
54  ASSERT_EQUAL(min.GetMin(), -10);
55  ASSERT_EQUAL(max.GetMax(), 10);
56  ASSERT_EQUAL(minMax.GetMin(), -10);
57  ASSERT_EQUAL(minMax.GetMax(), 10);
58  ASSERT_EQUAL(minMax2.GetMin(), -10);
59  ASSERT_EQUAL(minMax2.GetMax(), 1000);
60  ASSERT_EQUAL(minMaxAvg.GetMin(), -10);
61  ASSERT_EQUAL(minMaxAvg.GetMax(), 10);
62  CPPUNIT_ASSERT(Verify<CloseTo>(minMaxAvg.GetAverage(), 0.));
63 
64  min.Clear(0);
65  max.Clear(0);
66  minMax.Clear(0);
67  minMax2.Clear(0, 1000);
68  minMaxAvg.Clear(0);
69 
70  ASSERT_EQUAL(min.GetMin(), 0);
71  ASSERT_EQUAL(max.GetMax(), 0);
72  ASSERT_EQUAL(minMax.GetMin(), 0);
73  ASSERT_EQUAL(minMax.GetMax(), 0);
74  ASSERT_EQUAL(minMax2.GetMin(), 0);
75  ASSERT_EQUAL(minMax2.GetMax(), 1000);
76  ASSERT_EQUAL(minMaxAvg.GetMin(), 0);
77  ASSERT_EQUAL(minMaxAvg.GetMax(), 0);
78  CPPUNIT_ASSERT(Verify<CloseTo>(minMaxAvg.GetAverage(), 0.));
79  }
80 
81  void
83  {
84  Accumulator::Safe<Accumulator::Min<int> > min;
85  Accumulator::Safe<Accumulator::Max<int> > max;
86  Accumulator::Safe<Accumulator::MinMax<int> > minMax;
87  Accumulator::Safe<Accumulator::MinMaxAverage<int> > minMaxAvg;
88 
89  CPPUNIT_ASSERT(!min);
90  CPPUNIT_ASSERT(!max);
91  CPPUNIT_ASSERT(!minMax);
92  CPPUNIT_ASSERT(!minMaxAvg);
93 
94  for (int i = -10; i <= 10; ++i) {
95  min(i);
96  max(i);
97  minMax(i);
98  minMaxAvg(i);
99  }
100 
101  CPPUNIT_ASSERT(min);
102  CPPUNIT_ASSERT(max);
103  CPPUNIT_ASSERT(minMax);
104  CPPUNIT_ASSERT(minMaxAvg);
105 
106  ASSERT_EQUAL(min.GetMin(), -10);
107  ASSERT_EQUAL(max.GetMax(), 10);
108  ASSERT_EQUAL(minMax.GetMin(), -10);
109  ASSERT_EQUAL(minMax.GetMax(), 10);
110  ASSERT_EQUAL(minMaxAvg.GetMin(), -10);
111  ASSERT_EQUAL(minMaxAvg.GetMax(), 10);
112  CPPUNIT_ASSERT(Verify<CloseTo>(minMaxAvg.GetAverage(), 0.));
113  }
114 
115 };
116 
117 
CPPUNIT_TEST_SUITE_REGISTRATION(testAiresShowerFile)
#define max(a, b)
void TestSafeMinMaxAverage()
#define ASSERT_EQUAL(x, y)

, generated on Tue Sep 26 2023.