Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / voice_engine / test / auto_test / extended / agc_config_test.cc
1 /*
2  *  Copyright (c) 2012 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
11 #include "webrtc/voice_engine/test/auto_test/fixtures/after_streaming_fixture.h"
12
13 class AgcConfigTest : public AfterStreamingFixture {
14  protected:
15   void SetUp() {
16     // These should be defaults for the AGC config.
17     default_agc_config_.digitalCompressionGaindB = 9;
18     default_agc_config_.limiterEnable = true;
19     default_agc_config_.targetLeveldBOv = 3;
20   }
21
22   webrtc::AgcConfig default_agc_config_;
23 };
24
25 TEST_F(AgcConfigTest, HasCorrectDefaultConfiguration) {
26   webrtc::AgcConfig agc_config;
27
28   EXPECT_EQ(0, voe_apm_->GetAgcConfig(agc_config));
29
30   EXPECT_EQ(default_agc_config_.targetLeveldBOv, agc_config.targetLeveldBOv);
31   EXPECT_EQ(default_agc_config_.digitalCompressionGaindB,
32             agc_config.digitalCompressionGaindB);
33   EXPECT_EQ(default_agc_config_.limiterEnable, agc_config.limiterEnable);
34 }
35
36 TEST_F(AgcConfigTest, DealsWithInvalidParameters) {
37   webrtc::AgcConfig agc_config = default_agc_config_;
38   agc_config.digitalCompressionGaindB = 91;
39   EXPECT_EQ(-1, voe_apm_->SetAgcConfig(agc_config)) << "Should not be able "
40       "to set gain to more than 90 dB.";
41   EXPECT_EQ(VE_APM_ERROR, voe_base_->LastError());
42
43   agc_config = default_agc_config_;
44   agc_config.targetLeveldBOv = 32;
45   EXPECT_EQ(-1, voe_apm_->SetAgcConfig(agc_config)) << "Should not be able "
46       "to set target level to more than 31.";
47   EXPECT_EQ(VE_APM_ERROR, voe_base_->LastError());
48 }
49
50 TEST_F(AgcConfigTest, CanGetAndSetAgcStatus) {
51   webrtc::AgcConfig agc_config;
52   agc_config.digitalCompressionGaindB = 17;
53   agc_config.targetLeveldBOv = 11;
54   agc_config.limiterEnable = false;
55
56   webrtc::AgcConfig actual_config;
57   EXPECT_EQ(0, voe_apm_->SetAgcConfig(agc_config));
58   EXPECT_EQ(0, voe_apm_->GetAgcConfig(actual_config));
59
60   EXPECT_EQ(agc_config.digitalCompressionGaindB,
61             actual_config.digitalCompressionGaindB);
62   EXPECT_EQ(agc_config.limiterEnable,
63             actual_config.limiterEnable);
64   EXPECT_EQ(agc_config.targetLeveldBOv,
65             actual_config.targetLeveldBOv);
66 }
67
68 TEST_F(AgcConfigTest, HasCorrectDefaultRxConfiguration) {
69   webrtc::AgcConfig agc_config;
70
71   EXPECT_EQ(0, voe_apm_->GetRxAgcConfig(channel_, agc_config));
72
73   EXPECT_EQ(default_agc_config_.targetLeveldBOv, agc_config.targetLeveldBOv);
74   EXPECT_EQ(default_agc_config_.digitalCompressionGaindB,
75       agc_config.digitalCompressionGaindB);
76   EXPECT_EQ(default_agc_config_.limiterEnable, agc_config.limiterEnable);
77 }
78
79 TEST_F(AgcConfigTest, DealsWithInvalidRxParameters) {
80   webrtc::AgcConfig agc_config = default_agc_config_;
81   agc_config.digitalCompressionGaindB = 91;
82   EXPECT_EQ(-1, voe_apm_->SetRxAgcConfig(channel_, agc_config)) <<
83       "Should not be able to set RX gain to more than 90 dB.";
84   EXPECT_EQ(VE_APM_ERROR, voe_base_->LastError());
85
86   agc_config = default_agc_config_;
87   agc_config.targetLeveldBOv = 32;
88   EXPECT_EQ(-1, voe_apm_->SetRxAgcConfig(channel_, agc_config)) <<
89       "Should not be able to set target level to more than 31.";
90   EXPECT_EQ(VE_APM_ERROR, voe_base_->LastError());
91 }
92
93 TEST_F(AgcConfigTest, CanGetAndSetRxAgcStatus) {
94   webrtc::AgcConfig agc_config;
95   agc_config.digitalCompressionGaindB = 17;
96   agc_config.targetLeveldBOv = 11;
97   agc_config.limiterEnable = false;
98
99   webrtc::AgcConfig actual_config;
100   EXPECT_EQ(0, voe_apm_->SetRxAgcConfig(channel_, agc_config));
101   EXPECT_EQ(0, voe_apm_->GetRxAgcConfig(channel_, actual_config));
102
103   EXPECT_EQ(agc_config.digitalCompressionGaindB,
104             actual_config.digitalCompressionGaindB);
105   EXPECT_EQ(agc_config.limiterEnable,
106             actual_config.limiterEnable);
107   EXPECT_EQ(agc_config.targetLeveldBOv,
108             actual_config.targetLeveldBOv);
109 }