diff options
author | Haavard <havardpe@yahoo-inc.com> | 2017-01-27 12:51:19 +0000 |
---|---|---|
committer | Haavard <havardpe@yahoo-inc.com> | 2017-01-27 12:51:19 +0000 |
commit | 671731477e97f0a03141e266006c5b50a6d4ec9e (patch) | |
tree | 3d0c5651ddc48e4dc6d748a20527d3c028146c98 /eval | |
parent | b5d3f3cd43b8dbc5d44fab4e2002a304cb51a9cd (diff) |
added test for aggregators
Diffstat (limited to 'eval')
-rw-r--r-- | eval/CMakeLists.txt | 1 | ||||
-rw-r--r-- | eval/src/tests/eval/aggr/CMakeLists.txt | 8 | ||||
-rw-r--r-- | eval/src/tests/eval/aggr/aggr_test.cpp | 75 | ||||
-rw-r--r-- | eval/src/tests/eval/value_type/CMakeLists.txt | 2 |
4 files changed, 85 insertions, 1 deletions
diff --git a/eval/CMakeLists.txt b/eval/CMakeLists.txt index c7e5b273ec1..5bf24a04202 100644 --- a/eval/CMakeLists.txt +++ b/eval/CMakeLists.txt @@ -7,6 +7,7 @@ vespa_define_module( src/apps/eval_expr TESTS + src/tests/eval/aggr src/tests/eval/compile_cache src/tests/eval/compiled_function src/tests/eval/function diff --git a/eval/src/tests/eval/aggr/CMakeLists.txt b/eval/src/tests/eval/aggr/CMakeLists.txt new file mode 100644 index 00000000000..bcba7dcd0eb --- /dev/null +++ b/eval/src/tests/eval/aggr/CMakeLists.txt @@ -0,0 +1,8 @@ +# Copyright 2017 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(eval_aggr_test_app TEST + SOURCES + aggr_test.cpp + DEPENDS + vespaeval +) +vespa_add_test(NAME eval_aggr_test_app COMMAND eval_aggr_test_app) diff --git a/eval/src/tests/eval/aggr/aggr_test.cpp b/eval/src/tests/eval/aggr/aggr_test.cpp new file mode 100644 index 00000000000..a315570995d --- /dev/null +++ b/eval/src/tests/eval/aggr/aggr_test.cpp @@ -0,0 +1,75 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include <vespa/vespalib/testkit/test_kit.h> +#include <vespa/vespalib/util/stash.h> +#include <vespa/eval/eval/aggr.h> + +using vespalib::Stash; +using namespace vespalib::eval; + +TEST("require that AVG aggregator works as expected") { + Stash stash; + Aggregator &aggr = Aggregator::create(Aggr::AVG, stash); + EXPECT_EQUAL(aggr.result(), 0.0); + aggr.first(10.0), EXPECT_EQUAL(aggr.result(), 10.0); + aggr.next(20.0), EXPECT_EQUAL(aggr.result(), 15.0); + aggr.next(30.0), EXPECT_EQUAL(aggr.result(), 20.0); + aggr.first(100.0), EXPECT_EQUAL(aggr.result(), 100.0); + aggr.next(200.0), EXPECT_EQUAL(aggr.result(), 150.0); +} + +TEST("require that COUNT aggregator works as expected") { + Stash stash; + Aggregator &aggr = Aggregator::create(Aggr::COUNT, stash); + EXPECT_EQUAL(aggr.result(), 0.0); + aggr.first(10.0), EXPECT_EQUAL(aggr.result(), 1.0); + aggr.next(20.0), EXPECT_EQUAL(aggr.result(), 2.0); + aggr.next(30.0), EXPECT_EQUAL(aggr.result(), 3.0); + aggr.first(100.0), EXPECT_EQUAL(aggr.result(), 1.0); + aggr.next(200.0), EXPECT_EQUAL(aggr.result(), 2.0); +} + +TEST("require that PROD aggregator works as expected") { + Stash stash; + Aggregator &aggr = Aggregator::create(Aggr::PROD, stash); + EXPECT_EQUAL(aggr.result(), 0.0); + aggr.first(10.0), EXPECT_EQUAL(aggr.result(), 10.0); + aggr.next(20.0), EXPECT_EQUAL(aggr.result(), 200.0); + aggr.next(30.0), EXPECT_EQUAL(aggr.result(), 6000.0); + aggr.first(100.0), EXPECT_EQUAL(aggr.result(), 100.0); + aggr.next(200.0), EXPECT_EQUAL(aggr.result(), 20000.0); +} + +TEST("require that SUM aggregator works as expected") { + Stash stash; + Aggregator &aggr = Aggregator::create(Aggr::SUM, stash); + EXPECT_EQUAL(aggr.result(), 0.0); + aggr.first(10.0), EXPECT_EQUAL(aggr.result(), 10.0); + aggr.next(20.0), EXPECT_EQUAL(aggr.result(), 30.0); + aggr.next(30.0), EXPECT_EQUAL(aggr.result(), 60.0); + aggr.first(100.0), EXPECT_EQUAL(aggr.result(), 100.0); + aggr.next(200.0), EXPECT_EQUAL(aggr.result(), 300.0); +} + +TEST("require that MAX aggregator works as expected") { + Stash stash; + Aggregator &aggr = Aggregator::create(Aggr::MAX, stash); + EXPECT_EQUAL(aggr.result(), 0.0); + aggr.first(10.0), EXPECT_EQUAL(aggr.result(), 10.0); + aggr.next(20.0), EXPECT_EQUAL(aggr.result(), 20.0); + aggr.next(30.0), EXPECT_EQUAL(aggr.result(), 30.0); + aggr.first(100.0), EXPECT_EQUAL(aggr.result(), 100.0); + aggr.next(200.0), EXPECT_EQUAL(aggr.result(), 200.0); +} + +TEST("require that MIN aggregator works as expected") { + Stash stash; + Aggregator &aggr = Aggregator::create(Aggr::MIN, stash); + EXPECT_EQUAL(aggr.result(), 0.0); + aggr.first(10.0), EXPECT_EQUAL(aggr.result(), 10.0); + aggr.next(20.0), EXPECT_EQUAL(aggr.result(), 10.0); + aggr.next(30.0), EXPECT_EQUAL(aggr.result(), 10.0); + aggr.first(100.0), EXPECT_EQUAL(aggr.result(), 100.0); + aggr.next(200.0), EXPECT_EQUAL(aggr.result(), 100.0); +} + +TEST_MAIN() { TEST_RUN_ALL(); } diff --git a/eval/src/tests/eval/value_type/CMakeLists.txt b/eval/src/tests/eval/value_type/CMakeLists.txt index 22258794ded..486e301c0bb 100644 --- a/eval/src/tests/eval/value_type/CMakeLists.txt +++ b/eval/src/tests/eval/value_type/CMakeLists.txt @@ -5,4 +5,4 @@ vespa_add_executable(eval_value_type_test_app TEST DEPENDS vespaeval ) -vespa_add_test(NAME eval_value_type_test_app NO_VALGRIND COMMAND eval_value_type_test_app) +vespa_add_test(NAME eval_value_type_test_app COMMAND eval_value_type_test_app) |