summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2020-05-14 15:10:53 +0200
committerGitHub <noreply@github.com>2020-05-14 15:10:53 +0200
commitd3444d75e44338a4a8e3c85cd21dde66a5b2f96c (patch)
tree7328e7eeecde05baaed9004217c83845b78d0e92 /searchlib
parente7f328b4fbfba6c85440e584e69b8bdef0907d7c (diff)
parent4243f26ea4855e2be22749944031363d1cb0b53d (diff)
Merge pull request #13252 from vespa-engine/toregge/use-gtest-for-equiv-test
Rewrite equiv_test to use gtest.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/queryeval/equiv/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/equiv/equiv_test.cpp174
2 files changed, 91 insertions, 85 deletions
diff --git a/searchlib/src/tests/queryeval/equiv/CMakeLists.txt b/searchlib/src/tests/queryeval/equiv/CMakeLists.txt
index 368f12e34a5..246b2ce0426 100644
--- a/searchlib/src/tests/queryeval/equiv/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/equiv/CMakeLists.txt
@@ -1,8 +1,10 @@
# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+find_package(GTest REQUIRED)
vespa_add_executable(searchlib_equiv_test_app TEST
SOURCES
equiv_test.cpp
DEPENDS
searchlib
+ GTest::GTest
)
vespa_add_test(NAME searchlib_equiv_test_app COMMAND searchlib_equiv_test_app)
diff --git a/searchlib/src/tests/queryeval/equiv/equiv_test.cpp b/searchlib/src/tests/queryeval/equiv/equiv_test.cpp
index ecd1c8cd218..219735105de 100644
--- a/searchlib/src/tests/queryeval/equiv/equiv_test.cpp
+++ b/searchlib/src/tests/queryeval/equiv/equiv_test.cpp
@@ -1,11 +1,11 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("equiv_test");
-#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/queryeval/leaf_blueprints.h>
#include <vespa/searchlib/queryeval/intermediate_blueprints.h>
#include <vespa/searchlib/queryeval/equiv_blueprint.h>
#include <vespa/searchlib/fef/matchdatalayout.h>
+#include <vespa/vespalib/gtest/gtest.h>
using namespace search::queryeval;
using search::fef::MatchData;
@@ -14,14 +14,20 @@ using search::fef::TermFieldHandle;
using search::fef::TermFieldMatchData;
using search::fef::FieldPositionsIterator;
-class Test : public vespalib::TestApp {
-public:
- void testEquiv();
- int Main() override;
+class EquivTest : public ::testing::Test {
+protected:
+ EquivTest();
+ ~EquivTest();
+
+ void test_equiv(bool strict);
};
+EquivTest::EquivTest() = default;
+
+EquivTest::~EquivTest() = default;
+
void
-Test::testEquiv()
+EquivTest::test_equiv(bool strict)
{
FakeResult a;
FakeResult b;
@@ -39,91 +45,89 @@ Test::testEquiv()
FieldSpecBaseList fields;
fields.add(FieldSpecBase(1, 1));
fields.add(FieldSpecBase(2, 2));
- EquivBlueprint *eq_b = new EquivBlueprint(fields, subLayout);
-
- eq_b->addTerm(Blueprint::UP(new FakeBlueprint(FieldSpec("foo", 1, fbh11), a)), 1.0);
- eq_b->addTerm(Blueprint::UP(new FakeBlueprint(FieldSpec("bar", 2, fbh21), b)), 1.0);
- eq_b->addTerm(Blueprint::UP(new FakeBlueprint(FieldSpec("bar", 2, fbh22), c)), 1.0);
-
- Blueprint::UP bp(eq_b);
- for (int i = 0; i <= 1; ++i) {
- bool strict = (i == 0);
- TEST_STATE(strict ? "strict" : "non-strict");
- MatchData::UP md = MatchData::makeTestInstance(100, 10);
- bp->fetchPostings(ExecuteInfo::create(strict));
- SearchIterator::UP search = bp->createSearch(*md, strict);
- search->initFullRange();
-
- EXPECT_TRUE(!search->seek(3));
- if (!strict) {
- EXPECT_EQUAL(SearchIterator::beginId(), search->getDocId());
- EXPECT_TRUE(search->seek(5u));
- }
- EXPECT_EQUAL(5u, search->getDocId());
- { // test doc 5 results
- search->unpack(5u);
- {
- TermFieldMatchData &data = *md->resolveTermField(1);
- EXPECT_EQUAL(1u, data.getFieldId());
- EXPECT_EQUAL(5u, data.getDocId());
- FieldPositionsIterator itr = data.getIterator();
- EXPECT_EQUAL(1u, itr.size());
- ASSERT_TRUE(itr.valid());
- EXPECT_EQUAL(1u, itr.getPosition());
- itr.next();
- EXPECT_TRUE(!itr.valid());
- }
- {
- TermFieldMatchData &data = *md->resolveTermField(2);
- EXPECT_EQUAL(2u, data.getFieldId());
- EXPECT_EQUAL(5u, data.getDocId());
- FieldPositionsIterator itr = data.getIterator();
- EXPECT_EQUAL(2u, itr.size());
- ASSERT_TRUE(itr.valid());
- EXPECT_EQUAL(2u, itr.getPosition());
- itr.next();
- ASSERT_TRUE(itr.valid());
- EXPECT_EQUAL(3u, itr.getPosition());
- itr.next();
- EXPECT_TRUE(!itr.valid());
- }
- }
- EXPECT_TRUE(!search->seek(7));
- if (!strict) {
- EXPECT_EQUAL(5u, search->getDocId());
- EXPECT_TRUE(search->seek(10u));
+ auto bp = std::make_unique<EquivBlueprint>(fields, subLayout);
+
+ bp->addTerm(std::make_unique<FakeBlueprint>(FieldSpec("foo", 1, fbh11), a), 1.0);
+ bp->addTerm(std::make_unique<FakeBlueprint>(FieldSpec("bar", 2, fbh21), b), 1.0);
+ bp->addTerm(std::make_unique<FakeBlueprint>(FieldSpec("bar", 2, fbh22), c), 1.0);
+
+ MatchData::UP md = MatchData::makeTestInstance(100, 10);
+ bp->fetchPostings(ExecuteInfo::create(strict));
+ SearchIterator::UP search = bp->createSearch(*md, strict);
+ search->initFullRange();
+
+ EXPECT_TRUE(!search->seek(3));
+ if (!strict) {
+ EXPECT_EQ(SearchIterator::beginId(), search->getDocId());
+ EXPECT_TRUE(search->seek(5u));
+ }
+ EXPECT_EQ(5u, search->getDocId());
+ { // test doc 5 results
+ search->unpack(5u);
+ {
+ TermFieldMatchData &data = *md->resolveTermField(1);
+ EXPECT_EQ(1u, data.getFieldId());
+ EXPECT_EQ(5u, data.getDocId());
+ FieldPositionsIterator itr = data.getIterator();
+ EXPECT_EQ(1u, itr.size());
+ ASSERT_TRUE(itr.valid());
+ EXPECT_EQ(1u, itr.getPosition());
+ itr.next();
+ EXPECT_TRUE(!itr.valid());
}
- EXPECT_EQUAL(10u, search->getDocId());
- { // test doc 10 results
- search->unpack(10u);
- EXPECT_EQUAL(5u, md->resolveTermField(1)->getDocId()); // no match
- {
- TermFieldMatchData &data = *md->resolveTermField(2);
- EXPECT_EQUAL(2u, data.getFieldId());
- EXPECT_EQUAL(10u, data.getDocId());
- FieldPositionsIterator itr = data.getIterator();
- EXPECT_EQUAL(1u, itr.size());
- ASSERT_TRUE(itr.valid());
- EXPECT_EQUAL(4u, itr.getPosition());
- itr.next();
- EXPECT_TRUE(!itr.valid());
- }
+ {
+ TermFieldMatchData &data = *md->resolveTermField(2);
+ EXPECT_EQ(2u, data.getFieldId());
+ EXPECT_EQ(5u, data.getDocId());
+ FieldPositionsIterator itr = data.getIterator();
+ EXPECT_EQ(2u, itr.size());
+ ASSERT_TRUE(itr.valid());
+ EXPECT_EQ(2u, itr.getPosition());
+ itr.next();
+ ASSERT_TRUE(itr.valid());
+ EXPECT_EQ(3u, itr.getPosition());
+ itr.next();
+ EXPECT_TRUE(!itr.valid());
}
- EXPECT_TRUE(!search->seek(13));
- if (strict) {
- EXPECT_TRUE(search->isAtEnd());
- } else {
- EXPECT_EQUAL(10u, search->getDocId());
+ }
+ EXPECT_TRUE(!search->seek(7));
+ if (!strict) {
+ EXPECT_EQ(5u, search->getDocId());
+ EXPECT_TRUE(search->seek(10u));
+ }
+ EXPECT_EQ(10u, search->getDocId());
+ { // test doc 10 results
+ search->unpack(10u);
+ EXPECT_EQ(5u, md->resolveTermField(1)->getDocId()); // no match
+ {
+ TermFieldMatchData &data = *md->resolveTermField(2);
+ EXPECT_EQ(2u, data.getFieldId());
+ EXPECT_EQ(10u, data.getDocId());
+ FieldPositionsIterator itr = data.getIterator();
+ EXPECT_EQ(1u, itr.size());
+ ASSERT_TRUE(itr.valid());
+ EXPECT_EQ(4u, itr.getPosition());
+ itr.next();
+ EXPECT_TRUE(!itr.valid());
}
}
+ EXPECT_TRUE(!search->seek(13));
+ if (strict) {
+ EXPECT_TRUE(search->isAtEnd());
+ } else {
+ EXPECT_EQ(10u, search->getDocId());
+ }
+}
+
+
+TEST_F(EquivTest, nonstrict)
+{
+ test_equiv(false);
}
-int
-Test::Main()
+TEST_F(EquivTest, strict)
{
- TEST_INIT("equiv_test");
- testEquiv();
- TEST_DONE();
+ test_equiv(true);
}
-TEST_APPHOOK(Test);
+GTEST_MAIN_RUN_ALL_TESTS()