diff options
author | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-03 23:27:14 +0000 |
---|---|---|
committer | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-03 23:27:14 +0000 |
commit | e3b44865e6c604327e2117c0143ea0f109fb0395 (patch) | |
tree | 6461d63b9daea7357d5f4ead592063322149efa9 /media | |
parent | b136cad7e730d0c8de6e9f616254ad56ab9452c0 (diff) | |
download | chromium_src-e3b44865e6c604327e2117c0143ea0f109fb0395.zip chromium_src-e3b44865e6c604327e2117c0143ea0f109fb0395.tar.gz chromium_src-e3b44865e6c604327e2117c0143ea0f109fb0395.tar.bz2 |
Fix DecoderBaseTest in media test
It was failing on XP (dbg) because of weird name clashing of class.
BUG=32947
BUG=37139
Review URL: http://codereview.chromium.org/660355
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40566 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/filters/decoder_base_unittest.cc | 94 |
1 files changed, 59 insertions, 35 deletions
diff --git a/media/filters/decoder_base_unittest.cc b/media/filters/decoder_base_unittest.cc index 20b3e26..fc9214c 100644 --- a/media/filters/decoder_base_unittest.cc +++ b/media/filters/decoder_base_unittest.cc @@ -10,65 +10,87 @@ #include "testing/gtest/include/gtest/gtest.h" using ::testing::NotNull; +using ::testing::StrictMock; namespace media { -class MockOutput : public StreamSample { +class GTEST_TEST_CLASS_NAME_(DecoderBaseTest, FlowControl); + +} // namespace media + +namespace { + +class MockDecoderOutput : public media::StreamSample { + public: MOCK_CONST_METHOD0(IsEndOfStream, bool()); }; -class MockDecoder : public MediaFilter {}; +class MockDecoder : public media::MediaFilter {}; -class MockBuffer : public Buffer { +class MockBuffer : public media::Buffer { public: + MockBuffer() {} + virtual ~MockBuffer() {} MOCK_CONST_METHOD0(GetData, const uint8*()); MOCK_CONST_METHOD0(GetDataSize, size_t()); -}; - -ACTION(Initialize) { - AutoTaskRunner done_runner(arg2); - *arg1 = true; -} -ACTION_P(SaveDecodeRequest, list) { - scoped_refptr<Buffer> buffer = arg0; - list->push_back(arg1); -} - -ACTION(CompleteDemuxRequest) { - arg0->Run(new MockBuffer()); - delete arg0; -} + private: + DISALLOW_COPY_AND_ASSIGN(MockBuffer); +}; -class MockDecoderImpl : public DecoderBase<MockDecoder, MockOutput> { +class MockDecoderImpl : public media::DecoderBase< + MockDecoder, MockDecoderOutput> { public: MockDecoderImpl() { - media_format_.SetAsString(MediaFormat::kMimeType, "mock"); + media_format_.SetAsString(media::MediaFormat::kMimeType, "mock"); } + virtual ~MockDecoderImpl() {} + // DecoderBase Implementations. MOCK_METHOD3(DoInitialize, - void(DemuxerStream* demuxer_stream, bool* success, + void(media::DemuxerStream* demuxer_stream, + bool* success, Task* done_cb)); MOCK_METHOD0(DoStop, void()); MOCK_METHOD2(DoSeek, void(base::TimeDelta time, Task* done_cb)); - MOCK_METHOD2(DoDecode, void(Buffer* input, Task* done_cb)); + MOCK_METHOD2(DoDecode, void(media::Buffer* input, Task* done_cb)); private: - FRIEND_TEST(DecoderBaseTest, DISABLED_FlowControl); + FRIEND_TEST(media::DecoderBaseTest, FlowControl); DISALLOW_COPY_AND_ASSIGN(MockDecoderImpl); }; -class MockReadCallback { +class MockDecoderReadCallback { public: - MockReadCallback() {} - MOCK_METHOD1(ReadCallback, void(MockOutput* output)); + MockDecoderReadCallback() {} + virtual ~MockDecoderReadCallback() {} + MOCK_METHOD1(ReadCallback, void(MockDecoderOutput* output)); private: - DISALLOW_COPY_AND_ASSIGN(MockReadCallback); + DISALLOW_COPY_AND_ASSIGN(MockDecoderReadCallback); }; +} // namespace + +namespace media { + +ACTION(Initialize) { + AutoTaskRunner done_runner(arg2); + *arg1 = true; +} + +ACTION_P(SaveDecodeRequest, list) { + scoped_refptr<Buffer> buffer = arg0; + list->push_back(arg1); +} + +ACTION(CompleteDemuxRequest) { + arg0->Run(new MockBuffer()); + delete arg0; +} + // Test the flow control of decoder base by the following sequnce of actions: // - Read() -> DecoderStream // \ Read() -> DemuxerStream @@ -82,12 +104,11 @@ class MockReadCallback { // \ ReadCallback() -> client // - DecodeCallback() -> DecoderBase // \ ReadCallback() -> client -TEST(DecoderBaseTest, DISABLED_FlowControl) { +TEST(DecoderBaseTest, FlowControl) { MessageLoop message_loop; scoped_refptr<MockDecoderImpl> decoder = new MockDecoderImpl(); scoped_refptr<MockDemuxerStream> demuxer_stream = new MockDemuxerStream(); - MockFilterCallback callback; - MockReadCallback read_callback; + StrictMock<MockFilterCallback> callback; decoder->set_message_loop(&message_loop); // Initailize. @@ -99,6 +120,7 @@ TEST(DecoderBaseTest, DISABLED_FlowControl) { message_loop.RunAllPending(); // Read. + StrictMock<MockDecoderReadCallback> read_callback; std::vector<Task*> decode_requests; EXPECT_CALL(*demuxer_stream, Read(NotNull())) .Times(2) @@ -106,16 +128,18 @@ TEST(DecoderBaseTest, DISABLED_FlowControl) { EXPECT_CALL(*decoder, DoDecode(NotNull(), NotNull())) .Times(2) .WillRepeatedly(SaveDecodeRequest(&decode_requests)); - decoder->Read(NewCallback(&read_callback, - &MockReadCallback::ReadCallback)); - decoder->Read(NewCallback(&read_callback, - &MockReadCallback::ReadCallback)); + decoder->Read( + NewCallback(reinterpret_cast<MockDecoderReadCallback*>(&read_callback), + &MockDecoderReadCallback::ReadCallback)); + decoder->Read( + NewCallback(reinterpret_cast<MockDecoderReadCallback*>(&read_callback), + &MockDecoderReadCallback::ReadCallback)); message_loop.RunAllPending(); // Fulfill the decode request. EXPECT_CALL(read_callback, ReadCallback(NotNull())).Times(2); for (size_t i = 0; i < decode_requests.size(); ++i) { - decoder->EnqueueResult(new MockOutput()); + decoder->EnqueueResult(new MockDecoderOutput()); AutoTaskRunner done_cb(decode_requests[i]); } decode_requests.clear(); |