/* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef LIBTEXTCLASSIFIER_ANNOTATOR_ANNOTATOR_TEST_INCLUDE_H_ #define LIBTEXTCLASSIFIER_ANNOTATOR_ANNOTATOR_TEST_INCLUDE_H_ #include #include #include "annotator/annotator.h" #include "utils/base/logging.h" #include "utils/jvm-test-utils.h" #include "utils/test-data-test-utils.h" #include "utils/testing/annotator.h" #include "utils/utf8/unilib.h" #include "gtest/gtest.h" namespace libtextclassifier3 { namespace test_internal { inline std::string GetModelPath() { return GetTestDataPath("annotator/test_data/"); } class TestingAnnotator : public Annotator { public: TestingAnnotator( const UniLib* unilib, const CalendarLib* calendarlib, const std::function model_update_fn = [](ModelT* model) { }) { owned_buffer_ = CreateEmptyModel(model_update_fn); ValidateAndInitialize(libtextclassifier3::ViewModel(owned_buffer_.data(), owned_buffer_.size()), unilib, calendarlib); } static std::unique_ptr FromUnownedBuffer( const char* buffer, int size, const UniLib* unilib = nullptr, const CalendarLib* calendarlib = nullptr) { // Safe to downcast from Annotator* to TestingAnnotator* because the // subclass is not adding any new members. return std::unique_ptr( reinterpret_cast( Annotator::FromUnownedBuffer(buffer, size, unilib, calendarlib) .release())); } using Annotator::ResolveConflicts; }; class AnnotatorTest : public ::testing::TestWithParam { protected: AnnotatorTest() : unilib_(CreateUniLibForTesting()), calendarlib_(CreateCalendarLibForTesting()) {} std::unique_ptr unilib_; std::unique_ptr calendarlib_; }; } // namespace test_internal } // namespace libtextclassifier3 #endif // LIBTEXTCLASSIFIER_ANNOTATOR_ANNOTATOR_TEST_INCLUDE_H_