]> git.ipfire.org Git - thirdparty/squid.git/blob - src/tests/testStatHist.cc
Merge from trunk
[thirdparty/squid.git] / src / tests / testStatHist.cc
1 #include "squid.h"
2 #include "StatHist.h"
3 #include "testStatHist.h"
4
5 CPPUNIT_TEST_SUITE_REGISTRATION(testStatHist);
6
7 typedef enum {
8 ZERO, ONE, TWO, THREE, FOUR, FIVE
9 } number ;
10
11 class InspectingStatHist : public StatHist
12 {
13 public:
14 bool operator==(const InspectingStatHist &);
15 bins_type counter(double v) {
16 return bins[findBin(v)];
17 }
18 };
19
20 bool
21 InspectingStatHist::operator ==(const InspectingStatHist & src)
22 {
23 assert(bins != NULL && src.bins != NULL); // TODO: remove after initializing bins at construction time
24 if (capacity_ != src.capacity_ ||
25 min_!=src.min_ ||
26 max_!=src.max_ ||
27 scale_!=src.scale_ ||
28 val_in!=src.val_in ||
29 val_out!=src.val_out)
30 return false;
31 return (memcmp(bins,src.bins,capacity_*sizeof(*bins))==0);
32 }
33
34 void
35 testStatHist::testStatHistBaseEquality()
36 {
37 InspectingStatHist raw, test;
38 raw.enumInit(FIVE);
39 test.enumInit(FIVE);
40 CPPUNIT_ASSERT(raw==test);
41 test.count(ZERO);
42 CPPUNIT_ASSERT_ASSERTION_FAIL(CPPUNIT_ASSERT(raw==test));
43 }
44
45 void
46 testStatHist::testStatHistBaseAssignment()
47 {
48 InspectingStatHist raw, test;
49 raw.enumInit(FIVE);
50 test.enumInit(FIVE);
51 test.count(ZERO);
52 CPPUNIT_ASSERT_ASSERTION_FAIL(CPPUNIT_ASSERT(raw==test));
53 test=raw;
54 CPPUNIT_ASSERT(raw==test);
55 }
56
57 void
58 testStatHist::testStatHistLog()
59 {
60 const double min=0.0, max=10000.0;
61 const int capacity=10;
62 InspectingStatHist raw, test;
63 raw.logInit(capacity,min,max);
64 test=raw;
65 CPPUNIT_ASSERT(test.counter(min)==0);
66 test.count(min);
67 CPPUNIT_ASSERT(test.counter(min)==1);
68 CPPUNIT_ASSERT(test.counter(max)==0);
69 test.count(max);
70 CPPUNIT_ASSERT(test.counter(max)==1);
71 test=raw;
72 test.count(max);
73 //CPPUNIT_ASSERT(test.val(capacity-1)==1); //FIXME: val() returns a density
74 }
75
76 void
77 testStatHist::testStatHistSum()
78 {
79 InspectingStatHist s1, s2;
80 s1.logInit(30,1.0,100.0);
81 s2.logInit(30,1.0,100.0);
82 s1.count(3);
83 s2.count(30);
84 InspectingStatHist ts1, ts2;
85 ts1=s1;
86 ts1+=s2;
87 ts2=s2;
88 ts2+=s1;
89 CPPUNIT_ASSERT(ts1 == ts2);
90 InspectingStatHist ts3;
91 ts3.logInit(30,1.0,100.0);
92 ts3.count(3);
93 ts3.count(30);
94 CPPUNIT_ASSERT(ts3 == ts1);
95
96 }