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