summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorHaavard <havardpe@yahoo-inc.com>2017-01-27 12:51:19 +0000
committerHaavard <havardpe@yahoo-inc.com>2017-01-27 12:51:19 +0000
commit671731477e97f0a03141e266006c5b50a6d4ec9e (patch)
tree3d0c5651ddc48e4dc6d748a20527d3c028146c98 /eval
parentb5d3f3cd43b8dbc5d44fab4e2002a304cb51a9cd (diff)
added test for aggregators
Diffstat (limited to 'eval')
-rw-r--r--eval/CMakeLists.txt1
-rw-r--r--eval/src/tests/eval/aggr/CMakeLists.txt8
-rw-r--r--eval/src/tests/eval/aggr/aggr_test.cpp75
-rw-r--r--eval/src/tests/eval/value_type/CMakeLists.txt2
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)