summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/hitcollector
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2018-08-10 09:35:19 +0000
committerHåvard Pettersen <havardpe@oath.com>2018-08-14 09:47:43 +0000
commit4f9bd36ae68cafc82e010be1c5e3e8883b721bb8 (patch)
treebfcfc90820fcd57aa735c1534bdcfd47bf2f643b /searchlib/src/tests/hitcollector
parent572d47966292bcb6f9052613d201fda458904447 (diff)
added sorted hit sequence with test
Diffstat (limited to 'searchlib/src/tests/hitcollector')
-rw-r--r--searchlib/src/tests/hitcollector/CMakeLists.txt7
-rw-r--r--searchlib/src/tests/hitcollector/sorted_hit_sequence_test.cpp29
2 files changed, 36 insertions, 0 deletions
diff --git a/searchlib/src/tests/hitcollector/CMakeLists.txt b/searchlib/src/tests/hitcollector/CMakeLists.txt
index 1f35bdc4a3f..6b7fe874ea3 100644
--- a/searchlib/src/tests/hitcollector/CMakeLists.txt
+++ b/searchlib/src/tests/hitcollector/CMakeLists.txt
@@ -6,3 +6,10 @@ vespa_add_executable(searchlib_hitcollector_test_app TEST
searchlib
)
vespa_add_test(NAME searchlib_hitcollector_test_app COMMAND searchlib_hitcollector_test_app)
+vespa_add_executable(searchlib_sorted_hit_sequence_test_app TEST
+ SOURCES
+ sorted_hit_sequence_test.cpp
+ DEPENDS
+ searchlib
+)
+vespa_add_test(NAME searchlib_sorted_hit_sequence_test_app COMMAND searchlib_sorted_hit_sequence_test_app)
diff --git a/searchlib/src/tests/hitcollector/sorted_hit_sequence_test.cpp b/searchlib/src/tests/hitcollector/sorted_hit_sequence_test.cpp
new file mode 100644
index 00000000000..ac054ddbafd
--- /dev/null
+++ b/searchlib/src/tests/hitcollector/sorted_hit_sequence_test.cpp
@@ -0,0 +1,29 @@
+// Copyright 2018 Yahoo Holdings. 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/searchlib/queryeval/sorted_hit_sequence.h>
+
+using search::queryeval::SortedHitSequence;
+using Hits = std::vector<SortedHitSequence::Hit>;
+using Refs = std::vector<SortedHitSequence::Ref>;
+
+Hits hits({{1,10.0},{2,30.0},{3,20.0}});
+Refs refs({1,2,0});
+
+TEST("require that empty hit sequence is empty") {
+ EXPECT_TRUE(!SortedHitSequence(nullptr, nullptr, 0).valid());
+ EXPECT_TRUE(!SortedHitSequence(&hits[0], &refs[0], 0).valid());
+}
+
+TEST("require that sorted hit sequence can be iterated") {
+ SortedHitSequence seq(&hits[0], &refs[0], refs.size());
+ for (const auto &expect: Hits({{2,30.0},{3,20.0},{1,10.0}})) {
+ ASSERT_TRUE(seq.valid());
+ EXPECT_EQUAL(expect.first, seq.get().first);
+ EXPECT_EQUAL(expect.second, seq.get().second);
+ seq.next();
+ }
+ EXPECT_TRUE(!seq.valid());
+}
+
+TEST_MAIN() { TEST_RUN_ALL(); }