xref: /aosp_15_r20/external/webrtc/api/voip/test/mock_voip_engine.h (revision d9f758449e529ab9291ac668be2861e7a55c2422)
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