blob: eaa5b8f17dbd35140a79520e240f9602a2f894ba [file] [log] [blame]
ossu20a4b3f2017-04-27 09:08:521/*
2 * Copyright (c) 2017 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
Mirko Bonadei92ea95e2017-09-15 04:47:3111#ifndef TEST_MOCK_AUDIO_ENCODER_FACTORY_H_
12#define TEST_MOCK_AUDIO_ENCODER_FACTORY_H_
ossu20a4b3f2017-04-27 09:08:5213
14#include <memory>
15#include <vector>
16
Mirko Bonadei92ea95e2017-09-15 04:47:3117#include "api/audio_codecs/audio_encoder_factory.h"
Mirko Bonadei9d9c2d52022-10-07 21:47:4918#include "api/make_ref_counted.h"
Mirko Bonadeid9708072019-01-25 19:26:4819#include "api/scoped_refptr.h"
Mirko Bonadei92ea95e2017-09-15 04:47:3120#include "test/gmock.h"
ossu20a4b3f2017-04-27 09:08:5221
22namespace webrtc {
23
Mirko Bonadei6a489f22019-04-09 13:11:1224class MockAudioEncoderFactory
25 : public ::testing::NiceMock<AudioEncoderFactory> {
ossu20a4b3f2017-04-27 09:08:5226 public:
Danil Chapovalov54706d62020-05-14 17:50:0127 MOCK_METHOD(std::vector<AudioCodecSpec>,
28 GetSupportedEncoders,
29 (),
30 (override));
31 MOCK_METHOD(absl::optional<AudioCodecInfo>,
32 QueryAudioEncoder,
33 (const SdpAudioFormat& format),
34 (override));
ossu20a4b3f2017-04-27 09:08:5235
Karl Wibergd6fbf2a2018-02-27 12:37:3136 std::unique_ptr<AudioEncoder> MakeAudioEncoder(
37 int payload_type,
38 const SdpAudioFormat& format,
Danil Chapovalov54706d62020-05-14 17:50:0139 absl::optional<AudioCodecPairId> codec_pair_id) override {
ossu20a4b3f2017-04-27 09:08:5240 std::unique_ptr<AudioEncoder> return_value;
Karl Wibergd6fbf2a2018-02-27 12:37:3141 MakeAudioEncoderMock(payload_type, format, codec_pair_id, &return_value);
ossu20a4b3f2017-04-27 09:08:5242 return return_value;
43 }
Danil Chapovalov54706d62020-05-14 17:50:0144 MOCK_METHOD(void,
45 MakeAudioEncoderMock,
46 (int payload_type,
47 const SdpAudioFormat& format,
48 absl::optional<AudioCodecPairId> codec_pair_id,
49 std::unique_ptr<AudioEncoder>*));
ossu20a4b3f2017-04-27 09:08:5250
51 // Creates a MockAudioEncoderFactory with no formats and that may not be
52 // invoked to create a codec - useful for initializing a voice engine, for
53 // example.
54 static rtc::scoped_refptr<webrtc::MockAudioEncoderFactory>
55 CreateUnusedFactory() {
Mirko Bonadei6a489f22019-04-09 13:11:1256 using ::testing::_;
57 using ::testing::AnyNumber;
58 using ::testing::Return;
ossu20a4b3f2017-04-27 09:08:5259
Niels Möller93b20892022-01-13 12:50:2060 auto factory = rtc::make_ref_counted<webrtc::MockAudioEncoderFactory>();
ossu20a4b3f2017-04-27 09:08:5261 ON_CALL(*factory.get(), GetSupportedEncoders())
62 .WillByDefault(Return(std::vector<webrtc::AudioCodecSpec>()));
63 ON_CALL(*factory.get(), QueryAudioEncoder(_))
Danil Chapovalov431abd92018-06-18 10:54:1764 .WillByDefault(Return(absl::nullopt));
ossu20a4b3f2017-04-27 09:08:5265
66 EXPECT_CALL(*factory.get(), GetSupportedEncoders()).Times(AnyNumber());
67 EXPECT_CALL(*factory.get(), QueryAudioEncoder(_)).Times(AnyNumber());
Karl Wibergd6fbf2a2018-02-27 12:37:3168 EXPECT_CALL(*factory.get(), MakeAudioEncoderMock(_, _, _, _)).Times(0);
ossu20a4b3f2017-04-27 09:08:5269 return factory;
70 }
71
72 // Creates a MockAudioEncoderFactory with no formats that may be invoked to
73 // create a codec any number of times. It will, though, return nullptr on each
74 // call, since it supports no codecs.
75 static rtc::scoped_refptr<webrtc::MockAudioEncoderFactory>
76 CreateEmptyFactory() {
Mirko Bonadei6a489f22019-04-09 13:11:1277 using ::testing::_;
78 using ::testing::AnyNumber;
79 using ::testing::Return;
80 using ::testing::SetArgPointee;
ossu20a4b3f2017-04-27 09:08:5281
Niels Möller93b20892022-01-13 12:50:2082 auto factory = rtc::make_ref_counted<webrtc::MockAudioEncoderFactory>();
ossu20a4b3f2017-04-27 09:08:5283 ON_CALL(*factory.get(), GetSupportedEncoders())
84 .WillByDefault(Return(std::vector<webrtc::AudioCodecSpec>()));
85 ON_CALL(*factory.get(), QueryAudioEncoder(_))
Danil Chapovalov431abd92018-06-18 10:54:1786 .WillByDefault(Return(absl::nullopt));
Karl Wibergd6fbf2a2018-02-27 12:37:3187 ON_CALL(*factory.get(), MakeAudioEncoderMock(_, _, _, _))
88 .WillByDefault(SetArgPointee<3>(nullptr));
ossu20a4b3f2017-04-27 09:08:5289
90 EXPECT_CALL(*factory.get(), GetSupportedEncoders()).Times(AnyNumber());
91 EXPECT_CALL(*factory.get(), QueryAudioEncoder(_)).Times(AnyNumber());
Karl Wibergd6fbf2a2018-02-27 12:37:3192 EXPECT_CALL(*factory.get(), MakeAudioEncoderMock(_, _, _, _))
ossu20a4b3f2017-04-27 09:08:5293 .Times(AnyNumber());
94 return factory;
95 }
96};
97
98} // namespace webrtc
99
Mirko Bonadei92ea95e2017-09-15 04:47:31100#endif // TEST_MOCK_AUDIO_ENCODER_FACTORY_H_