summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/query/streaming_query_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/tests/query/streaming_query_test.cpp')
-rw-r--r--searchlib/src/tests/query/streaming_query_test.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/searchlib/src/tests/query/streaming_query_test.cpp b/searchlib/src/tests/query/streaming_query_test.cpp
index 5559e194c5e..2129cb6805a 100644
--- a/searchlib/src/tests/query/streaming_query_test.cpp
+++ b/searchlib/src/tests/query/streaming_query_test.cpp
@@ -380,6 +380,31 @@ TEST(StreamingQueryTest, onedot0e_is_rewritten_if_allowed_too)
}
}
+TEST(StreamingQueryTest, negative_integer_is_rewritten_if_allowed_for_string_field)
+{
+ const char term[7] = {TERM_UNIQ, 3, 1, 'c', 2, '-', '5'};
+ vespalib::stringref stackDump(term, sizeof(term));
+ EXPECT_EQ(7u, stackDump.size());
+ AllowRewrite empty("c");
+ const Query q(empty, stackDump);
+ EXPECT_TRUE(q.valid());
+ auto& root = q.getRoot();
+ auto& equiv = dynamic_cast<const EquivQueryNode &>(root);
+ EXPECT_EQ(2u, equiv.get_terms().size());
+ {
+ auto& qt = *equiv.get_terms()[0];
+ EXPECT_EQ("c", qt.index());
+ EXPECT_EQ(vespalib::stringref("-5"), qt.getTerm());
+ EXPECT_EQ(3u, qt.uniqueId());
+ }
+ {
+ auto& qt = *equiv.get_terms()[1];
+ EXPECT_EQ("c", qt.index());
+ EXPECT_EQ(vespalib::stringref("5"), qt.getTerm());
+ EXPECT_EQ(0u, qt.uniqueId());
+ }
+}
+
TEST(StreamingQueryTest, test_get_query_parts)
{
QueryBuilder<SimpleQueryNodeTypes> builder;