| /* |
| * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #include "webrtc/voice_engine/test/auto_test/fixtures/after_streaming_fixture.h" |
| |
| class AgcConfigTest : public AfterStreamingFixture { |
| protected: |
| void SetUp() { |
| // These should be defaults for the AGC config. |
| default_agc_config_.digitalCompressionGaindB = 9; |
| default_agc_config_.limiterEnable = true; |
| default_agc_config_.targetLeveldBOv = 3; |
| } |
| |
| webrtc::AgcConfig default_agc_config_; |
| }; |
| |
| TEST_F(AgcConfigTest, HasCorrectDefaultConfiguration) { |
| webrtc::AgcConfig agc_config; |
| |
| EXPECT_EQ(0, voe_apm_->GetAgcConfig(agc_config)); |
| |
| EXPECT_EQ(default_agc_config_.targetLeveldBOv, agc_config.targetLeveldBOv); |
| EXPECT_EQ(default_agc_config_.digitalCompressionGaindB, |
| agc_config.digitalCompressionGaindB); |
| EXPECT_EQ(default_agc_config_.limiterEnable, agc_config.limiterEnable); |
| } |
| |
| TEST_F(AgcConfigTest, DealsWithInvalidParameters) { |
| webrtc::AgcConfig agc_config = default_agc_config_; |
| agc_config.digitalCompressionGaindB = 91; |
| EXPECT_EQ(-1, voe_apm_->SetAgcConfig(agc_config)) << "Should not be able " |
| "to set gain to more than 90 dB."; |
| EXPECT_EQ(VE_APM_ERROR, voe_base_->LastError()); |
| |
| agc_config = default_agc_config_; |
| agc_config.targetLeveldBOv = 32; |
| EXPECT_EQ(-1, voe_apm_->SetAgcConfig(agc_config)) << "Should not be able " |
| "to set target level to more than 31."; |
| EXPECT_EQ(VE_APM_ERROR, voe_base_->LastError()); |
| } |
| |
| TEST_F(AgcConfigTest, CanGetAndSetAgcStatus) { |
| webrtc::AgcConfig agc_config; |
| agc_config.digitalCompressionGaindB = 17; |
| agc_config.targetLeveldBOv = 11; |
| agc_config.limiterEnable = false; |
| |
| webrtc::AgcConfig actual_config; |
| EXPECT_EQ(0, voe_apm_->SetAgcConfig(agc_config)); |
| EXPECT_EQ(0, voe_apm_->GetAgcConfig(actual_config)); |
| |
| EXPECT_EQ(agc_config.digitalCompressionGaindB, |
| actual_config.digitalCompressionGaindB); |
| EXPECT_EQ(agc_config.limiterEnable, |
| actual_config.limiterEnable); |
| EXPECT_EQ(agc_config.targetLeveldBOv, |
| actual_config.targetLeveldBOv); |
| } |