| // Copyright 2020 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <gtest/gtest.h> |
| |
| #include "ml/grammar_library.h" |
| #include "ml/util.h" |
| |
| namespace ml { |
| |
| TEST(GrammarLibraryTest, CanLoadLibrary) { |
| auto* const instance = ml::GrammarLibrary::GetInstance(); |
| if (IsAsan()) { |
| EXPECT_FALSE(ml::GrammarLibrary::IsGrammarLibrarySupported()); |
| EXPECT_EQ(instance->GetStatus(), ml::GrammarLibrary::Status::kNotSupported); |
| return; |
| } |
| |
| if (ml::GrammarLibrary::IsGrammarLibrarySupported()) { |
| EXPECT_EQ(instance->GetStatus(), ml::GrammarLibrary::Status::kOk); |
| } else { |
| EXPECT_EQ(instance->GetStatus(), ml::GrammarLibrary::Status::kNotSupported); |
| } |
| } |
| |
| TEST(GrammarLibraryTest, ExampleRequest) { |
| auto* const instance = ml::GrammarLibrary::GetInstance(); |
| // Nothing to test on an unsupported platform. |
| if (instance->GetStatus() == ml::GrammarLibrary::Status::kNotSupported) { |
| return; |
| } |
| ASSERT_EQ(instance->GetStatus(), GrammarLibrary::Status::kOk); |
| |
| GrammarChecker const checker = instance->CreateGrammarChecker(); |
| instance->LoadGrammarChecker(checker); |
| |
| chrome_knowledge::GrammarCheckerRequest request; |
| request.set_text("They is student."); |
| request.set_language("en-US"); |
| |
| chrome_knowledge::GrammarCheckerResult result; |
| instance->CheckGrammar(checker, request, &result); |
| |
| ASSERT_GE(result.candidates_size(), 1); |
| EXPECT_EQ(result.candidates(0).text(), "They are students."); |
| |
| ASSERT_EQ(result.candidates(0).fragments_size(), 1); |
| const chrome_knowledge::CorrectionFragment fragment = |
| result.candidates(0).fragments(0); |
| EXPECT_EQ(fragment.offset(), 5); |
| EXPECT_EQ(fragment.length(), 10); |
| EXPECT_EQ(fragment.replacement(), "are students"); |
| |
| instance->DestroyGrammarChecker(checker); |
| } |
| |
| } // namespace ml |