Home | History | Annotate | Download | only in speech
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Unit tests for the TTS Controller.
      6 
      7 #include "base/values.h"
      8 #include "chrome/browser/speech/tts_controller.h"
      9 #include "chrome/browser/speech/tts_platform.h"
     10 #include "testing/gtest/include/gtest/gtest.h"
     11 
     12 class TtsApiControllerTest : public testing::Test {
     13 };
     14 
     15 // Platform Tts implementation that does nothing.
     16 class DummyTtsPlatformImpl : public TtsPlatformImpl {
     17  public:
     18   DummyTtsPlatformImpl() {}
     19   virtual ~DummyTtsPlatformImpl() {}
     20   virtual bool PlatformImplAvailable() OVERRIDE { return true; }
     21   virtual bool Speak(
     22       int utterance_id,
     23       const std::string& utterance,
     24       const std::string& lang,
     25       const VoiceData& voice,
     26       const UtteranceContinuousParameters& params) OVERRIDE {
     27     return true;
     28   }
     29   virtual bool IsSpeaking() OVERRIDE { return false; }
     30   virtual bool StopSpeaking() OVERRIDE { return true; }
     31   virtual void Pause() OVERRIDE {}
     32   virtual void Resume() OVERRIDE {}
     33   virtual void GetVoices(std::vector<VoiceData>* out_voices) OVERRIDE {}
     34   virtual std::string error() OVERRIDE { return std::string(); }
     35   virtual void clear_error() OVERRIDE {}
     36   virtual void set_error(const std::string& error) OVERRIDE {}
     37 };
     38 
     39 // Subclass of TtsController with a public ctor and dtor.
     40 class TestableTtsController : public TtsController {
     41  public:
     42   TestableTtsController() {}
     43   virtual ~TestableTtsController() {}
     44 };
     45 
     46 TEST_F(TtsApiControllerTest, TestTtsControllerShutdown) {
     47   DummyTtsPlatformImpl platform_impl;
     48   TestableTtsController* controller =
     49       new TestableTtsController();
     50   controller->SetPlatformImpl(&platform_impl);
     51 
     52   Utterance* utterance1 = new Utterance(NULL);
     53   utterance1->set_can_enqueue(true);
     54   utterance1->set_src_id(1);
     55   controller->SpeakOrEnqueue(utterance1);
     56 
     57   Utterance* utterance2 = new Utterance(NULL);
     58   utterance2->set_can_enqueue(true);
     59   utterance2->set_src_id(2);
     60   controller->SpeakOrEnqueue(utterance2);
     61 
     62   // Make sure that deleting the controller when there are pending
     63   // utterances doesn't cause a crash.
     64   delete controller;
     65 }
     66