aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2022-06-23 12:49:13 +0200
committerGitHub <noreply@github.com>2022-06-23 12:49:13 +0200
commitff599094f3415cb2dabc7b2b2453196b3ba6f488 (patch)
tree7cbbec96f37a0f5fb3bfd5f6fe595e35491dc43c /searchlib
parent750669b3fd7414a4cd626a9c655f07032c203ad3 (diff)
parent01014ed6961c679612bd2b93288bfc026eb41857 (diff)
Merge pull request #23212 from vespa-engine/geirst/nearest-neighbor-iterator-gtest
Rewrite nearest neighbor iterator test to GTest.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/queryeval/nearest_neighbor/CMakeLists.txt1
-rw-r--r--searchlib/src/tests/queryeval/nearest_neighbor/nearest_neighbor_test.cpp99
2 files changed, 50 insertions, 50 deletions
diff --git a/searchlib/src/tests/queryeval/nearest_neighbor/CMakeLists.txt b/searchlib/src/tests/queryeval/nearest_neighbor/CMakeLists.txt
index 3ebc8eb5251..e543a847498 100644
--- a/searchlib/src/tests/queryeval/nearest_neighbor/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/nearest_neighbor/CMakeLists.txt
@@ -5,5 +5,6 @@ vespa_add_executable(searchlib_nearest_neighbor_test_app TEST
nearest_neighbor_test.cpp
DEPENDS
searchlib
+ GTest::GTest
)
vespa_add_test(NAME searchlib_nearest_neighbor_test_app COMMAND searchlib_nearest_neighbor_test_app)
diff --git a/searchlib/src/tests/queryeval/nearest_neighbor/nearest_neighbor_test.cpp b/searchlib/src/tests/queryeval/nearest_neighbor/nearest_neighbor_test.cpp
index 029b74ff914..5f4db88bf4c 100644
--- a/searchlib/src/tests/queryeval/nearest_neighbor/nearest_neighbor_test.cpp
+++ b/searchlib/src/tests/queryeval/nearest_neighbor/nearest_neighbor_test.cpp
@@ -1,37 +1,36 @@
// Copyright Yahoo. 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/stringfmt.h>
-
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/tensor_spec.h>
+#include <vespa/searchcommon/attribute/config.h>
#include <vespa/searchlib/common/bitvector.h>
#include <vespa/searchlib/common/feature.h>
#include <vespa/searchlib/fef/matchdata.h>
#include <vespa/searchlib/queryeval/nearest_neighbor_iterator.h>
+#include <vespa/searchlib/queryeval/nns_index_iterator.h>
#include <vespa/searchlib/queryeval/simpleresult.h>
#include <vespa/searchlib/tensor/dense_tensor_attribute.h>
#include <vespa/searchlib/tensor/distance_function_factory.h>
+#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/vespalib/test/insertion_operators.h>
-#include <vespa/searchlib/queryeval/nns_index_iterator.h>
-#include <vespa/searchcommon/attribute/config.h>
+#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/log/log.h>
LOG_SETUP("nearest_neighbor_test");
#define EPS 1.0e-6
-using search::feature_t;
-using search::tensor::DenseTensorAttribute;
using search::AttributeVector;
using search::BitVector;
-using vespalib::eval::Value;
-using vespalib::eval::ValueType;
+using search::attribute::DistanceMetric;
+using search::feature_t;
+using search::tensor::DenseTensorAttribute;
+using search::tensor::DistanceFunction;
using vespalib::eval::CellType;
-using vespalib::eval::TensorSpec;
using vespalib::eval::SimpleValue;
-using search::tensor::DistanceFunction;
-using search::attribute::DistanceMetric;
+using vespalib::eval::TensorSpec;
+using vespalib::eval::Value;
+using vespalib::eval::ValueType;
using namespace search::fef;
using namespace search::queryeval;
@@ -96,7 +95,7 @@ struct Fixture
uint32_t sz = _attr->getNumDocs();
_global_filter = BitVector::create(sz);
for (uint32_t id : docids) {
- EXPECT_LESS(id, sz);
+ EXPECT_LT(id, sz);
_global_filter->setBit(id);
}
}
@@ -152,33 +151,33 @@ verify_iterator_returns_expected_results(const vespalib::string& attribute_tenso
auto nullTensor = createTensor(query_tensor_type_spec, 0.0, 0.0);
SimpleResult result = find_matches<true>(fixture, *nullTensor);
SimpleResult nullExpect({1,2,4,6});
- EXPECT_EQUAL(result, nullExpect);
+ EXPECT_EQ(result, nullExpect);
result = find_matches<false>(fixture, *nullTensor);
- EXPECT_EQUAL(result, nullExpect);
+ EXPECT_EQ(result, nullExpect);
auto farTensor = createTensor(query_tensor_type_spec, 9.0, 9.0);
SimpleResult farExpect({1,2,3,5});
result = find_matches<true>(fixture, *farTensor);
- EXPECT_EQUAL(result, farExpect);
+ EXPECT_EQ(result, farExpect);
result = find_matches<false>(fixture, *farTensor);
- EXPECT_EQUAL(result, farExpect);
+ EXPECT_EQ(result, farExpect);
SimpleResult null_thr5_exp({1,4,6});
result = find_matches<true>(fixture, *nullTensor, 5.0);
- EXPECT_EQUAL(result, null_thr5_exp);
+ EXPECT_EQ(result, null_thr5_exp);
result = find_matches<false>(fixture, *nullTensor, 5.0);
- EXPECT_EQUAL(result, null_thr5_exp);
+ EXPECT_EQ(result, null_thr5_exp);
SimpleResult far_thr4_exp({2,5});
result = find_matches<true>(fixture, *farTensor, 4.0);
- EXPECT_EQUAL(result, far_thr4_exp);
+ EXPECT_EQ(result, far_thr4_exp);
result = find_matches<false>(fixture, *farTensor, 4.0);
- EXPECT_EQUAL(result, far_thr4_exp);
+ EXPECT_EQ(result, far_thr4_exp);
}
-TEST("require that NearestNeighborIterator returns expected results") {
- TEST_DO(verify_iterator_returns_expected_results(denseSpecDouble, denseSpecDouble));
- TEST_DO(verify_iterator_returns_expected_results(denseSpecFloat, denseSpecFloat));
+TEST(NnsIndexIteratorTest, require_that_iterator_returns_expected_results) {
+ verify_iterator_returns_expected_results(denseSpecDouble, denseSpecDouble);
+ verify_iterator_returns_expected_results(denseSpecFloat, denseSpecFloat);
}
void
@@ -197,20 +196,20 @@ verify_iterator_returns_filtered_results(const vespalib::string& attribute_tenso
auto nullTensor = createTensor(query_tensor_type_spec, 0.0, 0.0);
SimpleResult result = find_matches<true>(fixture, *nullTensor);
SimpleResult nullExpect({1,3,4});
- EXPECT_EQUAL(result, nullExpect);
+ EXPECT_EQ(result, nullExpect);
result = find_matches<false>(fixture, *nullTensor);
- EXPECT_EQUAL(result, nullExpect);
+ EXPECT_EQ(result, nullExpect);
auto farTensor = createTensor(query_tensor_type_spec, 9.0, 9.0);
SimpleResult farExpect({1,3,4});
result = find_matches<true>(fixture, *farTensor);
- EXPECT_EQUAL(result, farExpect);
+ EXPECT_EQ(result, farExpect);
result = find_matches<false>(fixture, *farTensor);
- EXPECT_EQUAL(result, farExpect);
+ EXPECT_EQ(result, farExpect);
}
-TEST("require that NearestNeighborIterator returns filtered results") {
- TEST_DO(verify_iterator_returns_filtered_results(denseSpecDouble, denseSpecDouble));
- TEST_DO(verify_iterator_returns_filtered_results(denseSpecFloat, denseSpecFloat));
+TEST(NnsIndexIteratorTest, require_that_iterator_returns_filtered_results) {
+ verify_iterator_returns_filtered_results(denseSpecDouble, denseSpecDouble);
+ verify_iterator_returns_filtered_results(denseSpecFloat, denseSpecFloat);
}
template <bool strict>
@@ -249,23 +248,23 @@ verify_iterator_sets_expected_rawscore(const vespalib::string& attribute_tensor_
auto nullTensor = createTensor(query_tensor_type_spec, 0.0, 0.0);
std::vector<feature_t> got = get_rawscores<true>(fixture, *nullTensor);
std::vector<feature_t> expected{5.0, 13.0, 10.0, 10.0, 5.0};
- EXPECT_EQUAL(got.size(), expected.size());
+ EXPECT_EQ(got.size(), expected.size());
for (size_t i = 0; i < expected.size(); ++i) {
- EXPECT_APPROX(1.0/(1.0+expected[i]), got[i], EPS);
+ EXPECT_NEAR(1.0/(1.0+expected[i]), got[i], EPS);
}
got = get_rawscores<false>(fixture, *nullTensor);
- EXPECT_EQUAL(got.size(), expected.size());
+ EXPECT_EQ(got.size(), expected.size());
for (size_t i = 0; i < expected.size(); ++i) {
- EXPECT_APPROX(1.0/(1.0+expected[i]), got[i], EPS);
+ EXPECT_NEAR(1.0/(1.0+expected[i]), got[i], EPS);
}
}
-TEST("require that NearestNeighborIterator sets expected rawscore") {
- TEST_DO(verify_iterator_sets_expected_rawscore(denseSpecDouble, denseSpecDouble));
- TEST_DO(verify_iterator_sets_expected_rawscore(denseSpecFloat, denseSpecFloat));
+TEST(NnsIndexIteratorTest, require_that_iterator_sets_expected_rawscore) {
+ verify_iterator_sets_expected_rawscore(denseSpecDouble, denseSpecDouble);
+ verify_iterator_sets_expected_rawscore(denseSpecFloat, denseSpecFloat);
}
-TEST("require that NnsIndexIterator works as expected") {
+TEST(NnsIndexIteratorTest, require_that_iterator_works_as_expected) {
std::vector<NnsIndexIterator::Hit> hits{{2,4.0}, {3,9.0}, {5,1.0}, {8,16.0}, {9,36.0}};
auto md = MatchData::makeTestInstance(2, 2);
auto &tfmd = *(md->resolveTermField(0));
@@ -275,37 +274,37 @@ TEST("require that NnsIndexIterator works as expected") {
bool match = search->seek(docid);
EXPECT_FALSE(match);
EXPECT_FALSE(search->isAtEnd());
- EXPECT_EQUAL(2u, search->getDocId());
+ EXPECT_EQ(2u, search->getDocId());
docid = 2;
match = search->seek(docid);
EXPECT_TRUE(match);
EXPECT_FALSE(search->isAtEnd());
- EXPECT_EQUAL(docid, search->getDocId());
+ EXPECT_EQ(docid, search->getDocId());
search->unpack(docid);
- EXPECT_APPROX(1.0/(1.0+2.0), tfmd.getRawScore(), EPS);
+ EXPECT_NEAR(1.0/(1.0+2.0), tfmd.getRawScore(), EPS);
docid = 3;
match = search->seek(docid);
EXPECT_TRUE(match);
EXPECT_FALSE(search->isAtEnd());
- EXPECT_EQUAL(docid, search->getDocId());
+ EXPECT_EQ(docid, search->getDocId());
search->unpack(docid);
- EXPECT_APPROX(1.0/(1.0+3.0), tfmd.getRawScore(), EPS);
+ EXPECT_NEAR(1.0/(1.0+3.0), tfmd.getRawScore(), EPS);
docid = 4;
match = search->seek(docid);
EXPECT_FALSE(match);
EXPECT_FALSE(search->isAtEnd());
- EXPECT_EQUAL(5u, search->getDocId());
+ EXPECT_EQ(5u, search->getDocId());
docid = 6;
match = search->seek(docid);
EXPECT_FALSE(match);
EXPECT_FALSE(search->isAtEnd());
- EXPECT_EQUAL(8u, search->getDocId());
+ EXPECT_EQ(8u, search->getDocId());
docid = 8;
search->unpack(docid);
- EXPECT_APPROX(1.0/(1.0+4.0), tfmd.getRawScore(), EPS);
+ EXPECT_NEAR(1.0/(1.0+4.0), tfmd.getRawScore(), EPS);
docid = 9;
match = search->seek(docid);
EXPECT_TRUE(match);
@@ -320,10 +319,10 @@ TEST("require that NnsIndexIterator works as expected") {
match = search->seek(docid);
EXPECT_FALSE(match);
EXPECT_FALSE(search->isAtEnd());
- EXPECT_EQUAL(5u, search->getDocId());
+ EXPECT_EQ(5u, search->getDocId());
docid = 5;
search->unpack(docid);
- EXPECT_APPROX(1.0/(1.0+1.0), tfmd.getRawScore(), EPS);
+ EXPECT_NEAR(1.0/(1.0+1.0), tfmd.getRawScore(), EPS);
EXPECT_FALSE(search->isAtEnd());
docid = 6;
match = search->seek(docid);
@@ -331,4 +330,4 @@ TEST("require that NnsIndexIterator works as expected") {
EXPECT_TRUE(search->isAtEnd());
}
-TEST_MAIN() { TEST_RUN_ALL(); }
+GTEST_MAIN_RUN_ALL_TESTS()