rippled
Loading...
Searching...
No Matches
Histogram_test.cpp
1#include <test/csf/Histogram.h>
2
3#include <xrpl/beast/unit_test.h>
4
5namespace ripple {
6namespace test {
7
9{
10public:
11 void
12 run() override
13 {
14 using namespace csf;
15 Histogram<int> hist;
16
17 BEAST_EXPECT(hist.size() == 0);
18 BEAST_EXPECT(hist.numBins() == 0);
19 BEAST_EXPECT(hist.minValue() == 0);
20 BEAST_EXPECT(hist.maxValue() == 0);
21 BEAST_EXPECT(hist.avg() == 0);
22 BEAST_EXPECT(hist.percentile(0.0f) == hist.minValue());
23 BEAST_EXPECT(hist.percentile(0.5f) == 0);
24 BEAST_EXPECT(hist.percentile(0.9f) == 0);
25 BEAST_EXPECT(hist.percentile(1.0f) == hist.maxValue());
26
27 hist.insert(1);
28
29 BEAST_EXPECT(hist.size() == 1);
30 BEAST_EXPECT(hist.numBins() == 1);
31 BEAST_EXPECT(hist.minValue() == 1);
32 BEAST_EXPECT(hist.maxValue() == 1);
33 BEAST_EXPECT(hist.avg() == 1);
34 BEAST_EXPECT(hist.percentile(0.0f) == hist.minValue());
35 BEAST_EXPECT(hist.percentile(0.5f) == 1);
36 BEAST_EXPECT(hist.percentile(0.9f) == 1);
37 BEAST_EXPECT(hist.percentile(1.0f) == hist.maxValue());
38
39 hist.insert(9);
40
41 BEAST_EXPECT(hist.size() == 2);
42 BEAST_EXPECT(hist.numBins() == 2);
43 BEAST_EXPECT(hist.minValue() == 1);
44 BEAST_EXPECT(hist.maxValue() == 9);
45 BEAST_EXPECT(hist.avg() == 5);
46 BEAST_EXPECT(hist.percentile(0.0f) == hist.minValue());
47 BEAST_EXPECT(hist.percentile(0.5f) == 1);
48 BEAST_EXPECT(hist.percentile(0.9f) == 9);
49 BEAST_EXPECT(hist.percentile(1.0f) == hist.maxValue());
50
51 hist.insert(1);
52
53 BEAST_EXPECT(hist.size() == 3);
54 BEAST_EXPECT(hist.numBins() == 2);
55 BEAST_EXPECT(hist.minValue() == 1);
56 BEAST_EXPECT(hist.maxValue() == 9);
57 BEAST_EXPECT(hist.avg() == 11 / 3);
58 BEAST_EXPECT(hist.percentile(0.0f) == hist.minValue());
59 BEAST_EXPECT(hist.percentile(0.5f) == 1);
60 BEAST_EXPECT(hist.percentile(0.9f) == 9);
61 BEAST_EXPECT(hist.percentile(1.0f) == hist.maxValue());
62 }
63};
64
65BEAST_DEFINE_TESTSUITE(Histogram, csf, ripple);
66
67} // namespace test
68} // namespace ripple
A testsuite class.
Definition suite.h:52
void run() override
Runs the suite.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6