diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-10 20:47:51 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-10 20:47:51 +0000 |
commit | ba650a35365f11389eebe5b5325d1ad0e9a69b8e (patch) | |
tree | 80089187df282aec574b927ca720449b4bff15a0 /media/base/mock_ffmpeg.cc | |
parent | fe9d5d06dd4acbd1df3f828207d7ebfa1a245279 (diff) | |
download | chromium_src-ba650a35365f11389eebe5b5325d1ad0e9a69b8e.zip chromium_src-ba650a35365f11389eebe5b5325d1ad0e9a69b8e.tar.gz chromium_src-ba650a35365f11389eebe5b5325d1ad0e9a69b8e.tar.bz2 |
Converted remaining tests to use gmock and deleted all old mocking code.
The most important part was refactoring PipelineImpl tests in preparation for message loop injection. The old mocks just did not work *at all* with my message loop injection patch.
BUG=16008
TEST=media_unittests should pass and not flake out
Review URL: http://codereview.chromium.org/149423
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20412 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base/mock_ffmpeg.cc')
-rw-r--r-- | media/base/mock_ffmpeg.cc | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/media/base/mock_ffmpeg.cc b/media/base/mock_ffmpeg.cc index 054f996..562aff2 100644 --- a/media/base/mock_ffmpeg.cc +++ b/media/base/mock_ffmpeg.cc @@ -7,12 +7,36 @@ #include "base/logging.h" #include "media/filters/ffmpeg_common.h" +using ::testing::_; +using ::testing::AtMost; +using ::testing::DoAll; +using ::testing::Return; +using ::testing::SaveArg; + namespace media { MockFFmpeg* MockFFmpeg::instance_ = NULL; +URLProtocol* MockFFmpeg::protocol_ = NULL; MockFFmpeg::MockFFmpeg() : outstanding_packets_(0) { + // If we haven't assigned our static copy of URLProtocol, set up expectations + // to catch the URLProtocol registered when the singleton instance of + // FFmpegGlue is created. + // + // TODO(scherkus): this feels gross and I need to think of a way to better + // inject/mock singletons. + if (!protocol_) { + EXPECT_CALL(*this, AVCodecInit()) + .Times(AtMost(1)) + .WillOnce(Return()); + EXPECT_CALL(*this, AVRegisterProtocol(_)) + .Times(AtMost(1)) + .WillOnce(DoAll(SaveArg<0>(&protocol_), Return(0))); + EXPECT_CALL(*this, AVRegisterAll()) + .Times(AtMost(1)) + .WillOnce(Return()); + } } MockFFmpeg::~MockFFmpeg() { @@ -40,6 +64,11 @@ MockFFmpeg* MockFFmpeg::get() { } // static +URLProtocol* MockFFmpeg::protocol() { + return protocol_; +} + +// static void MockFFmpeg::DestructPacket(AVPacket* packet) { delete [] packet->data; packet->data = NULL; @@ -49,6 +78,18 @@ void MockFFmpeg::DestructPacket(AVPacket* packet) { // FFmpeg stubs that delegate to the FFmpegMock instance. extern "C" { +void avcodec_init() { + media::MockFFmpeg::get()->AVCodecInit(); +} + +int av_register_protocol(URLProtocol* protocol) { + return media::MockFFmpeg::get()->AVRegisterProtocol(protocol); +} + +void av_register_all() { + media::MockFFmpeg::get()->AVRegisterAll(); +} + AVCodec* avcodec_find_decoder(enum CodecID id) { return media::MockFFmpeg::get()->AVCodecFindDecoder(id); } |