diff options
Diffstat (limited to 'eval/src/tests/eval/aggr/aggr_test.cpp')
-rw-r--r-- | eval/src/tests/eval/aggr/aggr_test.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/eval/src/tests/eval/aggr/aggr_test.cpp b/eval/src/tests/eval/aggr/aggr_test.cpp index b1da9704bfc..603fdb508e2 100644 --- a/eval/src/tests/eval/aggr/aggr_test.cpp +++ b/eval/src/tests/eval/aggr/aggr_test.cpp @@ -5,6 +5,7 @@ using vespalib::Stash; using namespace vespalib::eval; +using namespace vespalib::eval::aggr; TEST("require that aggregator list returns appropriate entries") { auto list = Aggregator::list(); @@ -83,4 +84,31 @@ TEST("require that MIN aggregator works as expected") { aggr.next(200.0), EXPECT_EQUAL(aggr.result(), 100.0); } +template <template <typename T> typename A> +float aggr_merge(const std::vector<float> &a, const std::vector<float> &b) { + A<float> aggr0; + A<float> aggr1; + A<float> aggr2; + A<float> aggr3; + for (float v: a) { + aggr1.sample(v); + } + for (float v: b) { + aggr2.sample(v); + } + aggr0.merge(aggr1); + aggr2.merge(aggr3); + aggr0.merge(aggr2); + return aggr0.result(); +} + +TEST("require that aggregator merge works") { + EXPECT_EQUAL(aggr_merge<Avg>({1,2},{3,4}), 2.5); + EXPECT_EQUAL(aggr_merge<Count>({1,2},{3,4}), 4.0); + EXPECT_EQUAL(aggr_merge<Prod>({1,2},{3,4}), 24.0); + EXPECT_EQUAL(aggr_merge<Sum>({1,2},{3,4}), 10.0); + EXPECT_EQUAL(aggr_merge<Max>({1,2},{3,4}), 4.0); + EXPECT_EQUAL(aggr_merge<Min>({1,2},{3,4}), 1.0); +} + TEST_MAIN() { TEST_RUN_ALL(); } |