diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-03-04 21:42:05 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-03-04 21:42:05 +0000 |
commit | 1f52c67427b18d8a5ef16e78085be2b5f3253ec5 (patch) | |
tree | 2866781335caf2033abf7683c23ac318af4d4275 /searchlib/src/tests/query/streaming_query_test.cpp | |
parent | 4d4b1024cbaa9ad537927d66309db8aa9f628c37 (diff) |
No move or copy construction.
Diffstat (limited to 'searchlib/src/tests/query/streaming_query_test.cpp')
-rw-r--r-- | searchlib/src/tests/query/streaming_query_test.cpp | 440 |
1 files changed, 247 insertions, 193 deletions
diff --git a/searchlib/src/tests/query/streaming_query_test.cpp b/searchlib/src/tests/query/streaming_query_test.cpp index 2db25da03f7..5ce34cfcc3f 100644 --- a/searchlib/src/tests/query/streaming_query_test.cpp +++ b/searchlib/src/tests/query/streaming_query_test.cpp @@ -24,201 +24,255 @@ TEST("testQueryLanguage") { int64_t ia(0), ib(0); double da(0), db(0); - QueryTerm q(factory.create(), "7", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, 7); - EXPECT_EQUAL(ib, 7); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, 7); - EXPECT_EQUAL(db, 7); - - q = QueryTerm(factory.create(), "-7", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, -7); - EXPECT_EQUAL(ib, -7); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, -7); - EXPECT_EQUAL(db, -7); - - q = QueryTerm(factory.create(), "7.5", "index", TermType::WORD); - EXPECT_TRUE(!q.getAsIntegerTerm(ia, ib)); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, 7.5); - EXPECT_EQUAL(db, 7.5); - - q = QueryTerm(factory.create(), "-7.5", "index", TermType::WORD); - EXPECT_TRUE(!q.getAsIntegerTerm(ia, ib)); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, -7.5); - EXPECT_EQUAL(db, -7.5); - - q = QueryTerm(factory.create(), "<7", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); - EXPECT_EQUAL(ib, 6); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, -std::numeric_limits<double>::max()); - EXPECT_LESS(db, 7); - EXPECT_GREATER(db, 6.99); - - q = QueryTerm(factory.create(), "[;7]", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); - EXPECT_EQUAL(ib, 7); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, -std::numeric_limits<double>::max()); - EXPECT_EQUAL(db, 7); - - q = QueryTerm(factory.create(), ">7", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, 8); - EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_GREATER(da, 7); - EXPECT_LESS(da, 7.01); - EXPECT_EQUAL(db, std::numeric_limits<double>::max()); - - q = QueryTerm(factory.create(), "[7;]", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, 7); - EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, 7); - EXPECT_EQUAL(db, std::numeric_limits<double>::max()); - - q = QueryTerm(factory.create(), "[-7;7]", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, -7); - EXPECT_EQUAL(ib, 7); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, -7); - EXPECT_EQUAL(db, 7); - - q = QueryTerm(factory.create(), "[-7.1;7.1]", "index", TermType::WORD); - EXPECT_FALSE(q.getAsIntegerTerm(ia, ib)); // This is dubious and perhaps a regression. - EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); - EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, -7.1); - EXPECT_EQUAL(db, 7.1); - - q = QueryTerm(factory.create(), "[500.0;1.7976931348623157E308]", "index", TermType::WORD); - EXPECT_FALSE(q.getAsIntegerTerm(ia, ib)); // This is dubious and perhaps a regression. - EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); - EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, 500.0); - EXPECT_EQUAL(db, std::numeric_limits<double>::max()); + { + QueryTerm q(factory.create(), "7", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, 7); + EXPECT_EQUAL(ib, 7); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, 7); + EXPECT_EQUAL(db, 7); + } + + { + QueryTerm q(factory.create(), "-7", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, -7); + EXPECT_EQUAL(ib, -7); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, -7); + EXPECT_EQUAL(db, -7); + } + + { + QueryTerm q(factory.create(), "7.5", "index", TermType::WORD); + EXPECT_TRUE(!q.getAsIntegerTerm(ia, ib)); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, 7.5); + EXPECT_EQUAL(db, 7.5); + } + + { + QueryTerm q(factory.create(), "-7.5", "index", TermType::WORD); + EXPECT_TRUE(!q.getAsIntegerTerm(ia, ib)); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, -7.5); + EXPECT_EQUAL(db, -7.5); + } + + { + QueryTerm q(factory.create(), "<7", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); + EXPECT_EQUAL(ib, 6); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, -std::numeric_limits<double>::max()); + EXPECT_LESS(db, 7); + EXPECT_GREATER(db, 6.99); + } + + { + QueryTerm q(factory.create(), "[;7]", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); + EXPECT_EQUAL(ib, 7); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, -std::numeric_limits<double>::max()); + EXPECT_EQUAL(db, 7); + } + + { + QueryTerm q(factory.create(), ">7", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, 8); + EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_GREATER(da, 7); + EXPECT_LESS(da, 7.01); + EXPECT_EQUAL(db, std::numeric_limits<double>::max()); + } + + { + QueryTerm q(factory.create(), "[7;]", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, 7); + EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, 7); + EXPECT_EQUAL(db, std::numeric_limits<double>::max()); + } + + { + QueryTerm q(factory.create(), "[-7;7]", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, -7); + EXPECT_EQUAL(ib, 7); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, -7); + EXPECT_EQUAL(db, 7); + } + + { + QueryTerm q(factory.create(), "[-7.1;7.1]", "index", TermType::WORD); + EXPECT_FALSE(q.getAsIntegerTerm(ia, ib)); // This is dubious and perhaps a regression. + EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); + EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, -7.1); + EXPECT_EQUAL(db, 7.1); + } + + { + QueryTerm q(factory.create(), "[500.0;1.7976931348623157E308]", "index", TermType::WORD); + EXPECT_FALSE(q.getAsIntegerTerm(ia, ib)); // This is dubious and perhaps a regression. + EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); + EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, 500.0); + EXPECT_EQUAL(db, std::numeric_limits<double>::max()); + } const double minusSeven(-7), seven(7); - q = QueryTerm(factory.create(), "<-7;7]", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, -6); - EXPECT_EQUAL(ib, 7); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, std::nextafterf(minusSeven, seven)); - EXPECT_EQUAL(db, seven); - - q = QueryTerm(factory.create(), "<-7;7>", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, -6); - EXPECT_EQUAL(ib, 6); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, std::nextafterf(minusSeven, seven)); - EXPECT_EQUAL(db, std::nextafterf(seven, minusSeven)); - - q = QueryTerm(factory.create(), "<1;2>", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, 2); - EXPECT_EQUAL(ib, 1); - - q = QueryTerm(factory.create(), "[-7;7>", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, -7); - EXPECT_EQUAL(ib, 6); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, minusSeven); - EXPECT_EQUAL(db, std::nextafterf(seven, minusSeven)); - - q = QueryTerm(factory.create(), "<-7", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); - EXPECT_EQUAL(ib, -8); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, -std::numeric_limits<double>::max()); - EXPECT_LESS(db, -7); - EXPECT_GREATER(db, -7.01); - - q = QueryTerm(factory.create(), "[;-7]", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); - EXPECT_EQUAL(ib, -7); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, -std::numeric_limits<double>::max()); - EXPECT_EQUAL(db, -7); - - q = QueryTerm(factory.create(), "<;-7]", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); - EXPECT_EQUAL(ib, -7); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, -std::numeric_limits<double>::max()); - EXPECT_EQUAL(db, -7); - - q = QueryTerm(factory.create(), ">-7", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, -6); - EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_GREATER(da, -7); - EXPECT_LESS(da, -6.99); - EXPECT_EQUAL(db, std::numeric_limits<double>::max()); - - q = QueryTerm(factory.create(), "[-7;]", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, -7); - EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, -7); - EXPECT_EQUAL(db, std::numeric_limits<double>::max()); - - q = QueryTerm(factory.create(), "[-7;>", "index", TermType::WORD); - EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); - EXPECT_EQUAL(ia, -7); - EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); - EXPECT_TRUE(q.getAsDoubleTerm(da, db)); - EXPECT_EQUAL(da, -7); - EXPECT_EQUAL(db, std::numeric_limits<double>::max()); - - q = QueryTerm(factory.create(), "a", "index", TermType::WORD); - EXPECT_TRUE(!q.getAsIntegerTerm(ia, ib)); - EXPECT_TRUE(!q.getAsDoubleTerm(da, db)); - - q = QueryTerm(factory.create(), "word", "index", TermType::WORD); - EXPECT_TRUE(!q.isPrefix()); - EXPECT_TRUE(!q.isSubstring()); - EXPECT_TRUE(!q.isSuffix()); - - q = QueryTerm(factory.create(), "prefix", "index", TermType::PREFIXTERM); - EXPECT_TRUE(q.isPrefix()); - EXPECT_TRUE(!q.isSubstring()); - EXPECT_TRUE(!q.isSuffix()); - - q = QueryTerm(factory.create(), "substring", "index", TermType::SUBSTRINGTERM); - EXPECT_TRUE(!q.isPrefix()); - EXPECT_TRUE(q.isSubstring()); - EXPECT_TRUE(!q.isSuffix()); - - q = QueryTerm(factory.create(), "suffix", "index", TermType::SUFFIXTERM); - EXPECT_TRUE(!q.isPrefix()); - EXPECT_TRUE(!q.isSubstring()); - EXPECT_TRUE(q.isSuffix()); - - q = QueryTerm(factory.create(), "regexp", "index", TermType::REGEXP); - EXPECT_TRUE(!q.isPrefix()); - EXPECT_TRUE(!q.isSubstring()); - EXPECT_TRUE(!q.isSuffix()); - EXPECT_TRUE(q.isRegex()); + { + QueryTerm q(factory.create(), "<-7;7]", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, -6); + EXPECT_EQUAL(ib, 7); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, std::nextafterf(minusSeven, seven)); + EXPECT_EQUAL(db, seven); + } + + { + QueryTerm q(factory.create(), "<-7;7>", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, -6); + EXPECT_EQUAL(ib, 6); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, std::nextafterf(minusSeven, seven)); + EXPECT_EQUAL(db, std::nextafterf(seven, minusSeven)); + } + + { + QueryTerm q(factory.create(), "<1;2>", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, 2); + EXPECT_EQUAL(ib, 1); + } + + { + QueryTerm q(factory.create(), "[-7;7>", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, -7); + EXPECT_EQUAL(ib, 6); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, minusSeven); + EXPECT_EQUAL(db, std::nextafterf(seven, minusSeven)); + } + + { + QueryTerm q(factory.create(), "<-7", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); + EXPECT_EQUAL(ib, -8); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, -std::numeric_limits<double>::max()); + EXPECT_LESS(db, -7); + EXPECT_GREATER(db, -7.01); + } + + { + QueryTerm q(factory.create(), "[;-7]", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); + EXPECT_EQUAL(ib, -7); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, -std::numeric_limits<double>::max()); + EXPECT_EQUAL(db, -7); + } + + { + QueryTerm q(factory.create(), "<;-7]", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, std::numeric_limits<int64_t>::min()); + EXPECT_EQUAL(ib, -7); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, -std::numeric_limits<double>::max()); + EXPECT_EQUAL(db, -7); + } + + { + QueryTerm q(factory.create(), ">-7", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, -6); + EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_GREATER(da, -7); + EXPECT_LESS(da, -6.99); + EXPECT_EQUAL(db, std::numeric_limits<double>::max()); + } + + { + QueryTerm q(factory.create(), "[-7;]", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, -7); + EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, -7); + EXPECT_EQUAL(db, std::numeric_limits<double>::max()); + } + + { + QueryTerm q(factory.create(), "[-7;>", "index", TermType::WORD); + EXPECT_TRUE(q.getAsIntegerTerm(ia, ib)); + EXPECT_EQUAL(ia, -7); + EXPECT_EQUAL(ib, std::numeric_limits<int64_t>::max()); + EXPECT_TRUE(q.getAsDoubleTerm(da, db)); + EXPECT_EQUAL(da, -7); + EXPECT_EQUAL(db, std::numeric_limits<double>::max()); + } + + { + QueryTerm q(factory.create(), "a", "index", TermType::WORD); + EXPECT_TRUE(!q.getAsIntegerTerm(ia, ib)); + EXPECT_TRUE(!q.getAsDoubleTerm(da, db)); + } + + { + QueryTerm q(factory.create(), "word", "index", TermType::WORD); + EXPECT_TRUE(!q.isPrefix()); + EXPECT_TRUE(!q.isSubstring()); + EXPECT_TRUE(!q.isSuffix()); + } + + { + QueryTerm q(factory.create(), "prefix", "index", TermType::PREFIXTERM); + EXPECT_TRUE(q.isPrefix()); + EXPECT_TRUE(!q.isSubstring()); + EXPECT_TRUE(!q.isSuffix()); + } + + { + QueryTerm q(factory.create(), "substring", "index", TermType::SUBSTRINGTERM); + EXPECT_TRUE(!q.isPrefix()); + EXPECT_TRUE(q.isSubstring()); + EXPECT_TRUE(!q.isSuffix()); + } + + { + QueryTerm q(factory.create(), "suffix", "index", TermType::SUFFIXTERM); + EXPECT_TRUE(!q.isPrefix()); + EXPECT_TRUE(!q.isSubstring()); + EXPECT_TRUE(q.isSuffix()); + } + + { + QueryTerm q(factory.create(), "regexp", "index", TermType::REGEXP); + EXPECT_TRUE(!q.isPrefix()); + EXPECT_TRUE(!q.isSubstring()); + EXPECT_TRUE(!q.isSuffix()); + EXPECT_TRUE(q.isRegex()); + } } class AllowRewrite : public QueryNodeResultFactory |