diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2018-09-13 12:25:15 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2018-09-13 12:25:15 +0200 |
commit | 009b0ea995f82e164e2892d8cc4ab72973f79acd (patch) | |
tree | 2e0be4a638ed2c4df2a0c6b7ebe66d0c7ed1604f /searchlib/src/tests/expression | |
parent | 88a8ed4e3223d761a7943ad646dba25b3b70ed4c (diff) |
Test simple grouping with attribute map lookup.
Diffstat (limited to 'searchlib/src/tests/expression')
-rw-r--r-- | searchlib/src/tests/expression/attributenode/CMakeLists.txt | 1 | ||||
-rw-r--r-- | searchlib/src/tests/expression/attributenode/attribute_node_test.cpp | 29 |
2 files changed, 3 insertions, 27 deletions
diff --git a/searchlib/src/tests/expression/attributenode/CMakeLists.txt b/searchlib/src/tests/expression/attributenode/CMakeLists.txt index c7df5458bb7..3006c27dd0d 100644 --- a/searchlib/src/tests/expression/attributenode/CMakeLists.txt +++ b/searchlib/src/tests/expression/attributenode/CMakeLists.txt @@ -4,5 +4,6 @@ vespa_add_executable(searchlib_attribute_node_test_app TEST attribute_node_test.cpp DEPENDS searchlib + searchlib_test ) vespa_add_test(NAME searchlib_attribute_node_test_app COMMAND searchlib_attribute_node_test_app) diff --git a/searchlib/src/tests/expression/attributenode/attribute_node_test.cpp b/searchlib/src/tests/expression/attributenode/attribute_node_test.cpp index ec1a86bca69..7490b0699be 100644 --- a/searchlib/src/tests/expression/attributenode/attribute_node_test.cpp +++ b/searchlib/src/tests/expression/attributenode/attribute_node_test.cpp @@ -10,8 +10,8 @@ #include <vespa/searchlib/attribute/integerbase.h> #include <vespa/searchlib/attribute/stringbase.h> #include <vespa/searchlib/expression/attributenode.h> -#include <vespa/searchlib/expression/attribute_map_lookup_node.h> #include <vespa/searchlib/expression/resultvector.h> +#include <vespa/searchlib/test/make_attribute_map_lookup_node.h> #include <vespa/vespalib/test/insertion_operators.h> #include <vespa/vespalib/testkit/testapp.h> @@ -31,7 +31,6 @@ using search::attribute::Config; using search::attribute::IAttributeVector; using search::attribute::getUndefined; using search::expression::AttributeNode; -using search::expression::AttributeMapLookupNode; using search::expression::EnumResultNode; using search::expression::EnumResultNodeVector; using search::expression::FloatResultNode; @@ -44,6 +43,7 @@ using search::expression::ResultNode; using search::expression::ResultNodeVector; using search::expression::StringResultNode; using search::expression::StringResultNodeVector; +using search::expression::test::makeAttributeMapLookupNode; using vespalib::BufferRef; namespace { @@ -60,31 +60,6 @@ vespalib::string stringValue(const ResultNode &result, const IAttributeVector &a return vespalib::string(sbuf.c_str(), sbuf.c_str() + sbuf.size()); } -vespalib::string indirectKeyMarker("attribute("); - -std::unique_ptr<AttributeNode> -makeAttributeMapLookupNode(const vespalib::string attributeName) -{ - vespalib::asciistream keyName; - vespalib::asciistream valueName; - auto leftBracePos = attributeName.find('{'); - auto baseName = attributeName.substr(0, leftBracePos); - auto rightBracePos = attributeName.rfind('}'); - keyName << baseName << ".key"; - valueName << baseName << ".value" << attributeName.substr(rightBracePos + 1); - if (rightBracePos != vespalib::string::npos && rightBracePos > leftBracePos) { - if (attributeName[leftBracePos + 1] == '"' && attributeName[rightBracePos - 1] == '"') { - vespalib::string key = attributeName.substr(leftBracePos + 2, rightBracePos - leftBracePos - 3); - return std::make_unique<AttributeMapLookupNode>(attributeName, keyName.str(), valueName.str(), key, ""); - } else if (attributeName.substr(leftBracePos + 1, indirectKeyMarker.size()) == indirectKeyMarker && attributeName[rightBracePos - 1] == ')') { - auto startPos = leftBracePos + 1 + indirectKeyMarker.size(); - vespalib::string keySourceAttributeName = attributeName.substr(startPos, rightBracePos - 1 - startPos); - return std::make_unique<AttributeMapLookupNode>(attributeName, keyName.str(), valueName.str(), "", keySourceAttributeName); - } - } - return std::unique_ptr<AttributeNode>(); -} - struct AttributeManagerFixture { AttributeManager mgr; |