1b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org/*
2b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org *
4b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org *  Use of this source code is governed by a BSD-style license
5b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org *  that can be found in the LICENSE file in the root of the source
6b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org *  tree. An additional intellectual property rights grant can be found
7b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org *  in the file PATENTS.  All contributing project authors may
8b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
9b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org */
10b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org
11b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org#include "webrtc/voice_engine/include/voe_base.h"
12b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org
13b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org#include "testing/gtest/include/gtest/gtest.h"
14b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org#include "webrtc/modules/audio_device/include/fake_audio_device.h"
15471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/modules/audio_processing/include/audio_processing.h"
16b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org#include "webrtc/system_wrappers/interface/scoped_ptr.h"
17b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org
18b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.orgnamespace webrtc {
19b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org
20b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.orgclass VoEBaseTest : public ::testing::Test {
21b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org protected:
22b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org  VoEBaseTest() :
23b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org      voe_(VoiceEngine::Create()),
24b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org      base_(VoEBase::GetInterface(voe_)),
25b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org      adm_(new FakeAudioDeviceModule) {
26b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org  }
27b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org
28b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org  ~VoEBaseTest() {
29b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org    base_->Release();
30b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org    VoiceEngine::Delete(voe_);
31b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org  }
32b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org
33b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org  VoiceEngine* voe_;
34b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org  VoEBase* base_;
35b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org  scoped_ptr<FakeAudioDeviceModule> adm_;
36b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org};
37b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org
38b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.orgTEST_F(VoEBaseTest, AcceptsAudioProcessingPtr) {
39b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org  AudioProcessing* audioproc = AudioProcessing::Create(0);
40b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org  EXPECT_EQ(0, base_->Init(adm_.get(), audioproc));
41b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org  EXPECT_EQ(audioproc, base_->audio_processing());
42b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org}
43b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org
44b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.orgTEST_F(VoEBaseTest, AudioProcessingCreatedAfterInit) {
45b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org  EXPECT_TRUE(base_->audio_processing() == NULL);
46b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org  EXPECT_EQ(0, base_->Init(adm_.get(), NULL));
47b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org  EXPECT_TRUE(base_->audio_processing() != NULL);
48b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org}
49b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org
50b79627b0f3cf072721f3ae4a584a4f90edba2d1bandrew@webrtc.org}  // namespace webrtc
51