1566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg/* 2566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 3566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg * 4566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg * Use of this source code is governed by a BSD-style license 5566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg * that can be found in the LICENSE file in the root of the source 6566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg * tree. An additional intellectual property rights grant can be found 7566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg * in the file PATENTS. All contributing project authors may 8566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg * be found in the AUTHORS file in the root of the source tree. 9566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg */ 10566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg 11566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg#include "testing/gtest/include/gtest/gtest.h" 12566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg 13566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg#include "webrtc/audio/audio_state.h" 14566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg#include "webrtc/base/scoped_ptr.h" 15566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg#include "webrtc/test/mock_voice_engine.h" 16566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg 17566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenbergnamespace webrtc { 18566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenbergnamespace test { 19566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenbergnamespace { 20566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg 21566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenbergstruct ConfigHelper { 22566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg ConfigHelper() { 23566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg EXPECT_CALL(voice_engine_, 24566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg RegisterVoiceEngineObserver(testing::_)).WillOnce(testing::Return(0)); 25566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg EXPECT_CALL(voice_engine_, 26566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg DeRegisterVoiceEngineObserver()).WillOnce(testing::Return(0)); 27566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg config_.voice_engine = &voice_engine_; 28566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg } 29566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg AudioState::Config& config() { return config_; } 30566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg MockVoiceEngine& voice_engine() { return voice_engine_; } 31566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg 32566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg private: 333a94154035fa16e4efd91125311f076b547c38b9solenberg testing::StrictMock<MockVoiceEngine> voice_engine_; 34566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg AudioState::Config config_; 35566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg}; 36566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg} // namespace 37566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg 38566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenbergTEST(AudioStateTest, Create) { 39566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg ConfigHelper helper; 40566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg rtc::scoped_refptr<AudioState> audio_state = 41566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg AudioState::Create(helper.config()); 42566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg EXPECT_TRUE(audio_state.get()); 43566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg} 44566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg 45566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenbergTEST(AudioStateTest, ConstructDestruct) { 46566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg ConfigHelper helper; 47566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg rtc::scoped_ptr<internal::AudioState> audio_state( 48566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg new internal::AudioState(helper.config())); 49566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg} 50566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg 51566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenbergTEST(AudioStateTest, GetVoiceEngine) { 52566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg ConfigHelper helper; 53566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg rtc::scoped_ptr<internal::AudioState> audio_state( 54566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg new internal::AudioState(helper.config())); 55566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg EXPECT_EQ(audio_state->voice_engine(), &helper.voice_engine()); 56566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg} 57566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg 58566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenbergTEST(AudioStateTest, TypingNoiseDetected) { 59566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg ConfigHelper helper; 60566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg rtc::scoped_ptr<internal::AudioState> audio_state( 61566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg new internal::AudioState(helper.config())); 62566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg VoiceEngineObserver* voe_observer = 63566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg static_cast<VoiceEngineObserver*>(audio_state.get()); 64566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg EXPECT_FALSE(audio_state->typing_noise_detected()); 65566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg 66566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg voe_observer->CallbackOnError(-1, VE_NOT_INITED); 67566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg EXPECT_FALSE(audio_state->typing_noise_detected()); 68566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg 69566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg voe_observer->CallbackOnError(-1, VE_TYPING_NOISE_WARNING); 70566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg EXPECT_TRUE(audio_state->typing_noise_detected()); 71566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg voe_observer->CallbackOnError(-1, VE_NOT_INITED); 72566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg EXPECT_TRUE(audio_state->typing_noise_detected()); 73566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg 74566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg voe_observer->CallbackOnError(-1, VE_TYPING_NOISE_OFF_WARNING); 75566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg EXPECT_FALSE(audio_state->typing_noise_detected()); 76566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg voe_observer->CallbackOnError(-1, VE_NOT_INITED); 77566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg EXPECT_FALSE(audio_state->typing_noise_detected()); 78566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg} 79566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg} // namespace test 80566ef247b9779f6c9d0e7ec9eea6b037f4682c53solenberg} // namespace webrtc 81