summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--searchlib/src/tests/nearsearch/CMakeLists.txt1
-rw-r--r--searchlib/src/tests/nearsearch/nearsearch_test.cpp132
2 files changed, 66 insertions, 67 deletions
diff --git a/searchlib/src/tests/nearsearch/CMakeLists.txt b/searchlib/src/tests/nearsearch/CMakeLists.txt
index 4f249380063..8d23b54963e 100644
--- a/searchlib/src/tests/nearsearch/CMakeLists.txt
+++ b/searchlib/src/tests/nearsearch/CMakeLists.txt
@@ -4,5 +4,6 @@ vespa_add_executable(searchlib_nearsearch_test_app TEST
nearsearch_test.cpp
DEPENDS
searchlib
+ GTest::gtest
)
vespa_add_test(NAME searchlib_nearsearch_test_app COMMAND searchlib_nearsearch_test_app)
diff --git a/searchlib/src/tests/nearsearch/nearsearch_test.cpp b/searchlib/src/tests/nearsearch/nearsearch_test.cpp
index 4011366c7a1..aa578108b6b 100644
--- a/searchlib/src/tests/nearsearch/nearsearch_test.cpp
+++ b/searchlib/src/tests/nearsearch/nearsearch_test.cpp
@@ -11,7 +11,7 @@ LOG_SETUP("nearsearch_test");
#include <vespa/searchlib/fef/matchdatalayout.h>
#include <vespa/vespalib/util/stringfmt.h>
#include <set>
-#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/vespalib/gtest/gtest.h>
////////////////////////////////////////////////////////////////////////////////
//
@@ -108,28 +108,20 @@ MyQuery::~MyQuery() {}
//
////////////////////////////////////////////////////////////////////////////////
-class Test : public vespalib::TestApp {
-private:
- bool testNearSearch(MyQuery &query, uint32_t matchId);
+class NearSearchTest : public ::testing::Test {
+protected:
+ void testNearSearch(MyQuery &query, uint32_t matchId, const vespalib::string& label);
-public:
- int Main() override;
- void testBasicNear();
- void testRepeatedTerms();
+ NearSearchTest();
+ ~NearSearchTest() override;
};
-int
-Test::Main()
+NearSearchTest::NearSearchTest()
+ : ::testing::Test()
{
- TEST_INIT("nearsearch_test");
-
- testBasicNear(); TEST_FLUSH();
- testRepeatedTerms(); TEST_FLUSH();
-
- TEST_DONE();
}
-TEST_APPHOOK(Test);
+NearSearchTest::~NearSearchTest() = default;
////////////////////////////////////////////////////////////////////////////////
//
@@ -137,84 +129,89 @@ TEST_APPHOOK(Test);
//
////////////////////////////////////////////////////////////////////////////////
-void
-Test::testBasicNear()
+TEST_F(NearSearchTest, basic_near)
{
MyTerm foo(UIntList().add(69),
UIntList().add(6).add(11));
for (uint32_t i = 0; i <= 1; ++i) {
- TEST_STATE(vespalib::make_string("i = %u", i).c_str());
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(foo), 69));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(foo), 69));
+ SCOPED_TRACE(vespalib::make_string("i = %u", i));
+ testNearSearch(MyQuery(false, i).addTerm(foo), 69, "near 1");
+ testNearSearch(MyQuery(true, i).addTerm(foo), 69, "onear 1");
}
MyTerm bar(UIntList().add(68).add(69).add(70),
UIntList().add(7).add(10));
- TEST_DO(testNearSearch(MyQuery(false, 0).addTerm(foo).addTerm(bar), 0));
- TEST_DO(testNearSearch(MyQuery(true, 0).addTerm(foo).addTerm(bar), 0));
+ testNearSearch(MyQuery(false, 0).addTerm(foo).addTerm(bar), 0, "near 2");
+ testNearSearch(MyQuery(true, 0).addTerm(foo).addTerm(bar), 0, "onear 2");
for (uint32_t i = 1; i <= 2; ++i) {
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(bar), 69));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(bar), 69));
+ SCOPED_TRACE(vespalib::make_string("i = %u", i));
+ testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(bar), 69, "near 3");
+ testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(bar), 69, "onear 3");
}
MyTerm baz(UIntList().add(69).add(70).add(71),
UIntList().add(8).add(9));
for (uint32_t i = 0; i <= 1; ++i) {
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(bar).addTerm(baz), 0));
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(baz).addTerm(bar), 0));
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(bar).addTerm(baz).addTerm(foo), 0));
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(bar).addTerm(foo).addTerm(baz), 0));
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(baz).addTerm(foo).addTerm(bar), 0));
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(baz).addTerm(bar).addTerm(foo), 0));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(bar).addTerm(baz), 0));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(baz).addTerm(bar), 0));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(bar).addTerm(baz).addTerm(foo), 0));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(bar).addTerm(foo).addTerm(baz), 0));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(baz).addTerm(foo).addTerm(bar), 0));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(baz).addTerm(bar).addTerm(foo), 0));
+ SCOPED_TRACE(vespalib::make_string("i = %u", i));
+ testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(bar).addTerm(baz), 0, "near 10");
+ testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(baz).addTerm(bar), 0, "near 11");
+ testNearSearch(MyQuery(false, i).addTerm(bar).addTerm(baz).addTerm(foo), 0, "near 12");
+ testNearSearch(MyQuery(false, i).addTerm(bar).addTerm(foo).addTerm(baz), 0, "near 13");
+ testNearSearch(MyQuery(false, i).addTerm(baz).addTerm(foo).addTerm(bar), 0, "near 14");
+ testNearSearch(MyQuery(false, i).addTerm(baz).addTerm(bar).addTerm(foo), 0, "near 15");
+ testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(bar).addTerm(baz), 0, "onear 10");
+ testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(baz).addTerm(bar), 0, "onear 11");
+ testNearSearch(MyQuery(true, i).addTerm(bar).addTerm(baz).addTerm(foo), 0, "onear 12");
+ testNearSearch(MyQuery(true, i).addTerm(bar).addTerm(foo).addTerm(baz), 0, "onear 13");
+ testNearSearch(MyQuery(true, i).addTerm(baz).addTerm(foo).addTerm(bar), 0, "onear 14");
+ testNearSearch(MyQuery(true, i).addTerm(baz).addTerm(bar).addTerm(foo), 0, "onear 15");
}
for (uint32_t i = 2; i <= 3; ++i) {
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(bar).addTerm(baz), 69));
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(baz).addTerm(bar), 69));
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(bar).addTerm(baz).addTerm(foo), 69));
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(bar).addTerm(foo).addTerm(baz), 69));
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(baz).addTerm(foo).addTerm(bar), 69));
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(baz).addTerm(bar).addTerm(foo), 69));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(bar).addTerm(baz), 69));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(baz).addTerm(bar), 0));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(bar).addTerm(baz).addTerm(foo), 0));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(bar).addTerm(foo).addTerm(baz), 0));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(baz).addTerm(foo).addTerm(bar), 0));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(baz).addTerm(bar).addTerm(foo), 69));
+ SCOPED_TRACE(vespalib::make_string("i = %u", i));
+ testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(bar).addTerm(baz), 69, "near 20");
+ testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(baz).addTerm(bar), 69, "near 21");
+ testNearSearch(MyQuery(false, i).addTerm(bar).addTerm(baz).addTerm(foo), 69, "near 22");
+ testNearSearch(MyQuery(false, i).addTerm(bar).addTerm(foo).addTerm(baz), 69, "near 23");
+ testNearSearch(MyQuery(false, i).addTerm(baz).addTerm(foo).addTerm(bar), 69, "near 24");
+ testNearSearch(MyQuery(false, i).addTerm(baz).addTerm(bar).addTerm(foo), 69, "near 25");
+ testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(bar).addTerm(baz), 69, "onear 20");
+ testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(baz).addTerm(bar), 0, "onear 21");
+ testNearSearch(MyQuery(true, i).addTerm(bar).addTerm(baz).addTerm(foo), 0, "onear 22");
+ testNearSearch(MyQuery(true, i).addTerm(bar).addTerm(foo).addTerm(baz), 0, "onear 23");
+ testNearSearch(MyQuery(true, i).addTerm(baz).addTerm(foo).addTerm(bar), 0, "onear 24");
+ testNearSearch(MyQuery(true, i).addTerm(baz).addTerm(bar).addTerm(foo), 69, "onear 25");
}
}
-void
-Test::testRepeatedTerms()
+
+TEST_F(NearSearchTest, repeated_terms)
{
MyTerm foo(UIntList().add(69),
UIntList().add(1).add(2).add(3));
- TEST_DO(testNearSearch(MyQuery(false, 0).addTerm(foo).addTerm(foo), 69));
- TEST_DO(testNearSearch(MyQuery(true, 0).addTerm(foo).addTerm(foo), 0));
+ testNearSearch(MyQuery(false, 0).addTerm(foo).addTerm(foo), 69, "near 50");
+ testNearSearch(MyQuery(true, 0).addTerm(foo).addTerm(foo), 0, "onear 50");
for (uint32_t i = 1; i <= 2; ++i) {
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(foo), 69));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(foo), 69));
+ SCOPED_TRACE(vespalib::make_string("i = %u", i));
+ testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(foo), 69, "near 51");
+ testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(foo), 69, "onear 51");
}
for (uint32_t i = 0; i <= 1; ++i) {
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(foo).addTerm(foo), 69));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(foo).addTerm(foo), 0));
+ SCOPED_TRACE(vespalib::make_string("i = %u", i));
+ testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(foo).addTerm(foo), 69, "near 52");
+ testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(foo).addTerm(foo), 0, "onear 52");
}
for (uint32_t i = 2; i <= 3; ++i) {
- TEST_DO(testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(foo).addTerm(foo), 69));
- TEST_DO(testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(foo).addTerm(foo), 69));
+ SCOPED_TRACE(vespalib::make_string("i = %u", i));
+ testNearSearch(MyQuery(false, i).addTerm(foo).addTerm(foo).addTerm(foo), 69, "near 53");
+ testNearSearch(MyQuery(true, i).addTerm(foo).addTerm(foo).addTerm(foo), 69, "onear 53");
}
}
-bool
-Test::testNearSearch(MyQuery &query, uint32_t matchId)
+void
+NearSearchTest::testNearSearch(MyQuery &query, uint32_t matchId, const vespalib::string& label)
{
- LOG(info, "testNearSearch(%d)", matchId);
+ SCOPED_TRACE(vespalib::make_string("%s - %u", label.c_str(), matchId));
search::queryeval::IntermediateBlueprint *near_b = nullptr;
if (query.isOrdered()) {
near_b = new search::queryeval::ONearBlueprint(query.getWindow());
@@ -240,13 +237,14 @@ Test::testNearSearch(MyQuery &query, uint32_t matchId)
if (docId == matchId) {
foundMatch = true;
} else {
- LOG(info, "Document %d matched unexpectedly.", docId);
- return false;
+ FAIL() << "Document " << docId << " matched unexpectedly.";
}
}
if (matchId == 0) {
- return EXPECT_TRUE(!foundMatch);
+ EXPECT_TRUE(!foundMatch);
} else {
- return EXPECT_TRUE(foundMatch);
+ EXPECT_TRUE(foundMatch);
}
}
+
+GTEST_MAIN_RUN_ALL_TESTS()