Skip to content

Commit

Permalink
Quick Answers: Add unit tests for SpellChecker
Browse files Browse the repository at this point in the history
Bug: b/237627977
Test: Run SpellCheckerTest.* under chromeos_components_unittests
Change-Id: I6f9ff236c7972f909b58e05b58416e1dd4cc7d43
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3920576
Commit-Queue: Yue Li <updowndota@chromium.org>
Reviewed-by: Wes Okuhara <wesokuhara@google.com>
Cr-Commit-Position: refs/heads/main@{#1052716}
  • Loading branch information
Yue Li authored and Chromium LUCI CQ committed Sep 29, 2022
1 parent 7e361c9 commit e19ffe5
Show file tree
Hide file tree
Showing 6 changed files with 309 additions and 22 deletions.
1 change: 1 addition & 0 deletions chromeos/components/quick_answers/BUILD.gn
Expand Up @@ -96,6 +96,7 @@ source_set("unit_tests") {
"translation_result_loader_unittest.cc",
"understanding/intent_generator_unittest.cc",
"utils/language_detector_unittest.cc",
"utils/spell_checker_unittest.cc",
"utils/unit_converter_unittest.cc",
]

Expand Down
58 changes: 58 additions & 0 deletions chromeos/components/quick_answers/test/fake_quick_answers_state.cc
Expand Up @@ -7,3 +7,61 @@
FakeQuickAnswersState::FakeQuickAnswersState() = default;

FakeQuickAnswersState::~FakeQuickAnswersState() = default;

void FakeQuickAnswersState::SetSettingsEnabled(bool settings_enabled) {
if (settings_enabled_ == settings_enabled) {
return;
}
settings_enabled_ = settings_enabled;

for (auto& observer : observers_) {
observer.OnSettingsEnabled(settings_enabled_);
}
}

void FakeQuickAnswersState::SetConsentStatus(
quick_answers::prefs::ConsentStatus consent_status) {
if (consent_status_ == consent_status) {
return;
}
consent_status_ = consent_status;

for (auto& observer : observers_) {
observer.OnConsentStatusUpdated(consent_status_);
}
}

void FakeQuickAnswersState::SetApplicationLocale(const std::string& locale) {
if (resolved_application_locale_ == locale) {
return;
}
resolved_application_locale_ = locale;

for (auto& observer : observers_) {
observer.OnApplicationLocaleReady(locale);
}

UpdateEligibility();
}

void FakeQuickAnswersState::SetPreferredLanguages(
const std::string& preferred_languages) {
if (preferred_languages_ == preferred_languages) {
return;
}
preferred_languages_ = preferred_languages;

for (auto& observer : observers_) {
observer.OnPreferredLanguagesChanged(preferred_languages);
}
}

void FakeQuickAnswersState::OnPrefsInitialized() {
prefs_initialized_ = true;

for (auto& observer : observers_) {
observer.OnPrefsInitialized();
}

UpdateEligibility();
}
Expand Up @@ -18,12 +18,11 @@ class FakeQuickAnswersState : public QuickAnswersState {

~FakeQuickAnswersState() override;

void set_application_locale(const std::string& locale) {
resolved_application_locale_ = locale;
}
void set_preferred_languages(const std::string& preferred_languages) {
preferred_languages_ = preferred_languages;
}
void SetSettingsEnabled(bool settings_enabled);
void SetConsentStatus(quick_answers::prefs::ConsentStatus consent_status);
void SetApplicationLocale(const std::string& locale);
void SetPreferredLanguages(const std::string& preferred_languages);
void OnPrefsInitialized();
};

#endif // CHROMEOS_COMPONENTS_QUICK_ANSWERS_TEST_FAKE_QUICK_ANSWERS_STATE_H_
Expand Up @@ -90,8 +90,8 @@ class IntentGeneratorTest : public QuickAnswersTestBase {
base::Unretained(this)));

fake_quick_answers_state()->set_use_text_annotator_for_testing();
fake_quick_answers_state()->set_application_locale("en");
fake_quick_answers_state()->set_preferred_languages("en");
fake_quick_answers_state()->SetApplicationLocale("en");
fake_quick_answers_state()->SetPreferredLanguages("en");
}

void TearDown() override {
Expand Down Expand Up @@ -141,8 +141,8 @@ TEST_F(IntentGeneratorTest, TranslationIntent) {

QuickAnswersRequest request;
request.selected_text = "quick answers";
fake_quick_answers_state()->set_application_locale("es");
fake_quick_answers_state()->set_preferred_languages("es");
fake_quick_answers_state()->SetApplicationLocale("es");
fake_quick_answers_state()->SetPreferredLanguages("es");
intent_generator_->GenerateIntent(request);

FlushForTesting();
Expand All @@ -161,8 +161,8 @@ TEST_F(IntentGeneratorTest, TranslationIntentWithSubtag) {

QuickAnswersRequest request;
request.selected_text = "quick answers";
fake_quick_answers_state()->set_application_locale("es");
fake_quick_answers_state()->set_preferred_languages("es");
fake_quick_answers_state()->SetApplicationLocale("es");
fake_quick_answers_state()->SetPreferredLanguages("es");
intent_generator_->GenerateIntent(request);

FlushForTesting();
Expand All @@ -182,8 +182,8 @@ TEST_F(IntentGeneratorTest, TranslationIntentSameLanguage) {

QuickAnswersRequest request;
request.selected_text = "quick answers";
fake_quick_answers_state()->set_application_locale("en");
fake_quick_answers_state()->set_preferred_languages("en");
fake_quick_answers_state()->SetApplicationLocale("en");
fake_quick_answers_state()->SetPreferredLanguages("en");
intent_generator_->GenerateIntent(request);

FlushForTesting();
Expand All @@ -201,8 +201,8 @@ TEST_F(IntentGeneratorTest, TranslationIntentPreferredLocale) {

QuickAnswersRequest request;
request.selected_text = "quick answers";
fake_quick_answers_state()->set_application_locale("es");
fake_quick_answers_state()->set_preferred_languages("es,en,zh");
fake_quick_answers_state()->SetApplicationLocale("es");
fake_quick_answers_state()->SetPreferredLanguages("es,en,zh");
intent_generator_->GenerateIntent(request);

FlushForTesting();
Expand All @@ -220,8 +220,8 @@ TEST_F(IntentGeneratorTest, TranslationIntentPreferredLanguage) {

QuickAnswersRequest request;
request.selected_text = "quick answers";
fake_quick_answers_state()->set_application_locale("es");
fake_quick_answers_state()->set_preferred_languages("es-MX,en-US,zh-CN");
fake_quick_answers_state()->SetApplicationLocale("es");
fake_quick_answers_state()->SetPreferredLanguages("es-MX,en-US,zh-CN");
intent_generator_->GenerateIntent(request);

FlushForTesting();
Expand All @@ -242,8 +242,8 @@ TEST_F(IntentGeneratorTest, TranslationIntentTextLengthAboveThreshold) {
"Search the world's information, including webpages, images, videos and "
"more. Google has many special features to help you find exactly what "
"you're looking ...";
fake_quick_answers_state()->set_application_locale("es");
fake_quick_answers_state()->set_preferred_languages("es");
fake_quick_answers_state()->SetApplicationLocale("es");
fake_quick_answers_state()->SetPreferredLanguages("es");
intent_generator_->GenerateIntent(request);

FlushForTesting();
Expand Down Expand Up @@ -492,8 +492,8 @@ TEST_F(IntentGeneratorTest, TextAnnotationUnitIntentExtraCharsAboveThreshold) {
}

TEST_F(IntentGeneratorTest, TextAnnotationNonEnglishLanguage) {
fake_quick_answers_state()->set_application_locale("es");
fake_quick_answers_state()->set_preferred_languages("es");
fake_quick_answers_state()->SetApplicationLocale("es");
fake_quick_answers_state()->SetPreferredLanguages("es");

std::unique_ptr<QuickAnswersRequest> quick_answers_request =
std::make_unique<QuickAnswersRequest>();
Expand Down
5 changes: 5 additions & 0 deletions chromeos/components/quick_answers/utils/spell_checker.h
Expand Up @@ -55,6 +55,11 @@ class SpellChecker : public QuickAnswersStateObserver {
return weak_factory_.GetWeakPtr();
}

std::vector<std::unique_ptr<SpellCheckLanguage>>&
GetSpellcheckLanguagesForTesting() {
return spellcheck_languages_;
}

private:
// Check feature eligibility and correspondingly update languages list. If
// |should_recreate_languages_list| is false, languages list will not be
Expand Down

0 comments on commit e19ffe5

Please sign in to comment.