diff options
author | Tim Barron <tjbarron@google.com> | 2023-03-14 09:57:47 -0700 |
---|---|---|
committer | Tim Barron <tjbarron@google.com> | 2023-03-14 09:57:47 -0700 |
commit | c1e7edff54723138756063ee4b7948c1ee91277e (patch) | |
tree | b2a55e543a6c9396631feaab459bfd671a8bc400 /icing/query/advanced_query_parser/function_test.cc | |
parent | 140aaee3e7b269f02599310e42d6172090ce02d2 (diff) | |
parent | d5c81ae0c41ae9c1aefb3601f3836570b9f686c7 (diff) | |
download | icing-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.cc | 78 |
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)); } |