summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-03 23:27:14 +0000
committerhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-03 23:27:14 +0000
commite3b44865e6c604327e2117c0143ea0f109fb0395 (patch)
tree6461d63b9daea7357d5f4ead592063322149efa9 /media
parentb136cad7e730d0c8de6e9f616254ad56ab9452c0 (diff)
downloadchromium_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.cc94
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();