diff options
author | Geir Storli <geirst@oath.com> | 2017-09-05 13:09:24 +0000 |
---|---|---|
committer | Geir Storli <geirst@oath.com> | 2017-09-06 15:45:25 +0000 |
commit | e65e07a491c8ac14d2a951158b9d446339b1ad49 (patch) | |
tree | 44cb913185cd24db64ff1e724c0a7cfce7df2079 /searchlib/src/tests/attribute/bitvector_search_cache | |
parent | b24b63018c3862a393a6e69530bafad855ae5fdd (diff) |
Implement simple bitvector search cache for use in imported attribute vector.
Diffstat (limited to 'searchlib/src/tests/attribute/bitvector_search_cache')
-rw-r--r-- | searchlib/src/tests/attribute/bitvector_search_cache/CMakeLists.txt | 8 | ||||
-rw-r--r-- | searchlib/src/tests/attribute/bitvector_search_cache/bitvector_search_cache_test.cpp | 61 |
2 files changed, 69 insertions, 0 deletions
diff --git a/searchlib/src/tests/attribute/bitvector_search_cache/CMakeLists.txt b/searchlib/src/tests/attribute/bitvector_search_cache/CMakeLists.txt new file mode 100644 index 00000000000..2442474bcea --- /dev/null +++ b/searchlib/src/tests/attribute/bitvector_search_cache/CMakeLists.txt @@ -0,0 +1,8 @@ +# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(searchlib_bitvector_search_cache_test_app TEST + SOURCES + bitvector_search_cache_test.cpp + DEPENDS + searchlib +) +vespa_add_test(NAME searchlib_bitvector_search_cache_test_app COMMAND searchlib_bitvector_search_cache_test_app) diff --git a/searchlib/src/tests/attribute/bitvector_search_cache/bitvector_search_cache_test.cpp b/searchlib/src/tests/attribute/bitvector_search_cache/bitvector_search_cache_test.cpp new file mode 100644 index 00000000000..7b395a6459c --- /dev/null +++ b/searchlib/src/tests/attribute/bitvector_search_cache/bitvector_search_cache_test.cpp @@ -0,0 +1,61 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include <vespa/vespalib/testkit/test_kit.h> +#include <vespa/searchlib/attribute/bitvector_search_cache.h> +#include <vespa/searchlib/common/bitvector.h> + +using namespace search; +using namespace search::attribute; + +using BitVectorSP = BitVectorSearchCache::BitVectorSP; + +BitVectorSP +makeBitVector() +{ + return BitVectorSP(BitVector::create(5).release()); +} + +struct Fixture { + BitVectorSearchCache cache; + BitVectorSP vec1; + BitVectorSP vec2; + Fixture() + : cache(), + vec1(makeBitVector()), + vec2(makeBitVector()) + {} +}; + +TEST_F("require that bit vectors can be inserted and retrieved", Fixture) +{ + EXPECT_EQUAL(0u, f.cache.size()); + f.cache.insert("foo", f.vec1); + f.cache.insert("bar", f.vec2); + EXPECT_EQUAL(2u, f.cache.size()); + + EXPECT_EQUAL(f.vec1, f.cache.find("foo")); + EXPECT_EQUAL(f.vec2, f.cache.find("bar")); + EXPECT_TRUE(f.cache.find("baz").get() == nullptr); +} + +TEST_F("require that insert() doesn't replace existing bit vector", Fixture) +{ + f.cache.insert("foo", f.vec1); + f.cache.insert("foo", f.vec2); + EXPECT_EQUAL(1u, f.cache.size()); + EXPECT_EQUAL(f.vec1, f.cache.find("foo")); +} + +TEST_F("require that cache can be cleared", Fixture) +{ + f.cache.insert("foo", f.vec1); + f.cache.insert("bar", f.vec2); + EXPECT_EQUAL(2u, f.cache.size()); + f.cache.clear(); + + EXPECT_EQUAL(0u, f.cache.size()); + EXPECT_TRUE(f.cache.find("foo").get() == nullptr); + EXPECT_TRUE(f.cache.find("bar").get() == nullptr); +} + +TEST_MAIN() { TEST_RUN_ALL(); } |