blob: 882766f5157c9ed4d174dde2698bba6d03e1c50e [file] [log] [blame]
solenberg566ef242015-11-06 15:34:49 -08001/*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
kwibergfffa42b2016-02-23 10:46:32 -080011#include <memory>
12
kwiberg77eab702016-09-28 17:42:01 -070013#include "webrtc/test/gtest.h"
solenberg566ef242015-11-06 15:34:49 -080014
15#include "webrtc/audio/audio_state.h"
solenberg566ef242015-11-06 15:34:49 -080016#include "webrtc/test/mock_voice_engine.h"
17
18namespace webrtc {
19namespace test {
20namespace {
21
22struct ConfigHelper {
23 ConfigHelper() {
24 EXPECT_CALL(voice_engine_,
25 RegisterVoiceEngineObserver(testing::_)).WillOnce(testing::Return(0));
26 EXPECT_CALL(voice_engine_,
27 DeRegisterVoiceEngineObserver()).WillOnce(testing::Return(0));
28 config_.voice_engine = &voice_engine_;
29 }
30 AudioState::Config& config() { return config_; }
31 MockVoiceEngine& voice_engine() { return voice_engine_; }
32
33 private:
solenberg3a941542015-11-16 07:34:50 -080034 testing::StrictMock<MockVoiceEngine> voice_engine_;
solenberg566ef242015-11-06 15:34:49 -080035 AudioState::Config config_;
36};
37} // namespace
38
39TEST(AudioStateTest, Create) {
40 ConfigHelper helper;
41 rtc::scoped_refptr<AudioState> audio_state =
42 AudioState::Create(helper.config());
43 EXPECT_TRUE(audio_state.get());
44}
45
46TEST(AudioStateTest, ConstructDestruct) {
47 ConfigHelper helper;
kwibergfffa42b2016-02-23 10:46:32 -080048 std::unique_ptr<internal::AudioState> audio_state(
solenberg566ef242015-11-06 15:34:49 -080049 new internal::AudioState(helper.config()));
50}
51
52TEST(AudioStateTest, GetVoiceEngine) {
53 ConfigHelper helper;
kwibergfffa42b2016-02-23 10:46:32 -080054 std::unique_ptr<internal::AudioState> audio_state(
solenberg566ef242015-11-06 15:34:49 -080055 new internal::AudioState(helper.config()));
56 EXPECT_EQ(audio_state->voice_engine(), &helper.voice_engine());
57}
58
59TEST(AudioStateTest, TypingNoiseDetected) {
60 ConfigHelper helper;
kwibergfffa42b2016-02-23 10:46:32 -080061 std::unique_ptr<internal::AudioState> audio_state(
solenberg566ef242015-11-06 15:34:49 -080062 new internal::AudioState(helper.config()));
63 VoiceEngineObserver* voe_observer =
64 static_cast<VoiceEngineObserver*>(audio_state.get());
65 EXPECT_FALSE(audio_state->typing_noise_detected());
66
67 voe_observer->CallbackOnError(-1, VE_NOT_INITED);
68 EXPECT_FALSE(audio_state->typing_noise_detected());
69
70 voe_observer->CallbackOnError(-1, VE_TYPING_NOISE_WARNING);
71 EXPECT_TRUE(audio_state->typing_noise_detected());
72 voe_observer->CallbackOnError(-1, VE_NOT_INITED);
73 EXPECT_TRUE(audio_state->typing_noise_detected());
74
75 voe_observer->CallbackOnError(-1, VE_TYPING_NOISE_OFF_WARNING);
76 EXPECT_FALSE(audio_state->typing_noise_detected());
77 voe_observer->CallbackOnError(-1, VE_NOT_INITED);
78 EXPECT_FALSE(audio_state->typing_noise_detected());
79}
80} // namespace test
81} // namespace webrtc