diff options
Diffstat (limited to 'searchlib/src/tests/query/streaming_query_test.cpp')
-rw-r--r-- | searchlib/src/tests/query/streaming_query_test.cpp | 25 |
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; |