1 /* 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 11 #include <list> 12 13 #include "testing/gtest/include/gtest/gtest.h" 14 15 #include "webrtc/audio_state.h" 16 #include "webrtc/call.h" 17 #include "webrtc/test/mock_voice_engine.h" 18 19 namespace { 20 21 struct CallHelper { 22 CallHelper() { 23 webrtc::AudioState::Config audio_state_config; 24 audio_state_config.voice_engine = &voice_engine_; 25 webrtc::Call::Config config; 26 config.audio_state = webrtc::AudioState::Create(audio_state_config); 27 call_.reset(webrtc::Call::Create(config)); 28 } 29 30 webrtc::Call* operator->() { return call_.get(); } 31 32 private: 33 testing::NiceMock<webrtc::test::MockVoiceEngine> voice_engine_; 34 rtc::scoped_ptr<webrtc::Call> call_; 35 }; 36 } // namespace 37 38 namespace webrtc { 39 40 TEST(CallTest, ConstructDestruct) { 41 CallHelper call; 42 } 43 44 TEST(CallTest, CreateDestroy_AudioSendStream) { 45 CallHelper call; 46 AudioSendStream::Config config(nullptr); 47 config.rtp.ssrc = 42; 48 config.voe_channel_id = 123; 49 AudioSendStream* stream = call->CreateAudioSendStream(config); 50 EXPECT_NE(stream, nullptr); 51 call->DestroyAudioSendStream(stream); 52 } 53 54 TEST(CallTest, CreateDestroy_AudioReceiveStream) { 55 CallHelper call; 56 AudioReceiveStream::Config config; 57 config.rtp.remote_ssrc = 42; 58 config.voe_channel_id = 123; 59 AudioReceiveStream* stream = call->CreateAudioReceiveStream(config); 60 EXPECT_NE(stream, nullptr); 61 call->DestroyAudioReceiveStream(stream); 62 } 63 64 TEST(CallTest, CreateDestroy_AudioSendStreams) { 65 CallHelper call; 66 AudioSendStream::Config config(nullptr); 67 config.voe_channel_id = 123; 68 std::list<AudioSendStream*> streams; 69 for (int i = 0; i < 2; ++i) { 70 for (uint32_t ssrc = 0; ssrc < 1234567; ssrc += 34567) { 71 config.rtp.ssrc = ssrc; 72 AudioSendStream* stream = call->CreateAudioSendStream(config); 73 EXPECT_NE(stream, nullptr); 74 if (ssrc & 1) { 75 streams.push_back(stream); 76 } else { 77 streams.push_front(stream); 78 } 79 } 80 for (auto s : streams) { 81 call->DestroyAudioSendStream(s); 82 } 83 streams.clear(); 84 } 85 } 86 87 TEST(CallTest, CreateDestroy_AudioReceiveStreams) { 88 CallHelper call; 89 AudioReceiveStream::Config config; 90 config.voe_channel_id = 123; 91 std::list<AudioReceiveStream*> streams; 92 for (int i = 0; i < 2; ++i) { 93 for (uint32_t ssrc = 0; ssrc < 1234567; ssrc += 34567) { 94 config.rtp.remote_ssrc = ssrc; 95 AudioReceiveStream* stream = call->CreateAudioReceiveStream(config); 96 EXPECT_NE(stream, nullptr); 97 if (ssrc & 1) { 98 streams.push_back(stream); 99 } else { 100 streams.push_front(stream); 101 } 102 } 103 for (auto s : streams) { 104 call->DestroyAudioReceiveStream(s); 105 } 106 streams.clear(); 107 } 108 } 109 } // namespace webrtc 110