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