1*993b0882SAndroid Build Coastguard Worker /* 2*993b0882SAndroid Build Coastguard Worker * Copyright (C) 2018 The Android Open Source Project 3*993b0882SAndroid Build Coastguard Worker * 4*993b0882SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*993b0882SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*993b0882SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*993b0882SAndroid Build Coastguard Worker * 8*993b0882SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*993b0882SAndroid Build Coastguard Worker * 10*993b0882SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*993b0882SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*993b0882SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*993b0882SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*993b0882SAndroid Build Coastguard Worker * limitations under the License. 15*993b0882SAndroid Build Coastguard Worker */ 16*993b0882SAndroid Build Coastguard Worker 17*993b0882SAndroid Build Coastguard Worker #ifndef LIBTEXTCLASSIFIER_ANNOTATOR_GRAMMAR_TEST_UTILS_H_ 18*993b0882SAndroid Build Coastguard Worker #define LIBTEXTCLASSIFIER_ANNOTATOR_GRAMMAR_TEST_UTILS_H_ 19*993b0882SAndroid Build Coastguard Worker 20*993b0882SAndroid Build Coastguard Worker #include <memory> 21*993b0882SAndroid Build Coastguard Worker 22*993b0882SAndroid Build Coastguard Worker #include "actions/test-utils.h" 23*993b0882SAndroid Build Coastguard Worker #include "annotator/grammar/grammar-annotator.h" 24*993b0882SAndroid Build Coastguard Worker #include "utils/flatbuffers/mutable.h" 25*993b0882SAndroid Build Coastguard Worker #include "utils/jvm-test-utils.h" 26*993b0882SAndroid Build Coastguard Worker #include "utils/utf8/unilib.h" 27*993b0882SAndroid Build Coastguard Worker #include "gtest/gtest.h" 28*993b0882SAndroid Build Coastguard Worker 29*993b0882SAndroid Build Coastguard Worker namespace libtextclassifier3 { 30*993b0882SAndroid Build Coastguard Worker 31*993b0882SAndroid Build Coastguard Worker // TODO(sofian): Move this matchers to a level up library, useable for more 32*993b0882SAndroid Build Coastguard Worker // tests in text_classifier. 33*993b0882SAndroid Build Coastguard Worker MATCHER_P3(IsAnnotatedSpan, start, end, collection, 34*993b0882SAndroid Build Coastguard Worker "is annotated span with begin that " + 35*993b0882SAndroid Build Coastguard Worker ::testing::DescribeMatcher<int>(start, negation) + 36*993b0882SAndroid Build Coastguard Worker ", end that " + ::testing::DescribeMatcher<int>(end, negation) + 37*993b0882SAndroid Build Coastguard Worker ", collection that " + 38*993b0882SAndroid Build Coastguard Worker ::testing::DescribeMatcher<std::string>(collection, negation)) { 39*993b0882SAndroid Build Coastguard Worker return ::testing::ExplainMatchResult(CodepointSpan(start, end), arg.span, 40*993b0882SAndroid Build Coastguard Worker result_listener) && 41*993b0882SAndroid Build Coastguard Worker ::testing::ExplainMatchResult(::testing::StrEq(collection), 42*993b0882SAndroid Build Coastguard Worker arg.classification.front().collection, 43*993b0882SAndroid Build Coastguard Worker result_listener); 44*993b0882SAndroid Build Coastguard Worker } 45*993b0882SAndroid Build Coastguard Worker 46*993b0882SAndroid Build Coastguard Worker MATCHER_P(IsClassificationResult, collection, 47*993b0882SAndroid Build Coastguard Worker "is classification result with collection that " + 48*993b0882SAndroid Build Coastguard Worker ::testing::DescribeMatcher<std::string>(collection, negation)) { 49*993b0882SAndroid Build Coastguard Worker return ::testing::ExplainMatchResult(::testing::StrEq(collection), 50*993b0882SAndroid Build Coastguard Worker arg.collection, result_listener); 51*993b0882SAndroid Build Coastguard Worker } 52*993b0882SAndroid Build Coastguard Worker 53*993b0882SAndroid Build Coastguard Worker class GrammarAnnotatorTest : public ::testing::Test { 54*993b0882SAndroid Build Coastguard Worker protected: GrammarAnnotatorTest()55*993b0882SAndroid Build Coastguard Worker GrammarAnnotatorTest() 56*993b0882SAndroid Build Coastguard Worker : unilib_(CreateUniLibForTesting()), 57*993b0882SAndroid Build Coastguard Worker serialized_entity_data_schema_(TestEntityDataSchema()), 58*993b0882SAndroid Build Coastguard Worker entity_data_builder_(new MutableFlatbufferBuilder( 59*993b0882SAndroid Build Coastguard Worker flatbuffers::GetRoot<reflection::Schema>( 60*993b0882SAndroid Build Coastguard Worker serialized_entity_data_schema_.data()))) {} 61*993b0882SAndroid Build Coastguard Worker 62*993b0882SAndroid Build Coastguard Worker GrammarAnnotator CreateGrammarAnnotator( 63*993b0882SAndroid Build Coastguard Worker const ::flatbuffers::DetachedBuffer& serialized_model); 64*993b0882SAndroid Build Coastguard Worker 65*993b0882SAndroid Build Coastguard Worker std::unique_ptr<UniLib> unilib_; 66*993b0882SAndroid Build Coastguard Worker const std::string serialized_entity_data_schema_; 67*993b0882SAndroid Build Coastguard Worker std::unique_ptr<MutableFlatbufferBuilder> entity_data_builder_; 68*993b0882SAndroid Build Coastguard Worker }; 69*993b0882SAndroid Build Coastguard Worker 70*993b0882SAndroid Build Coastguard Worker void SetTestTokenizerOptions(GrammarModelT* model); 71*993b0882SAndroid Build Coastguard Worker 72*993b0882SAndroid Build Coastguard Worker } // namespace libtextclassifier3 73*993b0882SAndroid Build Coastguard Worker 74*993b0882SAndroid Build Coastguard Worker #endif // LIBTEXTCLASSIFIER_ANNOTATOR_GRAMMAR_TEST_UTILS_H_ 75