summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/expression
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2018-09-13 12:25:15 +0200
committerTor Egge <Tor.Egge@broadpark.no>2018-09-13 12:25:15 +0200
commit009b0ea995f82e164e2892d8cc4ab72973f79acd (patch)
tree2e0be4a638ed2c4df2a0c6b7ebe66d0c7ed1604f /searchlib/src/tests/expression
parent88a8ed4e3223d761a7943ad646dba25b3b70ed4c (diff)
Test simple grouping with attribute map lookup.
Diffstat (limited to 'searchlib/src/tests/expression')
-rw-r--r--searchlib/src/tests/expression/attributenode/CMakeLists.txt1
-rw-r--r--searchlib/src/tests/expression/attributenode/attribute_node_test.cpp29
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;