diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-20 13:17:27 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-20 13:18:51 +0000 |
commit | ec9ef7bba03fe9287fe37a8c88f9d025a4b2ef67 (patch) | |
tree | 8bc8417e895e509af4b9c333e3ea08525f475736 /searchlib/src/tests/searchcommon/attribute | |
parent | f5f7b0cb60569fc05c100a8b83b9fd721ec37183 (diff) |
Fold searchcommon into searchlib
Diffstat (limited to 'searchlib/src/tests/searchcommon/attribute')
3 files changed, 151 insertions, 0 deletions
diff --git a/searchlib/src/tests/searchcommon/attribute/config/.gitignore b/searchlib/src/tests/searchcommon/attribute/config/.gitignore new file mode 100644 index 00000000000..ffdb7b1e933 --- /dev/null +++ b/searchlib/src/tests/searchcommon/attribute/config/.gitignore @@ -0,0 +1 @@ +searchcommon_attribute_config_test_app diff --git a/searchlib/src/tests/searchcommon/attribute/config/CMakeLists.txt b/searchlib/src/tests/searchcommon/attribute/config/CMakeLists.txt new file mode 100644 index 00000000000..f61138c5d73 --- /dev/null +++ b/searchlib/src/tests/searchcommon/attribute/config/CMakeLists.txt @@ -0,0 +1,8 @@ +# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(searchcommon_attribute_config_test_app TEST + SOURCES + attribute_config_test.cpp + DEPENDS + searchlib +) +vespa_add_test(NAME searchcommon_attribute_config_test_app NO_VALGRIND COMMAND searchcommon_attribute_config_test_app) diff --git a/searchlib/src/tests/searchcommon/attribute/config/attribute_config_test.cpp b/searchlib/src/tests/searchcommon/attribute/config/attribute_config_test.cpp new file mode 100644 index 00000000000..918e14546e6 --- /dev/null +++ b/searchlib/src/tests/searchcommon/attribute/config/attribute_config_test.cpp @@ -0,0 +1,142 @@ +// 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/searchcommon/attribute/config.h> + +using search::attribute::Config; +using search::attribute::BasicType; +using search::attribute::CollectionType; +using vespalib::eval::ValueType; +using search::GrowStrategy; +using search::DictionaryConfig; + + +struct Fixture +{ + Config _config; + Fixture() + : _config() + { } + + Fixture(BasicType bt, + CollectionType ct = CollectionType::SINGLE, + bool fastSearch_ = false, + bool huge_ = false) + : _config(bt, ct, fastSearch_, huge_) + { } +}; + +TEST_F("test default attribute config", Fixture) +{ + EXPECT_EQUAL(BasicType::Type::NONE, f._config.basicType().type()); + EXPECT_EQUAL(CollectionType::Type::SINGLE, + f._config.collectionType().type()); + EXPECT_TRUE(!f._config.fastSearch()); + EXPECT_TRUE(!f._config.huge()); + EXPECT_TRUE(!f._config.getEnableBitVectors()); + EXPECT_TRUE(!f._config.getEnableOnlyBitVector()); + EXPECT_TRUE(!f._config.getIsFilter()); + EXPECT_TRUE(!f._config.fastAccess()); + EXPECT_TRUE(f._config.tensorType().is_error()); +} + +TEST_F("test integer weightedset attribute config", + Fixture(BasicType::Type::INT32, + CollectionType::Type::WSET)) +{ + EXPECT_EQUAL(BasicType::Type::INT32, f._config.basicType().type()); + EXPECT_EQUAL(CollectionType::Type::WSET, + f._config.collectionType().type()); + EXPECT_TRUE(!f._config.fastSearch()); + EXPECT_TRUE(!f._config.huge()); + EXPECT_TRUE(!f._config.getEnableBitVectors()); + EXPECT_TRUE(!f._config.getEnableOnlyBitVector()); + EXPECT_TRUE(!f._config.getIsFilter()); + EXPECT_TRUE(!f._config.fastAccess()); + EXPECT_TRUE(f._config.tensorType().is_error()); +} + + +TEST("test operator== on attribute config") +{ + Config cfg1(BasicType::Type::INT32, CollectionType::Type::WSET); + Config cfg2(BasicType::Type::INT32, CollectionType::Type::ARRAY); + Config cfg3(BasicType::Type::INT32, CollectionType::Type::WSET); + + EXPECT_TRUE(cfg1 != cfg2); + EXPECT_TRUE(cfg2 != cfg3); + EXPECT_TRUE(cfg1 == cfg3); +} + + +TEST("test operator== on attribute config for tensor type") +{ + Config cfg1(BasicType::Type::TENSOR); + Config cfg2(BasicType::Type::TENSOR); + Config cfg3(BasicType::Type::TENSOR); + + ValueType dense_x = ValueType::from_spec("tensor(x[10])"); + ValueType sparse_x = ValueType::from_spec("tensor(x{})"); + + EXPECT_TRUE(cfg1 == cfg2); + EXPECT_TRUE(cfg2 == cfg3); + EXPECT_TRUE(cfg1 == cfg3); + + cfg1.setTensorType(dense_x); + cfg3.setTensorType(dense_x); + EXPECT_EQUAL(dense_x, cfg1.tensorType()); + EXPECT_EQUAL(dense_x, cfg3.tensorType()); + EXPECT_TRUE(!cfg1.tensorType().is_error()); + EXPECT_TRUE(cfg2.tensorType().is_error()); + EXPECT_TRUE(!cfg3.tensorType().is_error()); + + EXPECT_TRUE(cfg1 != cfg2); + EXPECT_TRUE(cfg2 != cfg3); + EXPECT_TRUE(cfg1 == cfg3); + + cfg3.setTensorType(sparse_x); + EXPECT_EQUAL(sparse_x, cfg3.tensorType()); + EXPECT_TRUE(!cfg3.tensorType().is_error()); + EXPECT_TRUE(cfg1 != cfg3); +} + +TEST("Test GrowStrategy consistency") { + GrowStrategy g(1024, 0.5, 17, 0.4f); + EXPECT_EQUAL(1024u, g.getDocsInitialCapacity()); + EXPECT_EQUAL(50u, g.getDocsGrowPercent()); + EXPECT_EQUAL(0.5, g.getDocsGrowFactor()); + EXPECT_EQUAL(17u, g.getDocsGrowDelta()); + EXPECT_EQUAL(0.4f, g.getMultiValueAllocGrowFactor()); +} + +TEST("DictionaryConfig") { + using Type = DictionaryConfig::Type; + using Match = DictionaryConfig::Match; + EXPECT_EQUAL(Type::BTREE, DictionaryConfig().getType()); + EXPECT_EQUAL(Match::UNCASED, DictionaryConfig().getMatch()); + + EXPECT_EQUAL(Type::BTREE, DictionaryConfig(Type::BTREE).getType()); + EXPECT_EQUAL(Match::UNCASED, DictionaryConfig(Type::BTREE).getMatch()); + EXPECT_EQUAL(Match::UNCASED, DictionaryConfig(Type::BTREE, Match::UNCASED).getMatch()); + EXPECT_EQUAL(Match::CASED, DictionaryConfig(Type::BTREE, Match::CASED).getMatch()); + + EXPECT_EQUAL(Type::HASH, DictionaryConfig(Type::HASH).getType()); + EXPECT_EQUAL(Type::BTREE_AND_HASH, DictionaryConfig(Type::BTREE_AND_HASH).getType()); + + EXPECT_EQUAL(DictionaryConfig(Type::BTREE), DictionaryConfig(Type::BTREE)); + EXPECT_EQUAL(DictionaryConfig(Type::HASH), DictionaryConfig(Type::HASH)); + EXPECT_EQUAL(DictionaryConfig(Type::BTREE_AND_HASH), DictionaryConfig(Type::BTREE_AND_HASH)); + EXPECT_NOT_EQUAL(DictionaryConfig(Type::HASH), DictionaryConfig(Type::BTREE)); + EXPECT_NOT_EQUAL(DictionaryConfig(Type::BTREE), DictionaryConfig(Type::HASH)); + EXPECT_TRUE(Config().set_dictionary_config(DictionaryConfig(Type::HASH)) == + Config().set_dictionary_config(DictionaryConfig(Type::HASH))); + EXPECT_FALSE(Config().set_dictionary_config(DictionaryConfig(Type::HASH)) == + Config().set_dictionary_config(DictionaryConfig(Type::BTREE))); + EXPECT_FALSE(Config().set_dictionary_config(DictionaryConfig(Type::HASH)) != + Config().set_dictionary_config(DictionaryConfig(Type::HASH))); + EXPECT_TRUE(Config().set_dictionary_config(DictionaryConfig(Type::HASH)) != + Config().set_dictionary_config(DictionaryConfig(Type::BTREE))); +} + + +TEST_MAIN() { TEST_RUN_ALL(); } |