Chromium Code Reviews| Index: webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h |
| diff --git a/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h b/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h |
| index 66adde4be159c3af8fd0b404d09f80e8cc95c021..775ec457cd2c5b09f95c83ee7b41aa933f5ad09e 100644 |
| --- a/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h |
| +++ b/webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h |
| @@ -1,5 +1,5 @@ |
| /* |
| - * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. |
| + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| @@ -11,15 +11,18 @@ |
| #ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_MOCK_MOCK_AUDIO_ENCODER_H_ |
| #define WEBRTC_MODULES_AUDIO_CODING_CODECS_MOCK_MOCK_AUDIO_ENCODER_H_ |
| +#include "webrtc/base/array_view.h" |
| #include "webrtc/modules/audio_coding/codecs/audio_encoder.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| +#include <functional> |
| + |
| namespace webrtc { |
| -class MockAudioEncoder final : public AudioEncoder { |
| +class MockAudioEncoderBase : public AudioEncoder { |
| public: |
| - ~MockAudioEncoder() override { Die(); } |
| + ~MockAudioEncoderBase() override { Die(); } |
| MOCK_METHOD0(Die, void()); |
| MOCK_METHOD1(Mark, void(std::string desc)); |
| MOCK_CONST_METHOD0(MaxEncodedBytes, size_t()); |
| @@ -29,12 +32,6 @@ class MockAudioEncoder final : public AudioEncoder { |
| MOCK_CONST_METHOD0(Num10MsFramesInNextPacket, size_t()); |
| MOCK_CONST_METHOD0(Max10MsFramesInAPacket, size_t()); |
| MOCK_CONST_METHOD0(GetTargetBitrate, int()); |
| - // Note, we explicitly chose not to create a mock for the Encode method. |
| - MOCK_METHOD4(EncodeInternal, |
| - EncodedInfo(uint32_t timestamp, |
| - rtc::ArrayView<const int16_t> audio, |
| - size_t max_encoded_bytes, |
| - uint8_t* encoded)); |
| MOCK_METHOD0(Reset, void()); |
| MOCK_METHOD1(SetFec, bool(bool enable)); |
| MOCK_METHOD1(SetDtx, bool(bool enable)); |
| @@ -46,6 +43,76 @@ class MockAudioEncoder final : public AudioEncoder { |
| MOCK_METHOD1(SetMaxPayloadSize, void(int max_payload_size_bytes)); |
| }; |
| +class MockAudioEncoder final : public MockAudioEncoderBase { |
| + public: |
| + // Note, we explicitly chose not to create a mock for the Encode method. |
| + MOCK_METHOD3(EncodeInternal, |
| + EncodedInfo(uint32_t timestamp, |
| + rtc::ArrayView<const int16_t> audio, |
| + rtc::Buffer* encoded)); |
| +}; |
| + |
| +class MockAudioEncoderDeprecated final : public MockAudioEncoderBase { |
| + public: |
| + // Note, we explicitly chose not to create a mock for the Encode method. |
| + MOCK_METHOD4(EncodeInternal, |
| + EncodedInfo(uint32_t timestamp, |
| + rtc::ArrayView<const int16_t> audio, |
| + size_t max_encoded_bytes, |
| + uint8_t* encoded)); |
| +}; |
| + |
| +// Contains helper functions for mocking AudioEncoder::Encode calls. There are |
| +// checks in place, for example in AudioEncoder::Encode, that ensure the |
| +// rtc::Buffer provided grows as many bytes as the EncodeInternal implementation |
| +// claims it has written. These functions make sure to grow the Buffer |
| +// appropriately. |
| +namespace MockAudioEncoderHelper { |
|
kwiberg-webrtc
2016/02/27 19:21:46
Why a namespace? And if you do end up having one a
ossu
2016/02/29 08:51:24
Namespace because it's no longer a class. The name
|
| +using EncodeFunction = |
| + std::function<AudioEncoder::EncodedInfo(uint32_t timestamp, |
|
kwiberg-webrtc
2016/02/27 19:21:46
Bad news: std::function is not yet allowed. https:
ossu
2016/02/29 08:51:24
Awww, daaang. :/
Well, I'll see what I can do. Not
|
| + rtc::ArrayView<const int16_t> audio, |
| + rtc::Buffer* encoded)>; |
| + |
| +using DeprecatedEncodeFunction = |
| + std::function<AudioEncoder::EncodedInfo(uint32_t timestamp, |
| + rtc::ArrayView<const int16_t> audio, |
| + size_t max_bytes_encoded, |
| + uint8_t* encoded)>; |
| + |
| +// Returns a function that will return |info| and adjust the rtc::Buffer |
| +// given as input to it, so it is info.encoded_bytes larger. |
| +EncodeFunction FakeEncoding(AudioEncoder::EncodedInfo info); |
| + |
| +// Shorthand version of the function above, for when only setting encoded_bytes |
| +// in the EncodedInfo object matters. |
| +EncodeFunction FakeEncoding(size_t encoded_bytes); |
| + |
| +// Returns a function that will return |info| and append the data in the payload |
| +// to the buffer given as input to it. Up to info.encoded_bytes are appended - |
| +// make sure the payload is big enough! |
| +// Since it uses an ArrayView, it _does not_ copy the payload. Make sure it |
| +// doesn't fall out of scope! |
| + |
| +EncodeFunction CopyEncoding(AudioEncoder::EncodedInfo info, |
| + rtc::ArrayView<const uint8_t> payload); |
| + |
| +// Shorthand version of the function above, for when you wish to append the |
| +// whole payload and do not care about any EncodedInfo attribute other than |
| +// encoded_bytes. |
| +EncodeFunction CopyEncoding(rtc::ArrayView<const uint8_t> payload); |
| + |
| +// Returns a function like CopyEncoding above, but which has the deprecated |
| +// Encode signature. Currently only used in one test and should be removed |
| +// once that backwards compatibility is. |
| +DeprecatedEncodeFunction DEPRECATED_CopyEncoding( |
| + AudioEncoder::EncodedInfo info, |
| + rtc::ArrayView<const uint8_t> payload); |
| + |
| +DeprecatedEncodeFunction DEPRECATED_CopyEncoding( |
| + rtc::ArrayView<const uint8_t> payload); |
| + |
| +} // namespace MockAudioEncoderHelper |
| + |
| } // namespace webrtc |
| #endif // WEBRTC_MODULES_AUDIO_CODING_CODECS_MOCK_MOCK_AUDIO_ENCODER_H_ |