aboutsummaryrefslogtreecommitdiff
path: root/icing/query/advanced_query_parser/function_test.cc
diff options
context:
space:
mode:
authorTim Barron <tjbarron@google.com>2023-03-14 09:57:47 -0700
committerTim Barron <tjbarron@google.com>2023-03-14 09:57:47 -0700
commitc1e7edff54723138756063ee4b7948c1ee91277e (patch)
treeb2a55e543a6c9396631feaab459bfd671a8bc400 /icing/query/advanced_query_parser/function_test.cc
parent140aaee3e7b269f02599310e42d6172090ce02d2 (diff)
parentd5c81ae0c41ae9c1aefb3601f3836570b9f686c7 (diff)
downloadicing-c1e7edff54723138756063ee4b7948c1ee91277e.tar.gz
Merge remote-tracking branch 'goog/upstream-master' into androidx-platform-dev
* goog/upstream-master: Update Icing from upstream. Update Icing from upstream. Descriptions: ======================================================================== Cache an instance of UBreakIterator to reduce unnecessary creations. ======================================================================== Cap number of individual IntegerIndexStorages that IntegerIndex creates. ======================================================================== Change error in trimRightMostNode from Unimplemented to InvalidArgument. ======================================================================== Add detection for new language features of List Filters Query Language. ======================================================================== Add option to control threshold to rebuild index during optimize by flag ======================================================================== Add option to control use of namespace id to build urimapper by flag. ======================================================================== Enforce schema validation for joinable config. ======================================================================== Adopt bucket splitting for IntegerIndexStorage. ======================================================================== Implement bucket splitting function. ======================================================================== Add Icing initialization unit tests for QualifiedIdTypeJoinableIndex. ======================================================================== Add Icing schema change unit tests for QualifiedIdTypeJoinableIndex. ======================================================================== Add Icing optimization unit tests for QualifiedIdTypeJoinableIndex. ======================================================================== Integrate QualifiedIdTypeJoinableIndex into IcingSearchEngine. ======================================================================== Implement QualifiedIdJoinablePropertyIndexingHandler. ======================================================================== Change QualifiedIdTypeJoinableIndex to store raw qualified id string. ======================================================================== Pass info about unnormalized query terms through lexer/parser/visitor. ======================================================================== Integrate Advanced Query w/ Suggest, make ADVANCED_QUERY default parser. ====================================================================== Bug: 208654892 Bug: 263890397 Bug: 259743562 Bug: 272145329 Bug: 227356108 Change-Id: I44de5853bb6c55b42800ae34d8071016be6c87cd
Diffstat (limited to 'icing/query/advanced_query_parser/function_test.cc')
-rw-r--r--icing/query/advanced_query_parser/function_test.cc78
1 files changed, 39 insertions, 39 deletions
diff --git a/icing/query/advanced_query_parser/function_test.cc b/icing/query/advanced_query_parser/function_test.cc
index 3b3ca40..afd4e04 100644
--- a/icing/query/advanced_query_parser/function_test.cc
+++ b/icing/query/advanced_query_parser/function_test.cc
@@ -63,10 +63,10 @@ TEST(FunctionTest, ParamNotWrongTypeFails) {
Function function,
Function::Create(/*return_type=*/DataType::kString, "foo",
/*params=*/{Param(DataType::kString)}, TrivialEval()));
- // foo(bar)
+ std::string_view query = "foo(bar)";
std::vector<PendingValue> args;
args.push_back(PendingValue::CreateTextPendingValue(
- QueryTerm{"bar", /*is_prefix_val=*/false}));
+ QueryTerm{"bar", query.substr(4, 3), /*is_prefix_val=*/false}));
EXPECT_THAT(function.Eval(std::move(args)),
StatusIs(libtextclassifier3::StatusCode::INVALID_ARGUMENT));
}
@@ -77,10 +77,10 @@ TEST(FunctionTest, ParamRequiredArgSucceeds) {
Function::Create(/*return_type=*/DataType::kString, "foo",
/*params=*/{Param(DataType::kString)}, TrivialEval()));
- // foo("bar")
+ std::string_view query = R"(foo("bar"))";
std::vector<PendingValue> args;
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"bar", /*is_prefix_val=*/false}));
+ QueryTerm{"bar", query.substr(5, 3), /*is_prefix_val=*/false}));
ICING_ASSERT_OK_AND_ASSIGN(PendingValue val, function.Eval(std::move(args)));
EXPECT_THAT(val.is_placeholder(), IsTrue());
}
@@ -136,19 +136,19 @@ TEST(FunctionTest, MultipleArgsTrailingOptionalSucceeds) {
Param(DataType::kString, Cardinality::kOptional)},
TrivialEval()));
- // foo("bar")
+ std::string_view query = R"(foo("bar"))";
std::vector<PendingValue> args;
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"bar", /*is_prefix_val=*/false}));
+ QueryTerm{"bar", query.substr(5, 3), /*is_prefix_val=*/false}));
ICING_ASSERT_OK_AND_ASSIGN(PendingValue val, function.Eval(std::move(args)));
EXPECT_THAT(val.is_placeholder(), IsTrue());
- // foo("bar", "baz")
+ query = R"(foo("bar", "baz"))";
args = std::vector<PendingValue>();
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"bar", /*is_prefix_val=*/false}));
+ QueryTerm{"bar", query.substr(5, 3), /*is_prefix_val=*/false}));
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"baz", /*is_prefix_val=*/false}));
+ QueryTerm{"baz", query.substr(12, 3), /*is_prefix_val=*/false}));
ICING_ASSERT_OK_AND_ASSIGN(val, function.Eval(std::move(args)));
EXPECT_THAT(val.is_placeholder(), IsTrue());
}
@@ -162,30 +162,30 @@ TEST(FunctionTest, MultipleArgsTrailingVariableSucceeds) {
Param(DataType::kString, Cardinality::kVariable)},
TrivialEval()));
- // foo("bar")
+ std::string_view query = R"(foo("bar"))";
std::vector<PendingValue> args;
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"bar", /*is_prefix_val=*/false}));
+ QueryTerm{"bar", query.substr(5, 3), /*is_prefix_val=*/false}));
ICING_ASSERT_OK_AND_ASSIGN(PendingValue val, function.Eval(std::move(args)));
EXPECT_THAT(val.is_placeholder(), IsTrue());
- // foo("bar", "baz")
+ query = R"(foo("bar", "baz"))";
args = std::vector<PendingValue>();
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"bar", /*is_prefix_val=*/false}));
+ QueryTerm{"bar", query.substr(5, 3), /*is_prefix_val=*/false}));
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"baz", /*is_prefix_val=*/false}));
+ QueryTerm{"baz", query.substr(12, 3), /*is_prefix_val=*/false}));
ICING_ASSERT_OK_AND_ASSIGN(val, function.Eval(std::move(args)));
EXPECT_THAT(val.is_placeholder(), IsTrue());
- // foo("bar", "baz", "bat")
+ query = R"(foo("bar", "baz", "bat"))";
args = std::vector<PendingValue>();
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"bar", /*is_prefix_val=*/false}));
+ QueryTerm{"bar", query.substr(5, 3), /*is_prefix_val=*/false}));
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"baz", /*is_prefix_val=*/false}));
+ QueryTerm{"baz", query.substr(12, 3), /*is_prefix_val=*/false}));
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"bat", /*is_prefix_val=*/false}));
+ QueryTerm{"bat", query.substr(19, 3), /*is_prefix_val=*/false}));
ICING_ASSERT_OK_AND_ASSIGN(val, function.Eval(std::move(args)));
EXPECT_THAT(val.is_placeholder(), IsTrue());
}
@@ -214,26 +214,26 @@ TEST(FunctionTest, MultipleArgsOptionalBeforeOptionalSucceeds) {
ICING_ASSERT_OK_AND_ASSIGN(PendingValue val, function.Eval(std::move(args)));
EXPECT_THAT(val.is_placeholder(), IsTrue());
- // foo("bar")
+ std::string_view query = R"(foo("bar"))";
args = std::vector<PendingValue>();
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"bar", /*is_prefix_val=*/false}));
+ QueryTerm{"bar", query.substr(5, 3), /*is_prefix_val=*/false}));
ICING_ASSERT_OK_AND_ASSIGN(val, function.Eval(std::move(args)));
EXPECT_THAT(val.is_placeholder(), IsTrue());
- // foo("bar", baz)
+ query = R"(foo("bar", baz))";
args = std::vector<PendingValue>();
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"bar", /*is_prefix_val=*/false}));
+ QueryTerm{"bar", query.substr(5, 3), /*is_prefix_val=*/false}));
args.push_back(PendingValue::CreateTextPendingValue(
- QueryTerm{"baz", /*is_prefix_val=*/false}));
+ QueryTerm{"baz", query.substr(11, 3), /*is_prefix_val=*/false}));
ICING_ASSERT_OK_AND_ASSIGN(val, function.Eval(std::move(args)));
EXPECT_THAT(val.is_placeholder(), IsTrue());
- // foo(baz)
+ query = R"(foo(baz))";
args = std::vector<PendingValue>();
args.push_back(PendingValue::CreateTextPendingValue(
- QueryTerm{"baz", /*is_prefix_val=*/false}));
+ QueryTerm{"baz", query.substr(4, 3), /*is_prefix_val=*/false}));
EXPECT_THAT(function.Eval(std::move(args)),
StatusIs(libtextclassifier3::StatusCode::INVALID_ARGUMENT));
}
@@ -252,46 +252,46 @@ TEST(FunctionTest, MultipleArgsOptionalBeforeVariableSucceeds) {
ICING_ASSERT_OK_AND_ASSIGN(PendingValue val, function.Eval(std::move(args)));
EXPECT_THAT(val.is_placeholder(), IsTrue());
- // foo("bar")
+ std::string_view query = R"(foo("bar"))";
args = std::vector<PendingValue>();
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"bar", /*is_prefix_val=*/false}));
+ QueryTerm{"bar", query.substr(5, 3), /*is_prefix_val=*/false}));
ICING_ASSERT_OK_AND_ASSIGN(val, function.Eval(std::move(args)));
EXPECT_THAT(val.is_placeholder(), IsTrue());
- // foo("bar", baz)
+ query = R"(foo("bar", baz))";
args = std::vector<PendingValue>();
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"bar", /*is_prefix_val=*/false}));
+ QueryTerm{"bar", query.substr(5, 3), /*is_prefix_val=*/false}));
args.push_back(PendingValue::CreateTextPendingValue(
- QueryTerm{"baz", /*is_prefix_val=*/false}));
+ QueryTerm{"baz", query.substr(11, 3), /*is_prefix_val=*/false}));
ICING_ASSERT_OK_AND_ASSIGN(val, function.Eval(std::move(args)));
EXPECT_THAT(val.is_placeholder(), IsTrue());
- // foo("bar", baz, bat)
+ query = R"(foo("bar", baz, bat))";
args = std::vector<PendingValue>();
args.push_back(PendingValue::CreateStringPendingValue(
- QueryTerm{"bar", /*is_prefix_val=*/false}));
+ QueryTerm{"bar", query.substr(5, 3), /*is_prefix_val=*/false}));
args.push_back(PendingValue::CreateTextPendingValue(
- QueryTerm{"baz", /*is_prefix_val=*/false}));
+ QueryTerm{"baz", query.substr(11, 3), /*is_prefix_val=*/false}));
args.push_back(PendingValue::CreateTextPendingValue(
- QueryTerm{"bat", /*is_prefix_val=*/false}));
+ QueryTerm{"bat", query.substr(16, 3), /*is_prefix_val=*/false}));
ICING_ASSERT_OK_AND_ASSIGN(val, function.Eval(std::move(args)));
EXPECT_THAT(val.is_placeholder(), IsTrue());
- // foo(baz)
+ query = R"(foo(baz))";
args = std::vector<PendingValue>();
args.push_back(PendingValue::CreateTextPendingValue(
- QueryTerm{"baz", /*is_prefix_val=*/false}));
+ QueryTerm{"baz", query.substr(4, 3), /*is_prefix_val=*/false}));
EXPECT_THAT(function.Eval(std::move(args)),
StatusIs(libtextclassifier3::StatusCode::INVALID_ARGUMENT));
- // foo(baz, bat)
+ query = R"(foo(baz, bat))";
args = std::vector<PendingValue>();
args.push_back(PendingValue::CreateTextPendingValue(
- QueryTerm{"baz", /*is_prefix_val=*/false}));
+ QueryTerm{"baz", query.substr(4, 3), /*is_prefix_val=*/false}));
args.push_back(PendingValue::CreateTextPendingValue(
- QueryTerm{"bat", /*is_prefix_val=*/false}));
+ QueryTerm{"bat", query.substr(9, 3), /*is_prefix_val=*/false}));
EXPECT_THAT(function.Eval(std::move(args)),
StatusIs(libtextclassifier3::StatusCode::INVALID_ARGUMENT));
}