Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(199)

Unified Diff: chrome/browser/speech/tts_controller_unittest.cc

Issue 2364753002: Improve TTS GetMatchingVoices algorithm (Closed)
Patch Set: Address feedback Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/speech/tts_controller_unittest.cc
diff --git a/chrome/browser/speech/tts_controller_unittest.cc b/chrome/browser/speech/tts_controller_unittest.cc
index 9aa8450f71909e40c77459f22cabd3355baacc2c..55bb114e72fedbf98b80588ca86d1f98225a54c2 100644
--- a/chrome/browser/speech/tts_controller_unittest.cc
+++ b/chrome/browser/speech/tts_controller_unittest.cc
@@ -9,7 +9,7 @@
#include "chrome/browser/speech/tts_platform.h"
#include "testing/gtest/include/gtest/gtest.h"
-class TtsApiControllerTest : public testing::Test {
+class TtsControllerTest : public testing::Test {
};
// Platform Tts implementation that does nothing.
@@ -42,7 +42,7 @@ class TestableTtsController : public TtsControllerImpl {
~TestableTtsController() override {}
};
-TEST_F(TtsApiControllerTest, TestTtsControllerShutdown) {
+TEST_F(TtsControllerTest, TestTtsControllerShutdown) {
DummyTtsPlatformImpl platform_impl;
TestableTtsController* controller =
new TestableTtsController();
@@ -62,3 +62,90 @@ TEST_F(TtsApiControllerTest, TestTtsControllerShutdown) {
// utterances doesn't cause a crash.
delete controller;
}
+
+TEST_F(TtsControllerTest, TestGetMatchingVoice) {
+ TtsControllerImpl* tts_controller = TtsControllerImpl::GetInstance();
+
+ {
+ // Calling GetMatchingVoice with no voices returns -1
+ Utterance utterance(nullptr);
+ std::vector<VoiceData> voices;
+ EXPECT_EQ(-1, tts_controller->GetMatchingVoice(&utterance, voices));
+ }
+
+ {
+ // Calling GetMatchingVoice with any voices returns the first one
+ // even if there are no criteria that match.
+ Utterance utterance(nullptr);
+ std::vector<VoiceData> voices;
+ voices.push_back(VoiceData());
+ voices.push_back(VoiceData());
+ EXPECT_EQ(0, tts_controller->GetMatchingVoice(&utterance, voices));
+ }
+
+ {
+ // If nothing else matches, the English voice is returned.
+ // (In tests the language will always be English.)
+ Utterance utterance(nullptr);
+ std::vector<VoiceData> voices;
+ VoiceData fr_voice;
+ fr_voice.lang = "fr";
+ voices.push_back(fr_voice);
+ VoiceData en_voice;
+ en_voice.lang = "en";
+ voices.push_back(en_voice);
+ VoiceData de_voice;
+ de_voice.lang = "de";
+ voices.push_back(de_voice);
+ EXPECT_EQ(1, tts_controller->GetMatchingVoice(&utterance, voices));
+ }
+
+ {
+ // Check precedence of various matching criteria.
+ std::vector<VoiceData> voices;
+ VoiceData voice0;
+ voices.push_back(voice0);
+ VoiceData voice1;
+ voice1.gender = TTS_GENDER_FEMALE;
+ voices.push_back(voice1);
+ VoiceData voice2;
+ voice2.events.insert(TTS_EVENT_WORD);
+ voices.push_back(voice2);
+ VoiceData voice3;
+ voice3.lang = "de-DE";
+ voices.push_back(voice3);
+ VoiceData voice4;
+ voice4.lang = "fr-CA";
+ voices.push_back(voice4);
+ VoiceData voice5;
+ voice5.name = "Voice5";
+ voices.push_back(voice5);
+ VoiceData voice6;
+ voice6.extension_id = "id6";
+ voices.push_back(voice6);
+
+ Utterance utterance(nullptr);
+ EXPECT_EQ(0, tts_controller->GetMatchingVoice(&utterance, voices));
+
+ utterance.set_gender(TTS_GENDER_FEMALE);
+ EXPECT_EQ(1, tts_controller->GetMatchingVoice(&utterance, voices));
+
+ std::set<TtsEventType> types;
+ types.insert(TTS_EVENT_WORD);
+ utterance.set_required_event_types(types);
+ EXPECT_EQ(2, tts_controller->GetMatchingVoice(&utterance, voices));
+
+ utterance.set_lang("de-DE");
+ EXPECT_EQ(3, tts_controller->GetMatchingVoice(&utterance, voices));
+
+ utterance.set_lang("fr-FR");
+ EXPECT_EQ(4, tts_controller->GetMatchingVoice(&utterance, voices));
+
+ utterance.set_voice_name("Voice5");
+ EXPECT_EQ(5, tts_controller->GetMatchingVoice(&utterance, voices));
+
+ utterance.set_voice_name("");
+ utterance.set_extension_id("id6");
+ EXPECT_EQ(6, tts_controller->GetMatchingVoice(&utterance, voices));
+ }
+}
« no previous file with comments | « chrome/browser/speech/tts_controller_impl.cc ('k') | chrome/test/data/extensions/api_test/tts_engine/register_engine/test.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698