Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1045)

Unified Diff: media/base/mock_filters.h

Issue 149356: Wrote gmock-based mock filters and a mock filter factory. (Closed)
Patch Set: Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/mock_filters.h
diff --git a/media/base/mock_filters.h b/media/base/mock_filters.h
index 2a2b13cc61fafdc4b73272a74cd244863663f292..c45f8e65ed5e2e31d40827322bea8a1bd7db8273 100644
--- a/media/base/mock_filters.h
+++ b/media/base/mock_filters.h
@@ -43,6 +43,181 @@ class MockDataSource : public DataSource {
DISALLOW_COPY_AND_ASSIGN(MockDataSource);
};
+class MockDemuxer : public Demuxer {
+ public:
+ MockDemuxer() {}
+
+ // MediaFilter implementation.
+ MOCK_METHOD0(Stop, void());
+ MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
+ MOCK_METHOD1(Seek, void(base::TimeDelta time));
+
+ // Demuxer implementation.
+ MOCK_METHOD1(Initialize, bool(DataSource* data_source));
+ MOCK_METHOD0(GetNumberOfStreams, size_t());
+ MOCK_METHOD1(GetStream, scoped_refptr<DemuxerStream>(int stream_id));
+
+ protected:
+ virtual ~MockDemuxer() {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MockDemuxer);
+};
+
+class MockDemuxerStream : public DemuxerStream {
+ public:
+ MockDemuxerStream() {}
+
+ // DemuxerStream implementation.
+ MOCK_METHOD0(media_format, const MediaFormat&());
+ MOCK_METHOD1(Read, void(Callback1<Buffer*>::Type* read_callback));
+ MOCK_METHOD1(QueryInterface, void*(const char* interface_id));
+
+ protected:
+ virtual ~MockDemuxerStream() {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MockDemuxerStream);
+};
+
+class MockVideoDecoder : public VideoDecoder {
+ public:
+ MockVideoDecoder() {}
+
+ // MediaFilter implementation.
+ MOCK_METHOD0(Stop, void());
+ MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
+ MOCK_METHOD1(Seek, void(base::TimeDelta time));
+
+ // VideoDecoder implementation.
+ MOCK_METHOD1(Initialize, bool(DemuxerStream* demuxer_stream));
+ MOCK_METHOD0(media_format, const MediaFormat&());
+ MOCK_METHOD1(Read, void(Callback1<VideoFrame*>::Type* read_callback));
+
+ protected:
+ virtual ~MockVideoDecoder() {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MockVideoDecoder);
+};
+
+class MockAudioDecoder : public AudioDecoder {
+ public:
+ MockAudioDecoder() {}
+
+ // MediaFilter implementation.
+ MOCK_METHOD0(Stop, void());
+ MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
+ MOCK_METHOD1(Seek, void(base::TimeDelta time));
+
+ // AudioDecoder implementation.
+ MOCK_METHOD1(Initialize, bool(DemuxerStream* demuxer_stream));
+ MOCK_METHOD0(media_format, const MediaFormat&());
+ MOCK_METHOD1(Read, void(Callback1<Buffer*>::Type* read_callback));
+
+ protected:
+ virtual ~MockAudioDecoder() {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MockAudioDecoder);
+};
+
+class MockVideoRenderer : public VideoRenderer {
+ public:
+ MockVideoRenderer() {}
+
+ // MediaFilter implementation.
+ MOCK_METHOD0(Stop, void());
+ MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
+ MOCK_METHOD1(Seek, void(base::TimeDelta time));
+
+ // VideoRenderer implementation.
+ MOCK_METHOD1(Initialize, bool(VideoDecoder* decoder));
+
+ protected:
+ virtual ~MockVideoRenderer() {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MockVideoRenderer);
+};
+
+class MockAudioRenderer : public AudioRenderer {
+ public:
+ MockAudioRenderer() {}
+
+ // MediaFilter implementation.
+ MOCK_METHOD0(Stop, void());
+ MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
+ MOCK_METHOD1(Seek, void(base::TimeDelta time));
+
+ // AudioRenderer implementation.
+ MOCK_METHOD1(Initialize, bool(AudioDecoder* decoder));
+ MOCK_METHOD1(SetVolume, void(float volume));
+
+ protected:
+ virtual ~MockAudioRenderer() {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MockAudioRenderer);
+};
+
+// FilterFactory that returns canned instances of mock filters. You can set
+// expectations on the filters and then pass the factory into a pipeline.
+//
+// TODO(scherkus): add the other filter types.
+class MockFilterFactory : public FilterFactory {
awong 2009/07/08 22:06:03 Hmm...having a factory that holds mocks...this fee
scherkus (not reviewing) 2009/07/08 22:14:51 You got it. Normal filter pattern is to have the
+ public:
+ MockFilterFactory()
+ : data_source_(new MockDataSource()),
+ demuxer_(new MockDemuxer()),
+ video_decoder_(new MockVideoDecoder()),
+ audio_decoder_(new MockAudioDecoder()),
+ video_renderer_(new MockVideoRenderer()),
+ audio_renderer_(new MockAudioRenderer()) {
+ }
+
+ virtual ~MockFilterFactory() {}
+
+ // Mock accessors.
+ MockDataSource* data_source() const { return data_source_; }
+ MockDemuxer* demuxer() const { return demuxer_; }
+ MockVideoDecoder* video_decoder() const { return video_decoder_; }
+ MockAudioDecoder* audio_decoder() const { return audio_decoder_; }
+ MockVideoRenderer* video_renderer() const { return video_renderer_; }
+ MockAudioRenderer* audio_renderer() const { return audio_renderer_; }
+
+ protected:
+ MediaFilter* Create(FilterType filter_type, const MediaFormat& media_format) {
+ switch (filter_type) {
+ case FILTER_DATA_SOURCE:
+ return data_source_;
+ case FILTER_DEMUXER:
+ return demuxer_;
+ case FILTER_VIDEO_DECODER:
+ return video_decoder_;
+ case FILTER_AUDIO_DECODER:
+ return audio_decoder_;
+ case FILTER_VIDEO_RENDERER:
+ return video_renderer_;
+ case FILTER_AUDIO_RENDERER:
+ return audio_renderer_;
+ default:
+ NOTREACHED() << "Unknown filter type: " << filter_type;
+ }
+ return NULL;
+ }
+
+ private:
+ scoped_refptr<MockDataSource> data_source_;
+ scoped_refptr<MockDemuxer> demuxer_;
+ scoped_refptr<MockVideoDecoder> video_decoder_;
+ scoped_refptr<MockAudioDecoder> audio_decoder_;
+ scoped_refptr<MockVideoRenderer> video_renderer_;
+ scoped_refptr<MockAudioRenderer> audio_renderer_;
+
+ DISALLOW_COPY_AND_ASSIGN(MockFilterFactory);
+};
+
} // namespace media
#endif // MEDIA_BASE_MOCK_FILTERS_H_

Powered by Google App Engine
This is Rietveld 408576698