diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-06-28 08:56:48 -0500 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-06-28 08:56:48 -0500 |
commit | 781d6dfd8afdcb1da0ce29ef37ccbc0c45dc155d (patch) | |
tree | 18846b64a9ea079196591f93bd2856a8b5459b4d /searchlib | |
parent | 38be09692fbc8e286ed1b669771e1c2d66e1db6c (diff) | |
parent | 4f9ad5d65f0e7fac3796830b90c2f8b9128523ce (diff) |
Merge with master
Diffstat (limited to 'searchlib')
13 files changed, 741 insertions, 855 deletions
diff --git a/searchlib/src/tests/memoryindex/compact_words_store/CMakeLists.txt b/searchlib/src/tests/memoryindex/compact_words_store/CMakeLists.txt index ee31ef7c7aa..754ff796690 100644 --- a/searchlib/src/tests/memoryindex/compact_words_store/CMakeLists.txt +++ b/searchlib/src/tests/memoryindex/compact_words_store/CMakeLists.txt @@ -4,5 +4,6 @@ vespa_add_executable(searchlib_compact_words_store_test_app TEST compact_words_store_test.cpp DEPENDS searchlib + gtest ) vespa_add_test(NAME searchlib_compact_words_store_test_app COMMAND searchlib_compact_words_store_test_app) diff --git a/searchlib/src/tests/memoryindex/compact_words_store/compact_words_store_test.cpp b/searchlib/src/tests/memoryindex/compact_words_store/compact_words_store_test.cpp index bda29115db6..52c85a70160 100644 --- a/searchlib/src/tests/memoryindex/compact_words_store/compact_words_store_test.cpp +++ b/searchlib/src/tests/memoryindex/compact_words_store/compact_words_store_test.cpp @@ -1,10 +1,10 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/vespalib/testkit/testapp.h> #include <vespa/searchlib/memoryindex/compact_words_store.h> #include <vespa/vespalib/datastore/entryref.h> -#include <vespa/vespalib/stllike/string.h> +#include <vespa/vespalib/gtest/gtest.h> #include <vespa/vespalib/stllike/hash_map.hpp> +#include <vespa/vespalib/stllike/string.h> #include <iostream> #include <map> @@ -13,9 +13,9 @@ using namespace search::datastore; using namespace search::memoryindex; using vespalib::MemoryUsage; -typedef CompactWordsStore::Builder Builder; -typedef CompactWordsStore::Iterator Iterator; -typedef Builder::WordRefVector WordRefVector; +using Builder = CompactWordsStore::Builder; +using Iterator = CompactWordsStore::Iterator; +using WordRefVector = Builder::WordRefVector; const EntryRef w1(1); const EntryRef w2(2); @@ -52,54 +52,52 @@ toStr(Iterator itr) return oss.str(); } -struct SingleFixture -{ - CompactWordsStore _store; - SingleFixture() : _store() { - _store.insert(Builder(d1).insert(w1).insert(w2).insert(w3)); +struct SingleDocumentTest : public ::testing::Test { + CompactWordsStore store; + SingleDocumentTest() : store() { + store.insert(Builder(d1).insert(w1).insert(w2).insert(w3)); } }; -struct MultiFixture -{ - CompactWordsStore _store; - MultiFixture() : _store() { - _store.insert(Builder(d1).insert(w1)); - _store.insert(Builder(d2).insert(w2)); - _store.insert(Builder(d3).insert(w3)); +struct MultiDocumentTest : public ::testing::Test { + CompactWordsStore store; + MultiDocumentTest() : store() { + store.insert(Builder(d1).insert(w1)); + store.insert(Builder(d2).insert(w2)); + store.insert(Builder(d3).insert(w3)); } }; -TEST_F("require that fields and words can be added for a document", SingleFixture) +TEST_F(SingleDocumentTest, fields_and_words_can_be_added_for_a_document) { - EXPECT_EQUAL("[1,2,3]", toStr(f._store.get(d1))); + EXPECT_EQ("[1,2,3]", toStr(store.get(d1))); } -TEST_F("require that multiple documents can be added", MultiFixture) +TEST_F(MultiDocumentTest, multiple_documents_can_be_added) { - EXPECT_EQUAL("[1]", toStr(f._store.get(d1))); - EXPECT_EQUAL("[2]", toStr(f._store.get(d2))); - EXPECT_EQUAL("[3]", toStr(f._store.get(d3))); - EXPECT_FALSE(f._store.get(d4).valid()); + EXPECT_EQ("[1]", toStr(store.get(d1))); + EXPECT_EQ("[2]", toStr(store.get(d2))); + EXPECT_EQ("[3]", toStr(store.get(d3))); + EXPECT_FALSE(store.get(d4).valid()); } -TEST_F("require that documents can be removed", MultiFixture) +TEST_F(MultiDocumentTest, documents_can_be_removed) { - f._store.remove(d2); - EXPECT_TRUE(f._store.get(d1).valid()); - EXPECT_FALSE(f._store.get(d2).valid()); - EXPECT_TRUE(f._store.get(d3).valid()); + store.remove(d2); + EXPECT_TRUE(store.get(d1).valid()); + EXPECT_FALSE(store.get(d2).valid()); + EXPECT_TRUE(store.get(d3).valid()); } -TEST_F("require that documents can be removed and re-inserted", MultiFixture) +TEST_F(MultiDocumentTest, documents_can_be_removed_and_reinserted) { - f._store.remove(d2); - f._store.insert(Builder(d2).insert(w4)); - EXPECT_EQUAL("[4]", toStr(f._store.get(d2))); + store.remove(d2); + store.insert(Builder(d2).insert(w4)); + EXPECT_EQ("[4]", toStr(store.get(d2))); } -TEST("require that a lot of words can be inserted, retrieved and removed") +TEST(CompactWordStoreTest, multiple_words_can_be_inserted_retrieved_and_removed) { CompactWordsStore store; for (uint32_t docId = 0; docId < 50; ++docId) { @@ -113,10 +111,10 @@ TEST("require that a lot of words can be inserted, retrieved and removed") } for (uint32_t docId = 0; docId < 50; ++docId) { WordRefVector words = build(store.get(docId)); - EXPECT_EQUAL(20000u, words.size()); + EXPECT_EQ(20000u, words.size()); uint32_t wordRef = 0; for (auto word : words) { - EXPECT_EQUAL(wordRef++, word.ref()); + EXPECT_EQ(wordRef++, word.ref()); } store.remove(docId); MemoryUsage usage = store.getMemoryUsage(); @@ -124,7 +122,7 @@ TEST("require that a lot of words can be inserted, retrieved and removed") } } -TEST("require that initial memory usage is reported") +TEST(CompactWordStoreTest, initial_memory_usage_is_reported) { CompactWordsStore store; CompactWordsStore::DocumentWordsMap docs; @@ -134,24 +132,24 @@ TEST("require that initial memory usage is reported") initExp.incUsedBytes(docs.getMemoryUsed()); initExp.merge(internalStore.getMemoryUsage()); MemoryUsage init = store.getMemoryUsage(); - EXPECT_EQUAL(initExp.allocatedBytes(), init.allocatedBytes()); - EXPECT_EQUAL(initExp.usedBytes(), init.usedBytes()); - EXPECT_GREATER(init.allocatedBytes(), init.usedBytes()); - EXPECT_GREATER(init.allocatedBytes(), 0u); - EXPECT_GREATER(init.usedBytes(), 0u); + EXPECT_EQ(initExp.allocatedBytes(), init.allocatedBytes()); + EXPECT_EQ(initExp.usedBytes(), init.usedBytes()); + EXPECT_GT(init.allocatedBytes(), init.usedBytes()); + EXPECT_GT(init.allocatedBytes(), 0u); + EXPECT_GT(init.usedBytes(), 0u); } -TEST("require that memory usage is updated after insert") +TEST(CompactWordStoreTest, memory_usage_is_updated_after_insert) { CompactWordsStore store; MemoryUsage init = store.getMemoryUsage(); store.insert(Builder(d1).insert(w1)); MemoryUsage after = store.getMemoryUsage(); - EXPECT_GREATER_EQUAL(after.allocatedBytes(), init.allocatedBytes()); - EXPECT_GREATER(after.usedBytes(), init.usedBytes()); + EXPECT_GE(after.allocatedBytes(), init.allocatedBytes()); + EXPECT_GT(after.usedBytes(), init.usedBytes()); } +GTEST_MAIN_RUN_ALL_TESTS() -TEST_MAIN() { TEST_RUN_ALL(); } diff --git a/searchlib/src/tests/memoryindex/datastore/CMakeLists.txt b/searchlib/src/tests/memoryindex/datastore/CMakeLists.txt index 45507f3b0ae..be1a193cd3c 100644 --- a/searchlib/src/tests/memoryindex/datastore/CMakeLists.txt +++ b/searchlib/src/tests/memoryindex/datastore/CMakeLists.txt @@ -4,6 +4,7 @@ vespa_add_executable(searchlib_feature_store_test_app TEST feature_store_test.cpp DEPENDS searchlib + gtest ) vespa_add_test(NAME searchlib_feature_store_test_app COMMAND searchlib_feature_store_test_app) vespa_add_executable(searchlib_word_store_test_app TEST @@ -11,5 +12,6 @@ vespa_add_executable(searchlib_word_store_test_app TEST word_store_test.cpp DEPENDS searchlib + gtest ) vespa_add_test(NAME searchlib_word_store_test_app COMMAND searchlib_word_store_test_app) diff --git a/searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp b/searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp index aca83d67a8a..c6368bee6eb 100644 --- a/searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp +++ b/searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp @@ -1,8 +1,10 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include <vespa/searchlib/memoryindex/feature_store.h> +#include <vespa/vespalib/gtest/gtest.h> + #include <vespa/log/log.h> LOG_SETUP("feature_store_test"); -#include <vespa/vespalib/testkit/testapp.h> -#include <vespa/searchlib/memoryindex/feature_store.h> using namespace search::btree; using namespace search::datastore; @@ -11,62 +13,55 @@ using namespace search::index; using search::index::schema::CollectionType; using search::index::schema::DataType; -namespace search -{ - +namespace search::memoryindex { -namespace memoryindex -{ +class FeatureStoreTest : public ::testing::Test { +public: + Schema schema; + FeatureStore fs; + Schema make_schema() const; + FeatureStoreTest(); +}; -class Test : public vespalib::TestApp +Schema +FeatureStoreTest::make_schema() const { -private: - Schema _schema; - - const Schema & getSchema() const { return _schema; } - bool assertFeatures(const DocIdAndFeatures &exp, const DocIdAndFeatures &act); - void requireThatFeaturesCanBeAddedAndRetrieved(); - void requireThatNextWordsAreWorking(); - void requireThatAddFeaturesTriggersChangeOfBuffer(); - -public: - Test(); - int Main() override; -}; + Schema result; + result.addIndexField(Schema::IndexField("f0", DataType::STRING)); + result.addIndexField(Schema::IndexField("f1", DataType::STRING, CollectionType::WEIGHTEDSET)); + return result; +} +FeatureStoreTest::FeatureStoreTest() + : schema(make_schema()), + fs(schema) +{ +} -bool -Test::assertFeatures(const DocIdAndFeatures &exp, - const DocIdAndFeatures &act) +void +assertFeatures(const DocIdAndFeatures& exp, + const DocIdAndFeatures& act) { // docid is not encoded as part of features - if (!EXPECT_EQUAL(exp.elements().size(), - act.elements().size())) - return false; + ASSERT_EQ(exp.elements().size(), + act.elements().size()); for (size_t i = 0; i < exp.elements().size(); ++i) { - if (!EXPECT_EQUAL(exp.elements()[i].getElementId(), - act.elements()[i].getElementId())) - return false; - if (!EXPECT_EQUAL(exp.elements()[i].getNumOccs(), - act.elements()[i].getNumOccs())) - return false; - if (!EXPECT_EQUAL(exp.elements()[i].getWeight(), act.elements()[i].getWeight())) - return false; - if (!EXPECT_EQUAL(exp.elements()[i].getElementLen(), - act.elements()[i].getElementLen())) - return false; + EXPECT_EQ(exp.elements()[i].getElementId(), + act.elements()[i].getElementId()); + EXPECT_EQ(exp.elements()[i].getNumOccs(), + act.elements()[i].getNumOccs()); + EXPECT_EQ(exp.elements()[i].getWeight(), act.elements()[i].getWeight()); + EXPECT_EQ(exp.elements()[i].getElementLen(), + act.elements()[i].getElementLen()); } - if (!EXPECT_EQUAL(exp.word_positions().size(), act.word_positions().size())) - return false; + ASSERT_EQ(exp.word_positions().size(), act.word_positions().size()); for (size_t i = 0; i < exp.word_positions().size(); ++i) { - if (!EXPECT_EQUAL(exp.word_positions()[i].getWordPos(), - act.word_positions()[i].getWordPos())) return false; + EXPECT_EQ(exp.word_positions()[i].getWordPos(), + act.word_positions()[i].getWordPos()); } - return true; } - DocIdAndFeatures getFeatures(uint32_t numOccs, int32_t weight, @@ -84,11 +79,8 @@ getFeatures(uint32_t numOccs, return f; } - -void -Test::requireThatFeaturesCanBeAddedAndRetrieved() +TEST_F(FeatureStoreTest, features_can_be_added_and_retrieved) { - FeatureStore fs(getSchema()); DocIdAndFeatures act; EntryRef r1; EntryRef r2; @@ -98,9 +90,9 @@ Test::requireThatFeaturesCanBeAddedAndRetrieved() r = fs.addFeatures(0, f); r1 = r.first; EXPECT_TRUE(r.second > 0); - EXPECT_EQUAL(FeatureStore::RefType::align(1u), - FeatureStore::RefType(r1).offset()); - EXPECT_EQUAL(0u, FeatureStore::RefType(r1).bufferId()); + EXPECT_EQ(FeatureStore::RefType::align(1u), + FeatureStore::RefType(r1).offset()); + EXPECT_EQ(0u, FeatureStore::RefType(r1).bufferId()); LOG(info, "bits(%" PRIu64 "), ref.offset(%zu), ref.bufferId(%u)", r.second, @@ -108,7 +100,7 @@ Test::requireThatFeaturesCanBeAddedAndRetrieved() FeatureStore::RefType(r1).bufferId()); fs.getFeatures(0, r1, act); // weight not encoded for single value - EXPECT_TRUE(assertFeatures(getFeatures(2, 1, 8), act)); + ASSERT_NO_FATAL_FAILURE(assertFeatures(getFeatures(2, 1, 8), act)); } { DocIdAndFeatures f = getFeatures(4, 8, 16); @@ -117,22 +109,19 @@ Test::requireThatFeaturesCanBeAddedAndRetrieved() EXPECT_TRUE(r.second > 0); EXPECT_TRUE(FeatureStore::RefType(r2).offset() > FeatureStore::RefType(r1).offset()); - EXPECT_EQUAL(0u, FeatureStore::RefType(r1).bufferId()); + EXPECT_EQ(0u, FeatureStore::RefType(r1).bufferId()); LOG(info, "bits(%" PRIu64 "), ref.offset(%zu), ref.bufferId(%u)", r.second, FeatureStore::RefType(r2).offset(), FeatureStore::RefType(r2).bufferId()); fs.getFeatures(1, r2, act); - EXPECT_TRUE(assertFeatures(f, act)); + ASSERT_NO_FATAL_FAILURE(assertFeatures(f, act)); } } - -void -Test::requireThatNextWordsAreWorking() +TEST_F(FeatureStoreTest, next_words_are_working) { - FeatureStore fs(getSchema()); DocIdAndFeatures act; EntryRef r1; EntryRef r2; @@ -142,9 +131,9 @@ Test::requireThatNextWordsAreWorking() r = fs.addFeatures(0, f); r1 = r.first; EXPECT_TRUE(r.second > 0); - EXPECT_EQUAL(FeatureStore::RefType::align(1u), - FeatureStore::RefType(r1).offset()); - EXPECT_EQUAL(0u, FeatureStore::RefType(r1).bufferId()); + EXPECT_EQ(FeatureStore::RefType::align(1u), + FeatureStore::RefType(r1).offset()); + EXPECT_EQ(0u, FeatureStore::RefType(r1).bufferId()); LOG(info, "bits(%" PRIu64 "), ref.offset(%zu), ref.bufferId(%u)", r.second, @@ -152,7 +141,7 @@ Test::requireThatNextWordsAreWorking() FeatureStore::RefType(r1).bufferId()); fs.getFeatures(0, r1, act); // weight not encoded for single value - EXPECT_TRUE(assertFeatures(getFeatures(2, 1, 8), act)); + ASSERT_NO_FATAL_FAILURE(assertFeatures(getFeatures(2, 1, 8), act)); } { DocIdAndFeatures f = getFeatures(4, 8, 16); @@ -161,22 +150,19 @@ Test::requireThatNextWordsAreWorking() EXPECT_TRUE(r.second > 0); EXPECT_TRUE(FeatureStore::RefType(r2).offset() > FeatureStore::RefType(r1).offset()); - EXPECT_EQUAL(0u, FeatureStore::RefType(r1).bufferId()); + EXPECT_EQ(0u, FeatureStore::RefType(r1).bufferId()); LOG(info, "bits(%" PRIu64 "), ref.offset(%zu), ref.bufferId(%u)", r.second, FeatureStore::RefType(r2).offset(), FeatureStore::RefType(r2).bufferId()); fs.getFeatures(1, r2, act); - EXPECT_TRUE(assertFeatures(f, act)); + ASSERT_NO_FATAL_FAILURE(assertFeatures(f, act)); } } - -void -Test::requireThatAddFeaturesTriggersChangeOfBuffer() +TEST_F(FeatureStoreTest, add_features_triggers_change_of_buffer) { - FeatureStore fs(getSchema()); size_t cnt = 1; DocIdAndFeatures act; uint32_t lastId = 0; @@ -185,7 +171,7 @@ Test::requireThatAddFeaturesTriggersChangeOfBuffer() DocIdAndFeatures f = getFeatures(numOccs, 1, numOccs + 1); std::pair<EntryRef, uint64_t> r = fs.addFeatures(0, f); fs.getFeatures(0, r.first, act); - EXPECT_TRUE(assertFeatures(f, act)); + ASSERT_NO_FATAL_FAILURE(assertFeatures(f, act)); uint32_t bufferId = FeatureStore::RefType(r.first).bufferId(); if (bufferId > lastId) { LOG(info, @@ -197,36 +183,10 @@ Test::requireThatAddFeaturesTriggersChangeOfBuffer() break; } } - EXPECT_EQUAL(1u, lastId); + EXPECT_EQ(1u, lastId); LOG(info, "Added %zu feature sets in 1 buffer", cnt); } - -Test::Test() - : _schema() -{ - _schema.addIndexField(Schema::IndexField("f0", DataType::STRING)); - _schema.addIndexField(Schema::IndexField("f1", DataType::STRING, CollectionType::WEIGHTEDSET)); } - -int -Test::Main() -{ - TEST_INIT("feature_store_test"); - - requireThatFeaturesCanBeAddedAndRetrieved(); - requireThatNextWordsAreWorking(); - requireThatAddFeaturesTriggersChangeOfBuffer(); - - TEST_DONE(); -} - - -} - - -} - - -TEST_APPHOOK(search::memoryindex::Test); +GTEST_MAIN_RUN_ALL_TESTS() diff --git a/searchlib/src/tests/memoryindex/datastore/word_store_test.cpp b/searchlib/src/tests/memoryindex/datastore/word_store_test.cpp index b7f454bfdf7..86365287b29 100644 --- a/searchlib/src/tests/memoryindex/datastore/word_store_test.cpp +++ b/searchlib/src/tests/memoryindex/datastore/word_store_test.cpp @@ -1,24 +1,15 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include <vespa/searchlib/memoryindex/word_store.h> +#include <vespa/vespalib/gtest/gtest.h> + #include <vespa/log/log.h> LOG_SETUP("word_store_test"); -#include <vespa/vespalib/testkit/testapp.h> -#include <vespa/searchlib/memoryindex/word_store.h> using namespace search::datastore; -namespace search { -namespace memoryindex { +namespace search::memoryindex { -class Test : public vespalib::TestApp { -private: - void requireThatWordsCanBeAddedAndRetrieved(); - void requireThatAddWordTriggersChangeOfBuffer(); -public: - int Main() override; -}; - -void -Test::requireThatWordsCanBeAddedAndRetrieved() +TEST(WordStoreTest, words_can_be_added_and_retrieved) { std::string w1 = "require"; std::string w2 = "that"; @@ -32,19 +23,18 @@ Test::requireThatWordsCanBeAddedAndRetrieved() uint32_t w1p = WordStore::RefType::pad(w1s); uint32_t w2s = w2.size() + 1; uint32_t w2p = WordStore::RefType::pad(w2s); - EXPECT_EQUAL(invp, WordStore::RefType(r1).offset()); - EXPECT_EQUAL(invp + w1s + w1p, WordStore::RefType(r2).offset()); - EXPECT_EQUAL(invp + w1s + w1p + w2s + w2p, WordStore::RefType(r3).offset()); - EXPECT_EQUAL(0u, WordStore::RefType(r1).bufferId()); - EXPECT_EQUAL(0u, WordStore::RefType(r2).bufferId()); - EXPECT_EQUAL(0u, WordStore::RefType(r3).bufferId()); - EXPECT_EQUAL(std::string("require"), ws.getWord(r1)); - EXPECT_EQUAL(std::string("that"), ws.getWord(r2)); - EXPECT_EQUAL(std::string("words"), ws.getWord(r3)); + EXPECT_EQ(invp, WordStore::RefType(r1).offset()); + EXPECT_EQ(invp + w1s + w1p, WordStore::RefType(r2).offset()); + EXPECT_EQ(invp + w1s + w1p + w2s + w2p, WordStore::RefType(r3).offset()); + EXPECT_EQ(0u, WordStore::RefType(r1).bufferId()); + EXPECT_EQ(0u, WordStore::RefType(r2).bufferId()); + EXPECT_EQ(0u, WordStore::RefType(r3).bufferId()); + EXPECT_EQ(std::string("require"), ws.getWord(r1)); + EXPECT_EQ(std::string("that"), ws.getWord(r2)); + EXPECT_EQ(std::string("words"), ws.getWord(r3)); } -void -Test::requireThatAddWordTriggersChangeOfBuffer() +TEST(WordStoreTest, add_word_triggers_change_of_buffer) { WordStore ws; size_t word = 0; @@ -54,7 +44,7 @@ Test::requireThatAddWordTriggersChangeOfBuffer() sprintf(wordStr, "%6zu", word); // all words uses 12 bytes (include padding) EntryRef r = ws.addWord(std::string(wordStr)); - EXPECT_EQUAL(std::string(wordStr), ws.getWord(r)); + EXPECT_EQ(std::string(wordStr), ws.getWord(r)); uint32_t bufferId = WordStore::RefType(r).bufferId(); if (bufferId > lastId) { LOG(info, @@ -68,23 +58,11 @@ Test::requireThatAddWordTriggersChangeOfBuffer() } } LOG(info, "Added %zu words in 4 buffers", word); - EXPECT_EQUAL(2047u, word); - EXPECT_EQUAL(4u, lastId); -} - -int -Test::Main() -{ - TEST_INIT("word_store_test"); - - requireThatWordsCanBeAddedAndRetrieved(); - requireThatAddWordTriggersChangeOfBuffer(); - - TEST_DONE(); + EXPECT_EQ(2047u, word); + EXPECT_EQ(4u, lastId); } } -} -TEST_APPHOOK(search::memoryindex::Test); +GTEST_MAIN_RUN_ALL_TESTS() diff --git a/searchlib/src/tests/memoryindex/document_inverter/CMakeLists.txt b/searchlib/src/tests/memoryindex/document_inverter/CMakeLists.txt index 1058a19d0ce..ecf33ee48fd 100644 --- a/searchlib/src/tests/memoryindex/document_inverter/CMakeLists.txt +++ b/searchlib/src/tests/memoryindex/document_inverter/CMakeLists.txt @@ -5,5 +5,6 @@ vespa_add_executable(searchlib_document_inverter_test_app TEST DEPENDS searchlib_test searchlib + gtest ) vespa_add_test(NAME searchlib_document_inverter_test_app COMMAND searchlib_document_inverter_test_app) diff --git a/searchlib/src/tests/memoryindex/document_inverter/document_inverter_test.cpp b/searchlib/src/tests/memoryindex/document_inverter/document_inverter_test.cpp index 08645f38712..38862dfe94b 100644 --- a/searchlib/src/tests/memoryindex/document_inverter/document_inverter_test.cpp +++ b/searchlib/src/tests/memoryindex/document_inverter/document_inverter_test.cpp @@ -1,7 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -/* -*- mode: C++; coding: utf-8; -*- */ - +#include <vespa/searchlib/common/sequencedtaskexecutor.h> #include <vespa/searchlib/index/docbuilder.h> #include <vespa/searchlib/index/field_length_calculator.h> #include <vespa/searchlib/memoryindex/document_inverter.h> @@ -10,8 +9,7 @@ #include <vespa/searchlib/memoryindex/i_field_index_collection.h> #include <vespa/searchlib/memoryindex/word_store.h> #include <vespa/searchlib/test/memoryindex/ordered_field_index_inserter.h> -#include <vespa/searchlib/common/sequencedtaskexecutor.h> -#include <vespa/vespalib/testkit/testapp.h> +#include <vespa/vespalib/gtest/gtest.h> namespace search { @@ -37,7 +35,6 @@ makeDoc10(DocBuilder &b) return b.endDocument(); } - Document::UP makeDoc11(DocBuilder &b) { @@ -51,7 +48,6 @@ makeDoc11(DocBuilder &b) return b.endDocument(); } - Document::UP makeDoc12(DocBuilder &b) { @@ -62,7 +58,6 @@ makeDoc12(DocBuilder &b) return b.endDocument(); } - Document::UP makeDoc13(DocBuilder &b) { @@ -73,7 +68,6 @@ makeDoc13(DocBuilder &b) return b.endDocument(); } - Document::UP makeDoc14(DocBuilder &b) { @@ -84,7 +78,6 @@ makeDoc14(DocBuilder &b) return b.endDocument(); } - Document::UP makeDoc15(DocBuilder &b) { @@ -94,8 +87,7 @@ makeDoc15(DocBuilder &b) } -class MockFieldIndexCollection : public IFieldIndexCollection -{ +class MockFieldIndexCollection : public IFieldIndexCollection { FieldIndexRemover &_remover; test::OrderedFieldIndexInserter &_inserter; FieldLengthCalculator &_calculator; @@ -122,8 +114,7 @@ public: }; -struct Fixture -{ +struct DocumentInverterTest : public ::testing::Test { Schema _schema; DocBuilder _b; SequencedTaskExecutor _invertThreads; @@ -135,9 +126,7 @@ struct Fixture MockFieldIndexCollection _fic; DocumentInverter _inv; - static Schema - makeSchema() - { + static Schema makeSchema() { Schema schema; schema.addIndexField(Schema::IndexField("f0", DataType::STRING)); schema.addIndexField(Schema::IndexField("f1", DataType::STRING)); @@ -146,7 +135,7 @@ struct Fixture return schema; } - Fixture() + DocumentInverterTest() : _schema(makeSchema()), _b(_schema), _invertThreads(2), @@ -160,9 +149,7 @@ struct Fixture { } - void - pushDocuments() - { + void pushDocuments() { _invertThreads.sync(); uint32_t fieldId = 0; for (auto &inverter : _inv.getInverters()) { @@ -174,153 +161,143 @@ struct Fixture } }; - -TEST_F("requireThatFreshInsertWorks", Fixture) +TEST_F(DocumentInverterTest, require_that_fresh_insert_works) { - f._inv.invertDocument(10, *makeDoc10(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=10," - "w=b,a=10," - "w=c,a=10," - "w=d,a=10", - f._inserter.toStr()); + _inv.invertDocument(10, *makeDoc10(_b)); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=10," + "w=b,a=10," + "w=c,a=10," + "w=d,a=10", + _inserter.toStr()); } - -TEST_F("requireThatMultipleDocsWork", Fixture) +TEST_F(DocumentInverterTest, require_that_multiple_docs_work) { - f._inv.invertDocument(10, *makeDoc10(f._b)); - f._inv.invertDocument(11, *makeDoc11(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=10,a=11," - "w=b,a=10,a=11," - "w=c,a=10,w=d,a=10," - "w=e,a=11," - "w=f,a=11," - "f=1,w=a,a=11," - "w=g,a=11", - f._inserter.toStr()); + _inv.invertDocument(10, *makeDoc10(_b)); + _inv.invertDocument(11, *makeDoc11(_b)); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=10,a=11," + "w=b,a=10,a=11," + "w=c,a=10,w=d,a=10," + "w=e,a=11," + "w=f,a=11," + "f=1,w=a,a=11," + "w=g,a=11", + _inserter.toStr()); } - -TEST_F("requireThatRemoveWorks", Fixture) +TEST_F(DocumentInverterTest, require_that_remove_works) { - f._inv.getInverter(0)->remove("b", 10); - f._inv.getInverter(0)->remove("a", 10); - f._inv.getInverter(0)->remove("b", 11); - f._inv.getInverter(2)->remove("c", 12); - f._inv.getInverter(1)->remove("a", 10); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,r=10," - "w=b,r=10,r=11," - "f=1,w=a,r=10," - "f=2,w=c,r=12", - f._inserter.toStr()); + _inv.getInverter(0)->remove("b", 10); + _inv.getInverter(0)->remove("a", 10); + _inv.getInverter(0)->remove("b", 11); + _inv.getInverter(2)->remove("c", 12); + _inv.getInverter(1)->remove("a", 10); + pushDocuments(); + EXPECT_EQ("f=0,w=a,r=10," + "w=b,r=10,r=11," + "f=1,w=a,r=10," + "f=2,w=c,r=12", + _inserter.toStr()); } - -TEST_F("requireThatReputWorks", Fixture) +TEST_F(DocumentInverterTest, require_that_reput_works) { - f._inv.invertDocument(10, *makeDoc10(f._b)); - f._inv.invertDocument(10, *makeDoc11(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=10," - "w=b,a=10," - "w=e,a=10," - "w=f,a=10," - "f=1,w=a,a=10," - "w=g,a=10", - f._inserter.toStr()); + _inv.invertDocument(10, *makeDoc10(_b)); + _inv.invertDocument(10, *makeDoc11(_b)); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=10," + "w=b,a=10," + "w=e,a=10," + "w=f,a=10," + "f=1,w=a,a=10," + "w=g,a=10", + _inserter.toStr()); } - -TEST_F("requireThatAbortPendingDocWorks", Fixture) +TEST_F(DocumentInverterTest, require_that_abort_pending_doc_works) { - Document::UP doc10 = makeDoc10(f._b); - Document::UP doc11 = makeDoc11(f._b); - Document::UP doc12 = makeDoc12(f._b); - Document::UP doc13 = makeDoc13(f._b); - Document::UP doc14 = makeDoc14(f._b); - - f._inv.invertDocument(10, *doc10); - f._inv.invertDocument(11, *doc11); - f._inv.removeDocument(10); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=11," - "w=b,a=11," - "w=e,a=11," - "w=f,a=11," - "f=1,w=a,a=11," - "w=g,a=11", - f._inserter.toStr()); - - f._inv.invertDocument(10, *doc10); - f._inv.invertDocument(11, *doc11); - f._inv.invertDocument(12, *doc12); - f._inv.invertDocument(13, *doc13); - f._inv.invertDocument(14, *doc14); - f._inv.removeDocument(11); - f._inv.removeDocument(13); - f._inserter.reset(); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=10," - "w=b,a=10," - "w=c,a=10," - "w=d,a=10," - "w=doc12,a=12," - "w=doc14,a=14," - "w=h,a=12," - "w=j,a=14", - f._inserter.toStr()); - - f._inv.invertDocument(10, *doc10); - f._inv.invertDocument(11, *doc11); - f._inv.invertDocument(12, *doc12); - f._inv.invertDocument(13, *doc13); - f._inv.invertDocument(14, *doc14); - f._inv.removeDocument(11); - f._inv.removeDocument(12); - f._inv.removeDocument(13); - f._inv.removeDocument(14); - f._inserter.reset(); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=10," - "w=b,a=10," - "w=c,a=10," - "w=d,a=10", - f._inserter.toStr()); - - + auto doc10 = makeDoc10(_b); + auto doc11 = makeDoc11(_b); + auto doc12 = makeDoc12(_b); + auto doc13 = makeDoc13(_b); + auto doc14 = makeDoc14(_b); + + _inv.invertDocument(10, *doc10); + _inv.invertDocument(11, *doc11); + _inv.removeDocument(10); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=11," + "w=b,a=11," + "w=e,a=11," + "w=f,a=11," + "f=1,w=a,a=11," + "w=g,a=11", + _inserter.toStr()); + + _inv.invertDocument(10, *doc10); + _inv.invertDocument(11, *doc11); + _inv.invertDocument(12, *doc12); + _inv.invertDocument(13, *doc13); + _inv.invertDocument(14, *doc14); + _inv.removeDocument(11); + _inv.removeDocument(13); + _inserter.reset(); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=10," + "w=b,a=10," + "w=c,a=10," + "w=d,a=10," + "w=doc12,a=12," + "w=doc14,a=14," + "w=h,a=12," + "w=j,a=14", + _inserter.toStr()); + + _inv.invertDocument(10, *doc10); + _inv.invertDocument(11, *doc11); + _inv.invertDocument(12, *doc12); + _inv.invertDocument(13, *doc13); + _inv.invertDocument(14, *doc14); + _inv.removeDocument(11); + _inv.removeDocument(12); + _inv.removeDocument(13); + _inv.removeDocument(14); + _inserter.reset(); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=10," + "w=b,a=10," + "w=c,a=10," + "w=d,a=10", + _inserter.toStr()); } - -TEST_F("requireThatMixOfAddAndRemoveWorks", Fixture) +TEST_F(DocumentInverterTest, require_that_mix_of_add_and_remove_works) { - f._inv.getInverter(0)->remove("a", 11); - f._inv.getInverter(0)->remove("c", 9); - f._inv.getInverter(0)->remove("d", 10); - f._inv.getInverter(0)->remove("z", 12); - f._inv.invertDocument(10, *makeDoc10(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=10,r=11," - "w=b,a=10," - "w=c,r=9,a=10," - "w=d,r=10,a=10," - "w=z,r=12", - f._inserter.toStr()); + _inv.getInverter(0)->remove("a", 11); + _inv.getInverter(0)->remove("c", 9); + _inv.getInverter(0)->remove("d", 10); + _inv.getInverter(0)->remove("z", 12); + _inv.invertDocument(10, *makeDoc10(_b)); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=10,r=11," + "w=b,a=10," + "w=c,r=9,a=10," + "w=d,r=10,a=10," + "w=z,r=12", + _inserter.toStr()); } - -TEST_F("require that empty document can be inverted", Fixture) +TEST_F(DocumentInverterTest, require_that_empty_document_can_be_inverted) { - f._inv.invertDocument(15, *makeDoc15(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("", - f._inserter.toStr()); + _inv.invertDocument(15, *makeDoc15(_b)); + pushDocuments(); + EXPECT_EQ("", + _inserter.toStr()); } +} +} -} // namespace memoryindex -} // namespace search - -TEST_MAIN() { TEST_RUN_ALL(); } +GTEST_MAIN_RUN_ALL_TESTS() diff --git a/searchlib/src/tests/memoryindex/field_index_remover/CMakeLists.txt b/searchlib/src/tests/memoryindex/field_index_remover/CMakeLists.txt index ef75337c6b6..f18b4ba29cd 100644 --- a/searchlib/src/tests/memoryindex/field_index_remover/CMakeLists.txt +++ b/searchlib/src/tests/memoryindex/field_index_remover/CMakeLists.txt @@ -4,5 +4,6 @@ vespa_add_executable(searchlib_field_index_remover_test_app TEST field_index_remover_test.cpp DEPENDS searchlib + gtest ) vespa_add_test(NAME searchlib_field_index_remover_test_app COMMAND searchlib_field_index_remover_test_app) diff --git a/searchlib/src/tests/memoryindex/field_index_remover/field_index_remover_test.cpp b/searchlib/src/tests/memoryindex/field_index_remover/field_index_remover_test.cpp index fed6d963b70..c0e8871b80a 100644 --- a/searchlib/src/tests/memoryindex/field_index_remover/field_index_remover_test.cpp +++ b/searchlib/src/tests/memoryindex/field_index_remover/field_index_remover_test.cpp @@ -1,10 +1,9 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/vespalib/testkit/testapp.h> - #include <vespa/searchlib/memoryindex/field_index_remover.h> #include <vespa/searchlib/memoryindex/i_field_index_remove_listener.h> #include <vespa/searchlib/memoryindex/word_store.h> +#include <vespa/vespalib/gtest/gtest.h> #include <vespa/vespalib/test/insertion_operators.h> #include <algorithm> @@ -14,8 +13,7 @@ LOG_SETUP("document_remover_test"); using namespace search; using namespace search::memoryindex; -struct WordFieldPair -{ +struct WordFieldPair { vespalib::string _word; uint32_t _fieldId; WordFieldPair(vespalib::stringref word, uint32_t fieldId) @@ -29,7 +27,7 @@ struct WordFieldPair } }; -typedef std::vector<WordFieldPair> WordFieldVector; +using WordFieldVector = std::vector<WordFieldPair>; std::ostream & operator<<(std::ostream &os, const WordFieldPair &val) @@ -38,13 +36,12 @@ operator<<(std::ostream &os, const WordFieldPair &val) return os; } -struct MockRemoveListener : public IFieldIndexRemoveListener -{ +struct MockRemoveListener : public IFieldIndexRemoveListener { WordFieldVector _words; uint32_t _expDocId; uint32_t _fieldId; virtual void remove(const vespalib::stringref word, uint32_t docId) override { - EXPECT_EQUAL(_expDocId, docId); + EXPECT_EQ(_expDocId, docId); _words.emplace_back(word, _fieldId); } void reset(uint32_t expDocId) { @@ -60,13 +57,13 @@ struct MockRemoveListener : public IFieldIndexRemoveListener void setFieldId(uint32_t fieldId) { _fieldId = fieldId; } }; -struct Fixture -{ +struct FieldIndexRemoverTest : public ::testing::Test { MockRemoveListener _listener; std::vector<std::unique_ptr<WordStore>> _wordStores; std::vector<std::map<vespalib::string, datastore::EntryRef>> _wordToRefMaps; std::vector<std::unique_ptr<FieldIndexRemover>> _removers; - Fixture() + + FieldIndexRemoverTest() : _listener(), _wordStores(), _wordToRefMaps(), @@ -91,7 +88,7 @@ struct Fixture } return itr->second; } - Fixture &insert(const vespalib::string &word, uint32_t fieldId, uint32_t docId) { + FieldIndexRemoverTest &insert(const vespalib::string &word, uint32_t fieldId, uint32_t docId) { assert(fieldId < _wordStores.size()); _removers[fieldId]->insert(getWordRef(word, fieldId), docId); return *this; @@ -113,32 +110,31 @@ struct Fixture } }; -TEST_F("require that {word,fieldId} pairs for multiple doc ids can be inserted", Fixture) +TEST_F(FieldIndexRemoverTest, word_field_id_pairs_for_multiple_doc_ids_can_be_inserted) { - f.insert("a", 1, 10).insert("a", 1, 20).insert("a", 1, 30); - f.insert("a", 2, 10).insert("a", 2, 20); - f.insert("b", 1, 20).insert("b", 1, 30); - f.insert("b", 2, 10).insert("b", 2, 30); - f.insert("c", 1, 10); - f.insert("c", 2, 20); - f.insert("c", 3, 30); - f.flush(); + insert("a", 1, 10).insert("a", 1, 20).insert("a", 1, 30); + insert("a", 2, 10).insert("a", 2, 20); + insert("b", 1, 20).insert("b", 1, 30); + insert("b", 2, 10).insert("b", 2, 30); + insert("c", 1, 10); + insert("c", 2, 20); + insert("c", 3, 30); + flush(); - EXPECT_EQUAL("[{a,1},{a,2},{b,2},{c,1}]", f.remove(10)); - EXPECT_EQUAL("[{a,1},{a,2},{b,1},{c,2}]", f.remove(20)); - EXPECT_EQUAL("[{a,1},{b,1},{b,2},{c,3}]", f.remove(30)); + EXPECT_EQ("[{a,1},{a,2},{b,2},{c,1}]", remove(10)); + EXPECT_EQ("[{a,1},{a,2},{b,1},{c,2}]", remove(20)); + EXPECT_EQ("[{a,1},{b,1},{b,2},{c,3}]", remove(30)); } -TEST_F("require that we can insert after flush", Fixture) +TEST_F(FieldIndexRemoverTest, we_can_insert_after_flush) { - f.insert("a", 1, 10).insert("b", 1, 10); - f.flush(); - f.insert("b", 1, 20).insert("b", 2, 20); - f.flush(); + insert("a", 1, 10).insert("b", 1, 10); + flush(); + insert("b", 1, 20).insert("b", 2, 20); + flush(); - EXPECT_EQUAL("[{a,1},{b,1}]", f.remove(10)); - EXPECT_EQUAL("[{b,1},{b,2}]", f.remove(20)); + EXPECT_EQ("[{a,1},{b,1}]", remove(10)); + EXPECT_EQ("[{b,1},{b,2}]", remove(20)); } - -TEST_MAIN() { TEST_RUN_ALL(); } +GTEST_MAIN_RUN_ALL_TESTS() diff --git a/searchlib/src/tests/memoryindex/field_inverter/CMakeLists.txt b/searchlib/src/tests/memoryindex/field_inverter/CMakeLists.txt index f39e05d6823..6fefada6570 100644 --- a/searchlib/src/tests/memoryindex/field_inverter/CMakeLists.txt +++ b/searchlib/src/tests/memoryindex/field_inverter/CMakeLists.txt @@ -5,5 +5,6 @@ vespa_add_executable(searchlib_field_inverter_test_app TEST DEPENDS searchlib_test searchlib + gtest ) vespa_add_test(NAME searchlib_field_inverter_test_app COMMAND searchlib_field_inverter_test_app) diff --git a/searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp b/searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp index ff0629d2172..72a8f6ed239 100644 --- a/searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp +++ b/searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp @@ -7,7 +7,7 @@ #include <vespa/searchlib/memoryindex/field_inverter.h> #include <vespa/searchlib/memoryindex/word_store.h> #include <vespa/searchlib/test/memoryindex/ordered_field_index_inserter.h> -#include <vespa/vespalib/testkit/testapp.h> +#include <vespa/vespalib/gtest/gtest.h> namespace search { @@ -21,10 +21,8 @@ using namespace index; namespace memoryindex { - namespace { - Document::UP makeDoc10(DocBuilder &b) { @@ -35,7 +33,6 @@ makeDoc10(DocBuilder &b) return b.endDocument(); } - Document::UP makeDoc11(DocBuilder &b) { @@ -49,7 +46,6 @@ makeDoc11(DocBuilder &b) return b.endDocument(); } - Document::UP makeDoc12(DocBuilder &b) { @@ -60,7 +56,6 @@ makeDoc12(DocBuilder &b) return b.endDocument(); } - Document::UP makeDoc13(DocBuilder &b) { @@ -71,7 +66,6 @@ makeDoc13(DocBuilder &b) return b.endDocument(); } - Document::UP makeDoc14(DocBuilder &b) { @@ -82,7 +76,6 @@ makeDoc14(DocBuilder &b) return b.endDocument(); } - Document::UP makeDoc15(DocBuilder &b) { @@ -90,7 +83,6 @@ makeDoc15(DocBuilder &b) return b.endDocument(); } - Document::UP makeDoc16(DocBuilder &b) { @@ -113,8 +105,7 @@ makeDoc17(DocBuilder &b) } -struct Fixture -{ +struct FieldInverterTest : public ::testing::Test { Schema _schema; DocBuilder _b; WordStore _word_store; @@ -123,9 +114,7 @@ struct Fixture std::vector<std::unique_ptr<FieldLengthCalculator>> _calculators; std::vector<std::unique_ptr<FieldInverter> > _inverters; - static Schema - makeSchema() - { + static Schema makeSchema() { Schema schema; schema.addIndexField(Schema::IndexField("f0", DataType::STRING)); schema.addIndexField(Schema::IndexField("f1", DataType::STRING)); @@ -134,7 +123,7 @@ struct Fixture return schema; } - Fixture() + FieldInverterTest() : _schema(makeSchema()), _b(_schema), _word_store(), @@ -154,9 +143,7 @@ struct Fixture } } - void - invertDocument(uint32_t docId, const Document &doc) - { + void invertDocument(uint32_t docId, const Document &doc) { uint32_t fieldId = 0; for (auto &inverter : _inverters) { vespalib::stringref fieldName = @@ -166,9 +153,7 @@ struct Fixture } } - void - pushDocuments() - { + void pushDocuments() { uint32_t fieldId = 0; for (auto &inverter : _inverters) { _inserter.setFieldId(fieldId); @@ -177,218 +162,207 @@ struct Fixture } } - void - removeDocument(uint32_t docId) { + void removeDocument(uint32_t docId) { for (auto &inverter : _inverters) { inverter->removeDocument(docId); } } void assert_calculator(uint32_t field_id, double exp_avg, uint32_t exp_samples) { - double epsilon = 0.000000001; const auto &calc = *_calculators[field_id]; - EXPECT_APPROX(exp_avg, calc.get_average_field_length(), epsilon); - EXPECT_EQUAL(exp_samples, calc.get_num_samples()); + EXPECT_DOUBLE_EQ(exp_avg, calc.get_average_field_length()); + EXPECT_EQ(exp_samples, calc.get_num_samples()); } }; - -TEST_F("requireThatFreshInsertWorks", Fixture) +TEST_F(FieldInverterTest, require_that_fresh_insert_works) { - f.invertDocument(10, *makeDoc10(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=10," - "w=b,a=10," - "w=c,a=10," - "w=d,a=10", - f._inserter.toStr()); + invertDocument(10, *makeDoc10(_b)); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=10," + "w=b,a=10," + "w=c,a=10," + "w=d,a=10", + _inserter.toStr()); } - -TEST_F("requireThatMultipleDocsWork", Fixture) +TEST_F(FieldInverterTest, require_that_multiple_docs_work) { - f.invertDocument(10, *makeDoc10(f._b)); - f.invertDocument(11, *makeDoc11(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=10,a=11," - "w=b,a=10,a=11," - "w=c,a=10,w=d,a=10," - "w=e,a=11," - "w=f,a=11," - "f=1,w=a,a=11," - "w=g,a=11", - f._inserter.toStr()); + invertDocument(10, *makeDoc10(_b)); + invertDocument(11, *makeDoc11(_b)); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=10,a=11," + "w=b,a=10,a=11," + "w=c,a=10,w=d,a=10," + "w=e,a=11," + "w=f,a=11," + "f=1,w=a,a=11," + "w=g,a=11", + _inserter.toStr()); } - -TEST_F("requireThatRemoveWorks", Fixture) +TEST_F(FieldInverterTest, require_that_remove_works) { - f._inverters[0]->remove("b", 10); - f._inverters[0]->remove("a", 10); - f._inverters[0]->remove("b", 11); - f._inverters[2]->remove("c", 12); - f._inverters[1]->remove("a", 10); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,r=10," - "w=b,r=10,r=11," - "f=1,w=a,r=10," - "f=2,w=c,r=12", - f._inserter.toStr()); + _inverters[0]->remove("b", 10); + _inverters[0]->remove("a", 10); + _inverters[0]->remove("b", 11); + _inverters[2]->remove("c", 12); + _inverters[1]->remove("a", 10); + pushDocuments(); + EXPECT_EQ("f=0,w=a,r=10," + "w=b,r=10,r=11," + "f=1,w=a,r=10," + "f=2,w=c,r=12", + _inserter.toStr()); } - -TEST_F("requireThatReputWorks", Fixture) +TEST_F(FieldInverterTest, require_that_reput_works) { - f.invertDocument(10, *makeDoc10(f._b)); - f.invertDocument(10, *makeDoc11(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=10," - "w=b,a=10," - "w=e,a=10," - "w=f,a=10," - "f=1,w=a,a=10," - "w=g,a=10", - f._inserter.toStr()); + invertDocument(10, *makeDoc10(_b)); + invertDocument(10, *makeDoc11(_b)); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=10," + "w=b,a=10," + "w=e,a=10," + "w=f,a=10," + "f=1,w=a,a=10," + "w=g,a=10", + _inserter.toStr()); } - -TEST_F("requireThatAbortPendingDocWorks", Fixture) +TEST_F(FieldInverterTest, require_that_abort_pending_doc_works) { - Document::UP doc10 = makeDoc10(f._b); - Document::UP doc11 = makeDoc11(f._b); - Document::UP doc12 = makeDoc12(f._b); - Document::UP doc13 = makeDoc13(f._b); - Document::UP doc14 = makeDoc14(f._b); - - f.invertDocument(10, *doc10); - f.invertDocument(11, *doc11); - f.removeDocument(10); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=11," - "w=b,a=11," - "w=e,a=11," - "w=f,a=11," - "f=1,w=a,a=11," - "w=g,a=11", - f._inserter.toStr()); - - f.invertDocument(10, *doc10); - f.invertDocument(11, *doc11); - f.invertDocument(12, *doc12); - f.invertDocument(13, *doc13); - f.invertDocument(14, *doc14); - f.removeDocument(11); - f.removeDocument(13); - f._inserter.reset(); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=10," - "w=b,a=10," - "w=c,a=10," - "w=d,a=10," - "w=doc12,a=12," - "w=doc14,a=14," - "w=h,a=12," - "w=j,a=14", - f._inserter.toStr()); - - f.invertDocument(10, *doc10); - f.invertDocument(11, *doc11); - f.invertDocument(12, *doc12); - f.invertDocument(13, *doc13); - f.invertDocument(14, *doc14); - f.removeDocument(11); - f.removeDocument(12); - f.removeDocument(13); - f.removeDocument(14); - f._inserter.reset(); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=10," - "w=b,a=10," - "w=c,a=10," - "w=d,a=10", - f._inserter.toStr()); - - + auto doc10 = makeDoc10(_b); + auto doc11 = makeDoc11(_b); + auto doc12 = makeDoc12(_b); + auto doc13 = makeDoc13(_b); + auto doc14 = makeDoc14(_b); + + invertDocument(10, *doc10); + invertDocument(11, *doc11); + removeDocument(10); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=11," + "w=b,a=11," + "w=e,a=11," + "w=f,a=11," + "f=1,w=a,a=11," + "w=g,a=11", + _inserter.toStr()); + + invertDocument(10, *doc10); + invertDocument(11, *doc11); + invertDocument(12, *doc12); + invertDocument(13, *doc13); + invertDocument(14, *doc14); + removeDocument(11); + removeDocument(13); + _inserter.reset(); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=10," + "w=b,a=10," + "w=c,a=10," + "w=d,a=10," + "w=doc12,a=12," + "w=doc14,a=14," + "w=h,a=12," + "w=j,a=14", + _inserter.toStr()); + + invertDocument(10, *doc10); + invertDocument(11, *doc11); + invertDocument(12, *doc12); + invertDocument(13, *doc13); + invertDocument(14, *doc14); + removeDocument(11); + removeDocument(12); + removeDocument(13); + removeDocument(14); + _inserter.reset(); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=10," + "w=b,a=10," + "w=c,a=10," + "w=d,a=10", + _inserter.toStr()); } - -TEST_F("requireThatMixOfAddAndRemoveWorks", Fixture) +TEST_F(FieldInverterTest, require_that_mix_of_add_and_remove_works) { - f._inverters[0]->remove("a", 11); - f._inverters[0]->remove("c", 9); - f._inverters[0]->remove("d", 10); - f._inverters[0]->remove("z", 12); - f.invertDocument(10, *makeDoc10(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0,w=a,a=10,r=11," - "w=b,a=10," - "w=c,r=9,a=10," - "w=d,r=10,a=10," - "w=z,r=12", - f._inserter.toStr()); + _inverters[0]->remove("a", 11); + _inverters[0]->remove("c", 9); + _inverters[0]->remove("d", 10); + _inverters[0]->remove("z", 12); + invertDocument(10, *makeDoc10(_b)); + pushDocuments(); + EXPECT_EQ("f=0,w=a,a=10,r=11," + "w=b,a=10," + "w=c,r=9,a=10," + "w=d,r=10,a=10," + "w=z,r=12", + _inserter.toStr()); } - -TEST_F("require that empty document can be inverted", Fixture) +TEST_F(FieldInverterTest, require_that_empty_document_can_be_inverted) { - f.invertDocument(15, *makeDoc15(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("", - f._inserter.toStr()); + invertDocument(15, *makeDoc15(_b)); + pushDocuments(); + EXPECT_EQ("", + _inserter.toStr()); } -TEST_F("require that multiple words at same position works", Fixture) +TEST_F(FieldInverterTest, require_that_multiple_words_at_same_position_works) { - f.invertDocument(16, *makeDoc16(f._b)); - f._inserter.setVerbose(); - f.pushDocuments(); - EXPECT_EQUAL("f=0," - "w=altbaz,a=16(e=0,w=1,l=5[2])," - "w=alty,a=16(e=0,w=1,l=5[3])," - "w=bar,a=16(e=0,w=1,l=5[1])," - "w=baz,a=16(e=0,w=1,l=5[2])," - "w=foo,a=16(e=0,w=1,l=5[0])," - "w=y,a=16(e=0,w=1,l=5[3])," - "w=z,a=16(e=0,w=1,l=5[4])", - f._inserter.toStr()); + invertDocument(16, *makeDoc16(_b)); + _inserter.setVerbose(); + pushDocuments(); + EXPECT_EQ("f=0," + "w=altbaz,a=16(e=0,w=1,l=5[2])," + "w=alty,a=16(e=0,w=1,l=5[3])," + "w=bar,a=16(e=0,w=1,l=5[1])," + "w=baz,a=16(e=0,w=1,l=5[2])," + "w=foo,a=16(e=0,w=1,l=5[0])," + "w=y,a=16(e=0,w=1,l=5[3])," + "w=z,a=16(e=0,w=1,l=5[4])", + _inserter.toStr()); } -TEST_F("require that interleaved features are calculated", Fixture) +TEST_F(FieldInverterTest, require_that_interleaved_features_are_calculated) { - f.invertDocument(17, *makeDoc17(f._b)); - f._inserter.setVerbose(); - f._inserter.set_show_interleaved_features(); - f.pushDocuments(); - EXPECT_EQUAL("f=1," - "w=bar0,a=17(fl=2,occs=1,e=0,w=1,l=2[1])," - "w=foo0,a=17(fl=2,occs=1,e=0,w=1,l=2[0])," - "f=2," - "w=bar,a=17(fl=3,occs=2,e=0,w=1,l=2[1],e=1,w=1,l=1[0])," - "w=foo,a=17(fl=3,occs=1,e=0,w=1,l=2[0])," - "f=3," - "w=bar2,a=17(fl=3,occs=2,e=0,w=3,l=2[1],e=1,w=4,l=1[0])," - "w=foo2,a=17(fl=3,occs=1,e=0,w=3,l=2[0])", - f._inserter.toStr()); + invertDocument(17, *makeDoc17(_b)); + _inserter.setVerbose(); + _inserter.set_show_interleaved_features(); + pushDocuments(); + EXPECT_EQ("f=1," + "w=bar0,a=17(fl=2,occs=1,e=0,w=1,l=2[1])," + "w=foo0,a=17(fl=2,occs=1,e=0,w=1,l=2[0])," + "f=2," + "w=bar,a=17(fl=3,occs=2,e=0,w=1,l=2[1],e=1,w=1,l=1[0])," + "w=foo,a=17(fl=3,occs=1,e=0,w=1,l=2[0])," + "f=3," + "w=bar2,a=17(fl=3,occs=2,e=0,w=3,l=2[1],e=1,w=4,l=1[0])," + "w=foo2,a=17(fl=3,occs=1,e=0,w=3,l=2[0])", + _inserter.toStr()); } -TEST_F("require that average field length is calculated", Fixture) +TEST_F(FieldInverterTest, require_that_average_field_length_is_calculated) { - f.invertDocument(10, *makeDoc10(f._b)); - f.pushDocuments(); - TEST_DO(f.assert_calculator(0, 4.0, 1)); - TEST_DO(f.assert_calculator(1, 0.0, 0)); - f.invertDocument(11, *makeDoc11(f._b)); - f.pushDocuments(); - TEST_DO(f.assert_calculator(0, (4.0 + 4.0)/2, 2)); - TEST_DO(f.assert_calculator(1, 2.0, 1)); - f.invertDocument(12, *makeDoc12(f._b)); - f.pushDocuments(); - TEST_DO(f.assert_calculator(0, (4.0 + 4.0 + 2.0)/3, 3)); - TEST_DO(f.assert_calculator(1, 2.0, 1)); + invertDocument(10, *makeDoc10(_b)); + pushDocuments(); + assert_calculator(0, 4.0, 1); + assert_calculator(1, 0.0, 0); + invertDocument(11, *makeDoc11(_b)); + pushDocuments(); + assert_calculator(0, (4.0 + 4.0)/2, 2); + assert_calculator(1, 2.0, 1); + invertDocument(12, *makeDoc12(_b)); + pushDocuments(); + assert_calculator(0, (4.0 + 4.0 + 2.0)/3, 3); + assert_calculator(1, 2.0, 1); } -} // namespace memoryindex -} // namespace search +} +} -TEST_MAIN() { TEST_RUN_ALL(); } +GTEST_MAIN_RUN_ALL_TESTS() diff --git a/searchlib/src/tests/memoryindex/url_field_inverter/CMakeLists.txt b/searchlib/src/tests/memoryindex/url_field_inverter/CMakeLists.txt index 28efc8a861e..db9418b7190 100644 --- a/searchlib/src/tests/memoryindex/url_field_inverter/CMakeLists.txt +++ b/searchlib/src/tests/memoryindex/url_field_inverter/CMakeLists.txt @@ -5,5 +5,6 @@ vespa_add_executable(searchlib_url_field_inverter_test_app TEST DEPENDS searchlib_test searchlib + gtest ) vespa_add_test(NAME searchlib_url_field_inverter_test_app COMMAND searchlib_url_field_inverter_test_app) diff --git a/searchlib/src/tests/memoryindex/url_field_inverter/url_field_inverter_test.cpp b/searchlib/src/tests/memoryindex/url_field_inverter/url_field_inverter_test.cpp index 2ea13a20063..2151a44a66d 100644 --- a/searchlib/src/tests/memoryindex/url_field_inverter/url_field_inverter_test.cpp +++ b/searchlib/src/tests/memoryindex/url_field_inverter/url_field_inverter_test.cpp @@ -1,15 +1,14 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -/* -*- mode: C++; coding: utf-8; -*- */ #include <vespa/document/repo/fixedtyperepo.h> #include <vespa/searchlib/index/docbuilder.h> #include <vespa/searchlib/index/field_length_calculator.h> #include <vespa/searchlib/memoryindex/field_index_remover.h> #include <vespa/searchlib/memoryindex/field_inverter.h> -#include <vespa/searchlib/memoryindex/word_store.h> #include <vespa/searchlib/memoryindex/url_field_inverter.h> +#include <vespa/searchlib/memoryindex/word_store.h> #include <vespa/searchlib/test/memoryindex/ordered_field_index_inserter.h> -#include <vespa/vespalib/testkit/testapp.h> +#include <vespa/vespalib/gtest/gtest.h> namespace search { @@ -56,7 +55,6 @@ makeDoc10Single(DocBuilder &b) return b.endDocument(); } - Document::UP makeDoc10Array(DocBuilder &b) { @@ -169,7 +167,6 @@ makeDoc10WeightedSet(DocBuilder &b) return b.endDocument(); } - Document::UP makeDoc10Empty(DocBuilder &b) { @@ -179,8 +176,7 @@ makeDoc10Empty(DocBuilder &b) } -struct Fixture -{ +struct UrlFieldInverterTest : public ::testing::Test { Schema _schema; DocBuilder _b; WordStore _word_store; @@ -191,15 +187,13 @@ struct Fixture std::unique_ptr<UrlFieldInverter> _urlInverter; index::SchemaIndexFields _schemaIndexFields; - static Schema - makeSchema(Schema::CollectionType collectionType) - { + static Schema makeSchema(Schema::CollectionType collectionType) { Schema schema; schema.addUriIndexFields(Schema::IndexField("url", DataType::STRING, collectionType)); return schema; } - Fixture(Schema::CollectionType collectionType) + UrlFieldInverterTest(Schema::CollectionType collectionType) : _schema(makeSchema(collectionType)), _b(_schema), _word_store(), @@ -233,15 +227,11 @@ struct Fixture _inverters[urlField._hostname].get()); } - void - invertDocument(uint32_t docId, const Document &doc) - { + void invertDocument(uint32_t docId, const Document &doc) { _urlInverter->invertField(docId, doc.getValue(url)); } - void - pushDocuments() - { + void pushDocuments() { uint32_t fieldId = 0; for (auto &inverter : _inverters) { _inserter.setFieldId(fieldId); @@ -250,324 +240,330 @@ struct Fixture } } - void - enableAnnotations() - { + void enableAnnotations() { _urlInverter->setUseAnnotations(true); } }; +struct SingleInverterTest : public UrlFieldInverterTest { + SingleInverterTest() : UrlFieldInverterTest(CollectionType::SINGLE) {} +}; + +struct ArrayInverterTest : public UrlFieldInverterTest { + ArrayInverterTest() : UrlFieldInverterTest(CollectionType::ARRAY) {} +}; -TEST_F("requireThatSingleUrlFieldWorks", Fixture(CollectionType::SINGLE)) -{ - f.invertDocument(10, *makeDoc10Single(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0," - "w=2,a=10," - "w=4,a=10," - "w=81,a=10," - "w=ab,a=10," - "w=com,a=10," - "w=example,a=10," - "w=fluke,a=10," - "w=http,a=10," - "w=www,a=10," - "f=1," - "w=http,a=10," - "f=2," - "w=com,a=10," - "w=example,a=10," - "w=www,a=10," - "f=3," - "w=81,a=10," - "f=4," - "w=fluke,a=10," - "f=5," - "w=2,a=10," - "w=ab,a=10," - "f=6," - "w=4,a=10," - "f=7," - "w=EnDhOsT,a=10," - "w=StArThOsT,a=10," - "w=com,a=10," - "w=example,a=10," - "w=www,a=10", - f._inserter.toStr()); -} +struct WeightedSetInverterTest : public UrlFieldInverterTest { + WeightedSetInverterTest() : UrlFieldInverterTest(CollectionType::WEIGHTEDSET) {} +}; -TEST_F("requireThatArrayUrlFieldWorks", Fixture(CollectionType::ARRAY)) +TEST_F(SingleInverterTest, require_that_single_url_field_works) { - f.invertDocument(10, *makeDoc10Array(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0," - "w=2,a=10," - "w=8,a=10," - "w=82,a=10," - "w=9,a=10," - "w=ab,a=10," - "w=com,a=10," - "w=example,a=10," - "w=flickr,a=10," - "w=fluke,a=10," - "w=http,a=10," - "w=www,a=10," - "f=1," - "w=http,a=10," - "f=2," - "w=com,a=10," - "w=example,a=10," - "w=flickr,a=10," - "w=www,a=10," - "f=3," - "w=82,a=10," - "f=4," - "w=fluke,a=10," - "f=5," - "w=2,a=10," - "w=ab,a=10," - "f=6," - "w=8,a=10," - "w=9,a=10," - "f=7," - "w=EnDhOsT,a=10," - "w=StArThOsT,a=10," - "w=com,a=10," - "w=example,a=10," - "w=flickr,a=10," - "w=www,a=10", - f._inserter.toStr()); + invertDocument(10, *makeDoc10Single(_b)); + pushDocuments(); + EXPECT_EQ("f=0," + "w=2,a=10," + "w=4,a=10," + "w=81,a=10," + "w=ab,a=10," + "w=com,a=10," + "w=example,a=10," + "w=fluke,a=10," + "w=http,a=10," + "w=www,a=10," + "f=1," + "w=http,a=10," + "f=2," + "w=com,a=10," + "w=example,a=10," + "w=www,a=10," + "f=3," + "w=81,a=10," + "f=4," + "w=fluke,a=10," + "f=5," + "w=2,a=10," + "w=ab,a=10," + "f=6," + "w=4,a=10," + "f=7," + "w=EnDhOsT,a=10," + "w=StArThOsT,a=10," + "w=com,a=10," + "w=example,a=10," + "w=www,a=10", + _inserter.toStr()); } -TEST_F("requireThatWeightedSetFieldWorks", Fixture(CollectionType::WEIGHTEDSET)) +TEST_F(ArrayInverterTest, require_that_array_url_field_works) { - f.invertDocument(10, *makeDoc10WeightedSet(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0," - "w=12,a=10," - "w=13,a=10," - "w=2,a=10," - "w=83,a=10," - "w=85,a=10," - "w=ab,a=10," - "w=com,a=10," - "w=example,a=10," - "w=flickr,a=10," - "w=fluke,a=10," - "w=http,a=10," - "w=www,a=10," - "f=1," - "w=http,a=10," - "f=2," - "w=com,a=10," - "w=example,a=10," - "w=flickr,a=10," - "w=www,a=10," - "f=3," - "w=83,a=10," - "w=85,a=10," - "f=4," - "w=fluke,a=10," - "f=5," - "w=2,a=10," - "w=ab,a=10," - "f=6," - "w=12,a=10," - "w=13,a=10," - "f=7," - "w=EnDhOsT,a=10," - "w=StArThOsT,a=10," - "w=com,a=10," - "w=example,a=10," - "w=flickr,a=10," - "w=www,a=10", - f._inserter.toStr()); + invertDocument(10, *makeDoc10Array(_b)); + pushDocuments(); + EXPECT_EQ("f=0," + "w=2,a=10," + "w=8,a=10," + "w=82,a=10," + "w=9,a=10," + "w=ab,a=10," + "w=com,a=10," + "w=example,a=10," + "w=flickr,a=10," + "w=fluke,a=10," + "w=http,a=10," + "w=www,a=10," + "f=1," + "w=http,a=10," + "f=2," + "w=com,a=10," + "w=example,a=10," + "w=flickr,a=10," + "w=www,a=10," + "f=3," + "w=82,a=10," + "f=4," + "w=fluke,a=10," + "f=5," + "w=2,a=10," + "w=ab,a=10," + "f=6," + "w=8,a=10," + "w=9,a=10," + "f=7," + "w=EnDhOsT,a=10," + "w=StArThOsT,a=10," + "w=com,a=10," + "w=example,a=10," + "w=flickr,a=10," + "w=www,a=10", + _inserter.toStr()); } -TEST_F("requireThatAnnotatedSingleUrlFieldWorks", Fixture(CollectionType::SINGLE)) +TEST_F(WeightedSetInverterTest, require_that_weighted_set_field_works) { - f.enableAnnotations(); - f.invertDocument(10, *makeDoc10Single(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0," - "w=2,a=10," - "w=4,a=10," - "w=81,a=10," - "w=ab,a=10," - "w=com,a=10," - "w=example,a=10," - "w=fluke,a=10," - "w=http,a=10," - "w=www,a=10," - "f=1," - "w=http,a=10," - "f=2," - "w=com,a=10," - "w=example,a=10," - "w=www,a=10," - "f=3," - "w=81,a=10," - "f=4," - "w=altfluke,a=10," - "w=fluke,a=10," - "f=5," - "w=2,a=10," - "w=ab,a=10," - "f=6," - "w=4,a=10," - "f=7," - "w=EnDhOsT,a=10," - "w=StArThOsT,a=10," - "w=com,a=10," - "w=example,a=10," - "w=www,a=10", - f._inserter.toStr()); + invertDocument(10, *makeDoc10WeightedSet(_b)); + pushDocuments(); + EXPECT_EQ("f=0," + "w=12,a=10," + "w=13,a=10," + "w=2,a=10," + "w=83,a=10," + "w=85,a=10," + "w=ab,a=10," + "w=com,a=10," + "w=example,a=10," + "w=flickr,a=10," + "w=fluke,a=10," + "w=http,a=10," + "w=www,a=10," + "f=1," + "w=http,a=10," + "f=2," + "w=com,a=10," + "w=example,a=10," + "w=flickr,a=10," + "w=www,a=10," + "f=3," + "w=83,a=10," + "w=85,a=10," + "f=4," + "w=fluke,a=10," + "f=5," + "w=2,a=10," + "w=ab,a=10," + "f=6," + "w=12,a=10," + "w=13,a=10," + "f=7," + "w=EnDhOsT,a=10," + "w=StArThOsT,a=10," + "w=com,a=10," + "w=example,a=10," + "w=flickr,a=10," + "w=www,a=10", + _inserter.toStr()); } - -TEST_F("requireThatAnnotatedArrayUrlFieldWorks", Fixture(CollectionType::ARRAY)) +TEST_F(SingleInverterTest, require_that_annotated_single_url_field_works) { - f.enableAnnotations(); - f.invertDocument(10, *makeDoc10Array(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0," - "w=2,a=10," - "w=8,a=10," - "w=82,a=10," - "w=9,a=10," - "w=ab,a=10," - "w=com,a=10," - "w=example,a=10," - "w=flickr,a=10," - "w=fluke,a=10," - "w=http,a=10," - "w=www,a=10," - "f=1," - "w=http,a=10," - "f=2," - "w=com,a=10," - "w=example,a=10," - "w=flickr,a=10," - "w=www,a=10," - "f=3," - "w=82,a=10," - "f=4," - "w=altfluke,a=10," - "w=fluke,a=10," - "f=5," - "w=2,a=10," - "w=ab,a=10," - "f=6," - "w=8,a=10," - "w=9,a=10," - "f=7," - "w=EnDhOsT,a=10," - "w=StArThOsT,a=10," - "w=com,a=10," - "w=example,a=10," - "w=flickr,a=10," - "w=www,a=10", - f._inserter.toStr()); + enableAnnotations(); + invertDocument(10, *makeDoc10Single(_b)); + pushDocuments(); + EXPECT_EQ("f=0," + "w=2,a=10," + "w=4,a=10," + "w=81,a=10," + "w=ab,a=10," + "w=com,a=10," + "w=example,a=10," + "w=fluke,a=10," + "w=http,a=10," + "w=www,a=10," + "f=1," + "w=http,a=10," + "f=2," + "w=com,a=10," + "w=example,a=10," + "w=www,a=10," + "f=3," + "w=81,a=10," + "f=4," + "w=altfluke,a=10," + "w=fluke,a=10," + "f=5," + "w=2,a=10," + "w=ab,a=10," + "f=6," + "w=4,a=10," + "f=7," + "w=EnDhOsT,a=10," + "w=StArThOsT,a=10," + "w=com,a=10," + "w=example,a=10," + "w=www,a=10", + _inserter.toStr()); } -TEST_F("requireThatAnnotatedWeightedSetFieldWorks", - Fixture(CollectionType::WEIGHTEDSET)) +TEST_F(ArrayInverterTest, require_that_annotated_array_url_field_works) { - f.enableAnnotations(); - f._inserter.setVerbose(); - f.invertDocument(10, *makeDoc10WeightedSet(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("f=0," - "w=12,a=10(e=0,w=4,l=9[8])," - "w=13,a=10(e=1,w=7,l=9[8])," - "w=2,a=10(e=0,w=4,l=9[7],e=1,w=7,l=9[7])," - "w=83,a=10(e=0,w=4,l=9[4])," - "w=85,a=10(e=1,w=7,l=9[4])," - "w=ab,a=10(e=0,w=4,l=9[6],e=1,w=7,l=9[6])," - "w=com,a=10(e=0,w=4,l=9[3],e=1,w=7,l=9[3])," - "w=example,a=10(e=0,w=4,l=9[2])," - "w=flickr,a=10(e=1,w=7,l=9[2])," - "w=fluke,a=10(e=0,w=4,l=9[5],e=1,w=7,l=9[5])," - "w=http,a=10(e=0,w=4,l=9[0],e=1,w=7,l=9[0])," - "w=www,a=10(e=0,w=4,l=9[1],e=1,w=7,l=9[1])," - "f=1," - "w=http,a=10(e=0,w=4,l=1[0],e=1,w=7,l=1[0])," - "f=2," - "w=com,a=10(e=0,w=4,l=3[2],e=1,w=7,l=3[2])," - "w=example,a=10(e=0,w=4,l=3[1])," - "w=flickr,a=10(e=1,w=7,l=3[1])," - "w=www,a=10(e=0,w=4,l=3[0],e=1,w=7,l=3[0])," - "f=3," - "w=83,a=10(e=0,w=4,l=1[0])," - "w=85,a=10(e=1,w=7,l=1[0])," - "f=4," - "w=altfluke,a=10(e=0,w=4,l=1[0])," - "w=fluke,a=10(e=0,w=4,l=1[0],e=1,w=7,l=1[0])," - "f=5," - "w=2,a=10(e=0,w=4,l=2[1],e=1,w=7,l=2[1])," - "w=ab,a=10(e=0,w=4,l=2[0],e=1,w=7,l=2[0])," - "f=6," - "w=12,a=10(e=0,w=4,l=1[0])," - "w=13,a=10(e=1,w=7,l=1[0])," - "f=7," - "w=EnDhOsT,a=10(e=0,w=4,l=5[4],e=1,w=7,l=5[4])," - "w=StArThOsT,a=10(e=0,w=4,l=5[0],e=1,w=7,l=5[0])," - "w=com,a=10(e=0,w=4,l=5[3],e=1,w=7,l=5[3])," - "w=example,a=10(e=0,w=4,l=5[2])," - "w=flickr,a=10(e=1,w=7,l=5[2])," - "w=www,a=10(e=0,w=4,l=5[1],e=1,w=7,l=5[1])", - f._inserter.toStr()); + enableAnnotations(); + invertDocument(10, *makeDoc10Array(_b)); + pushDocuments(); + EXPECT_EQ("f=0," + "w=2,a=10," + "w=8,a=10," + "w=82,a=10," + "w=9,a=10," + "w=ab,a=10," + "w=com,a=10," + "w=example,a=10," + "w=flickr,a=10," + "w=fluke,a=10," + "w=http,a=10," + "w=www,a=10," + "f=1," + "w=http,a=10," + "f=2," + "w=com,a=10," + "w=example,a=10," + "w=flickr,a=10," + "w=www,a=10," + "f=3," + "w=82,a=10," + "f=4," + "w=altfluke,a=10," + "w=fluke,a=10," + "f=5," + "w=2,a=10," + "w=ab,a=10," + "f=6," + "w=8,a=10," + "w=9,a=10," + "f=7," + "w=EnDhOsT,a=10," + "w=StArThOsT,a=10," + "w=com,a=10," + "w=example,a=10," + "w=flickr,a=10," + "w=www,a=10", + _inserter.toStr()); } +TEST_F(WeightedSetInverterTest, require_that_annotated_weighted_set_field_works) +{ + enableAnnotations(); + _inserter.setVerbose(); + invertDocument(10, *makeDoc10WeightedSet(_b)); + pushDocuments(); + EXPECT_EQ("f=0," + "w=12,a=10(e=0,w=4,l=9[8])," + "w=13,a=10(e=1,w=7,l=9[8])," + "w=2,a=10(e=0,w=4,l=9[7],e=1,w=7,l=9[7])," + "w=83,a=10(e=0,w=4,l=9[4])," + "w=85,a=10(e=1,w=7,l=9[4])," + "w=ab,a=10(e=0,w=4,l=9[6],e=1,w=7,l=9[6])," + "w=com,a=10(e=0,w=4,l=9[3],e=1,w=7,l=9[3])," + "w=example,a=10(e=0,w=4,l=9[2])," + "w=flickr,a=10(e=1,w=7,l=9[2])," + "w=fluke,a=10(e=0,w=4,l=9[5],e=1,w=7,l=9[5])," + "w=http,a=10(e=0,w=4,l=9[0],e=1,w=7,l=9[0])," + "w=www,a=10(e=0,w=4,l=9[1],e=1,w=7,l=9[1])," + "f=1," + "w=http,a=10(e=0,w=4,l=1[0],e=1,w=7,l=1[0])," + "f=2," + "w=com,a=10(e=0,w=4,l=3[2],e=1,w=7,l=3[2])," + "w=example,a=10(e=0,w=4,l=3[1])," + "w=flickr,a=10(e=1,w=7,l=3[1])," + "w=www,a=10(e=0,w=4,l=3[0],e=1,w=7,l=3[0])," + "f=3," + "w=83,a=10(e=0,w=4,l=1[0])," + "w=85,a=10(e=1,w=7,l=1[0])," + "f=4," + "w=altfluke,a=10(e=0,w=4,l=1[0])," + "w=fluke,a=10(e=0,w=4,l=1[0],e=1,w=7,l=1[0])," + "f=5," + "w=2,a=10(e=0,w=4,l=2[1],e=1,w=7,l=2[1])," + "w=ab,a=10(e=0,w=4,l=2[0],e=1,w=7,l=2[0])," + "f=6," + "w=12,a=10(e=0,w=4,l=1[0])," + "w=13,a=10(e=1,w=7,l=1[0])," + "f=7," + "w=EnDhOsT,a=10(e=0,w=4,l=5[4],e=1,w=7,l=5[4])," + "w=StArThOsT,a=10(e=0,w=4,l=5[0],e=1,w=7,l=5[0])," + "w=com,a=10(e=0,w=4,l=5[3],e=1,w=7,l=5[3])," + "w=example,a=10(e=0,w=4,l=5[2])," + "w=flickr,a=10(e=1,w=7,l=5[2])," + "w=www,a=10(e=0,w=4,l=5[1],e=1,w=7,l=5[1])", + _inserter.toStr()); +} -TEST_F("requireThatEmptySingleFieldWorks", Fixture(CollectionType::SINGLE)) +TEST_F(SingleInverterTest, require_that_empty_single_field_works) { - f.invertDocument(10, *makeDoc10Empty(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("", f._inserter.toStr()); + invertDocument(10, *makeDoc10Empty(_b)); + pushDocuments(); + EXPECT_EQ("", _inserter.toStr()); } -TEST_F("requireThatEmptyArrayFieldWorks", Fixture(CollectionType::ARRAY)) +TEST_F(ArrayInverterTest, require_that_empty_array_field_works) { - f.invertDocument(10, *makeDoc10Empty(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("", - f._inserter.toStr()); + invertDocument(10, *makeDoc10Empty(_b)); + pushDocuments(); + EXPECT_EQ("", + _inserter.toStr()); } -TEST_F("requireThatEmptyWeightedSetFieldWorks", Fixture(CollectionType::WEIGHTEDSET)) +TEST_F(WeightedSetInverterTest, require_that_empty_weighted_set_field_works) { - f.invertDocument(10, *makeDoc10Empty(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("", f._inserter.toStr()); + invertDocument(10, *makeDoc10Empty(_b)); + pushDocuments(); + EXPECT_EQ("", _inserter.toStr()); } -TEST_F("requireThatAnnotatedEmptySingleFieldWorks", Fixture(CollectionType::SINGLE)) +TEST_F(SingleInverterTest, require_that_annotated_empty_single_field_works) { - f.enableAnnotations(); - f.invertDocument(10, *makeDoc10Empty(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("", f._inserter.toStr()); + enableAnnotations(); + invertDocument(10, *makeDoc10Empty(_b)); + pushDocuments(); + EXPECT_EQ("", _inserter.toStr()); } -TEST_F("requireThatAnnotatedEmptyArrayFieldWorks", Fixture(CollectionType::ARRAY)) +TEST_F(ArrayInverterTest, require_that_annotated_empty_array_field_works) { - f.enableAnnotations(); - f.invertDocument(10, *makeDoc10Empty(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("", f._inserter.toStr()); + enableAnnotations(); + invertDocument(10, *makeDoc10Empty(_b)); + pushDocuments(); + EXPECT_EQ("", _inserter.toStr()); } -TEST_F("requireThatAnnotatedEmptyWeightedSetFieldWorks", Fixture(CollectionType::WEIGHTEDSET)) +TEST_F(WeightedSetInverterTest, require_that_annotated_empty_weighted_set_field_works) { - f.enableAnnotations(); - f.invertDocument(10, *makeDoc10Empty(f._b)); - f.pushDocuments(); - EXPECT_EQUAL("", f._inserter.toStr()); + enableAnnotations(); + invertDocument(10, *makeDoc10Empty(_b)); + pushDocuments(); + EXPECT_EQ("", _inserter.toStr()); } -} // namespace memoryindex -} // namespace search +} +} -TEST_MAIN() { TEST_RUN_ALL(); } +GTEST_MAIN_RUN_ALL_TESTS() |