mock_voip_engine.h (3887B)
1 /* 2 * Copyright (c) 2021 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 #ifndef API_VOIP_TEST_MOCK_VOIP_ENGINE_H_ 12 #define API_VOIP_TEST_MOCK_VOIP_ENGINE_H_ 13 14 #include <cstdint> 15 #include <map> 16 #include <optional> 17 18 #include "api/array_view.h" 19 #include "api/audio_codecs/audio_format.h" 20 #include "api/voip/voip_base.h" 21 #include "api/voip/voip_codec.h" 22 #include "api/voip/voip_dtmf.h" 23 #include "api/voip/voip_engine.h" 24 #include "api/voip/voip_network.h" 25 #include "api/voip/voip_statistics.h" 26 #include "api/voip/voip_volume_control.h" 27 #include "test/gmock.h" 28 29 namespace webrtc { 30 31 class MockVoipBase : public VoipBase { 32 public: 33 MOCK_METHOD(ChannelId, 34 CreateChannel, 35 (Transport*, std::optional<uint32_t>), 36 (override)); 37 MOCK_METHOD(VoipResult, ReleaseChannel, (ChannelId), (override)); 38 MOCK_METHOD(VoipResult, StartSend, (ChannelId), (override)); 39 MOCK_METHOD(VoipResult, StopSend, (ChannelId), (override)); 40 MOCK_METHOD(VoipResult, StartPlayout, (ChannelId), (override)); 41 MOCK_METHOD(VoipResult, StopPlayout, (ChannelId), (override)); 42 }; 43 44 class MockVoipCodec : public VoipCodec { 45 public: 46 MOCK_METHOD(VoipResult, 47 SetSendCodec, 48 (ChannelId, int, const SdpAudioFormat&), 49 (override)); 50 MOCK_METHOD(VoipResult, 51 SetReceiveCodecs, 52 (ChannelId, (const std::map<int, SdpAudioFormat>&)), 53 (override)); 54 }; 55 56 class MockVoipDtmf : public VoipDtmf { 57 public: 58 MOCK_METHOD(VoipResult, 59 RegisterTelephoneEventType, 60 (ChannelId, int, int), 61 (override)); 62 MOCK_METHOD(VoipResult, 63 SendDtmfEvent, 64 (ChannelId, DtmfEvent, int), 65 (override)); 66 }; 67 68 class MockVoipNetwork : public VoipNetwork { 69 public: 70 MOCK_METHOD(VoipResult, 71 ReceivedRTPPacket, 72 (ChannelId channel_id, ArrayView<const uint8_t> rtp_packet), 73 (override)); 74 MOCK_METHOD(VoipResult, 75 ReceivedRTCPPacket, 76 (ChannelId channel_id, ArrayView<const uint8_t> rtcp_packet), 77 (override)); 78 }; 79 80 class MockVoipStatistics : public VoipStatistics { 81 public: 82 MOCK_METHOD(VoipResult, 83 GetIngressStatistics, 84 (ChannelId, IngressStatistics&), 85 (override)); 86 MOCK_METHOD(VoipResult, 87 GetChannelStatistics, 88 (ChannelId channel_id, ChannelStatistics&), 89 (override)); 90 }; 91 92 class MockVoipVolumeControl : public VoipVolumeControl { 93 public: 94 MOCK_METHOD(VoipResult, SetInputMuted, (ChannelId, bool), (override)); 95 96 MOCK_METHOD(VoipResult, 97 GetInputVolumeInfo, 98 (ChannelId, VolumeInfo&), 99 (override)); 100 MOCK_METHOD(VoipResult, 101 GetOutputVolumeInfo, 102 (ChannelId, VolumeInfo&), 103 (override)); 104 }; 105 106 class MockVoipEngine : public VoipEngine { 107 public: 108 VoipBase& Base() override { return base_; } 109 VoipNetwork& Network() override { return network_; } 110 VoipCodec& Codec() override { return codec_; } 111 VoipDtmf& Dtmf() override { return dtmf_; } 112 VoipStatistics& Statistics() override { return statistics_; } 113 VoipVolumeControl& VolumeControl() override { return volume_; } 114 115 // Direct access to underlying members are required for testing. 116 MockVoipBase base_; 117 MockVoipNetwork network_; 118 MockVoipCodec codec_; 119 MockVoipDtmf dtmf_; 120 MockVoipStatistics statistics_; 121 MockVoipVolumeControl volume_; 122 }; 123 124 } // namespace webrtc 125 126 #endif // API_VOIP_TEST_MOCK_VOIP_ENGINE_H_