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

Side by Side Diff: media/base/mock_filter_host.h

Issue 149366: Updated FFmpegDemuxerTest and FFmpegVideoDecoderTest to use the gmock-based MockFilterHost. (Closed)
Patch Set: Fixed break 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 unified diff | Download patch
« no previous file with comments | « no previous file | media/base/mock_pipeline.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this
2 // source code is governed by a BSD-style license that can be found in the 2 // source code is governed by a BSD-style license that can be found in the
3 // LICENSE file. 3 // LICENSE file.
4 // 4 //
5 // A FilterHost implementation based on gmock. Combined with setting a message 5 // A FilterHost implementation based on gmock. Combined with setting a message
6 // loop on a filter, permits single-threaded testing of filters without 6 // loop on a filter, permits single-threaded testing of filters without
7 // requiring a pipeline. 7 // requiring a pipeline.
8 //
9 // TODO(scherkus): Remove old_mocks::MockFilterHost as soon as other tests have
10 // transitioned over to the new gmock-based MockFilterHost.
11 8
12 #ifndef MEDIA_BASE_MOCK_FILTER_HOST_H_ 9 #ifndef MEDIA_BASE_MOCK_FILTER_HOST_H_
13 #define MEDIA_BASE_MOCK_FILTER_HOST_H_ 10 #define MEDIA_BASE_MOCK_FILTER_HOST_H_
14 11
15 #include <string> 12 #include <string>
16 13
17 #include "base/scoped_ptr.h" 14 #include "base/scoped_ptr.h"
18 #include "base/waitable_event.h" 15 #include "base/waitable_event.h"
19 #include "media/base/factory.h" 16 #include "media/base/factory.h"
20 #include "media/base/filter_host.h" 17 #include "media/base/filter_host.h"
21 #include "media/base/filters.h" 18 #include "media/base/filters.h"
22 #include "media/base/media_format.h" 19 #include "media/base/media_format.h"
23 #include "media/base/mock_pipeline.h"
24 #include "testing/gmock/include/gmock/gmock.h" 20 #include "testing/gmock/include/gmock/gmock.h"
25 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
26 22
27 namespace media { 23 namespace media {
28 24
29 class MockFilterHost : public FilterHost { 25 class MockFilterHost : public FilterHost {
30 public: 26 public:
31 MockFilterHost() {} 27 MockFilterHost() {}
32 28
33 // FilterHost implementation. 29 // FilterHost implementation.
34 MOCK_METHOD0(InitializationComplete, void()); 30 MOCK_METHOD0(InitializationComplete, void());
35 MOCK_METHOD1(Error, void(PipelineError error)); 31 MOCK_METHOD1(Error, void(PipelineError error));
36 MOCK_CONST_METHOD0(GetTime, base::TimeDelta()); 32 MOCK_CONST_METHOD0(GetTime, base::TimeDelta());
37 MOCK_METHOD1(SetTime, void(base::TimeDelta time)); 33 MOCK_METHOD1(SetTime, void(base::TimeDelta time));
38 MOCK_METHOD1(SetDuration, void(base::TimeDelta duration)); 34 MOCK_METHOD1(SetDuration, void(base::TimeDelta duration));
39 MOCK_METHOD1(SetBufferedTime, void(base::TimeDelta buffered_time)); 35 MOCK_METHOD1(SetBufferedTime, void(base::TimeDelta buffered_time));
40 MOCK_METHOD1(SetTotalBytes, void(int64 total_bytes)); 36 MOCK_METHOD1(SetTotalBytes, void(int64 total_bytes));
41 MOCK_METHOD1(SetBufferedBytes, void(int64 buffered_bytes)); 37 MOCK_METHOD1(SetBufferedBytes, void(int64 buffered_bytes));
42 MOCK_METHOD2(SetVideoSize, void(size_t width, size_t height)); 38 MOCK_METHOD2(SetVideoSize, void(size_t width, size_t height));
43 39
44 private: 40 private:
45 DISALLOW_COPY_AND_ASSIGN(MockFilterHost); 41 DISALLOW_COPY_AND_ASSIGN(MockFilterHost);
46 }; 42 };
47 43
48 namespace old_mocks {
49
50 // This version is deprecated.
51 template <class Filter>
52 class MockFilterHost : public FilterHost {
53 public:
54 MockFilterHost(MockPipeline* mock_pipeline, Filter* filter)
55 : mock_pipeline_(mock_pipeline),
56 filter_(filter),
57 initialized_(false),
58 error_(PIPELINE_OK),
59 wait_for_initialized_(false, false),
60 wait_for_error_(false, false) {
61 EXPECT_TRUE(mock_pipeline_);
62 EXPECT_TRUE(filter_);
63 filter_->SetFilterHost(this);
64 }
65
66 virtual ~MockFilterHost() {}
67
68 virtual void InitializationComplete() {
69 EXPECT_FALSE(initialized_);
70 initialized_ = true;
71 wait_for_initialized_.Signal();
72 }
73
74 virtual void Error(PipelineError error) {
75 error_ = error;
76 mock_pipeline_->Error(error);
77 wait_for_error_.Signal();
78 }
79
80 virtual base::TimeDelta GetTime() const {
81 return mock_pipeline_->GetTime();
82 }
83
84 virtual void SetTime(base::TimeDelta time) {
85 mock_pipeline_->SetTime(time);
86 }
87
88 virtual void SetDuration(base::TimeDelta duration) {
89 mock_pipeline_->SetDuration(duration);
90 }
91
92 virtual void SetBufferedTime(base::TimeDelta buffered_time) {
93 mock_pipeline_->SetBufferedTime(buffered_time);
94 }
95
96 virtual void SetTotalBytes(int64 total_bytes) {
97 mock_pipeline_->SetTotalBytes(total_bytes);
98 }
99
100 virtual void SetBufferedBytes(int64 buffered_bytes) {
101 mock_pipeline_->SetBufferedBytes(buffered_bytes);
102 }
103
104 virtual void SetVideoSize(size_t width, size_t height) {
105 mock_pipeline_->SetVideoSize(width, height);
106 }
107
108 bool IsInitialized() const {
109 return initialized_;
110 }
111
112 bool WaitForInitialized() {
113 const base::TimeDelta kTimedWait = base::TimeDelta::FromMilliseconds(500);
114 while (!initialized_) {
115 if (!wait_for_initialized_.TimedWait(kTimedWait)) {
116 return false;
117 }
118 }
119 return true;
120 }
121
122 bool WaitForError(PipelineError error) {
123 const base::TimeDelta kTimedWait = base::TimeDelta::FromMilliseconds(500);
124 while (error_ != error) {
125 if (!wait_for_error_.TimedWait(kTimedWait)) {
126 return false;
127 }
128 }
129 return true;
130 }
131
132 private:
133 MockPipeline* mock_pipeline_;
134 scoped_refptr<Filter> filter_;
135
136 // Tracks if the filter has executed InitializationComplete().
137 bool initialized_;
138
139 // Tracks the last pipeline error set by the filter.
140 PipelineError error_;
141
142 // Allows unit tests to wait for particular conditions before asserting.
143 base::WaitableEvent wait_for_initialized_;
144 base::WaitableEvent wait_for_error_;
145
146 DISALLOW_COPY_AND_ASSIGN(MockFilterHost);
147 };
148
149 } // namespace old_mocks
150
151 } // namespace media 44 } // namespace media
152 45
153 #endif // MEDIA_BASE_MOCK_FILTER_HOST_H_ 46 #endif // MEDIA_BASE_MOCK_FILTER_HOST_H_
OLDNEW
« no previous file with comments | « no previous file | media/base/mock_pipeline.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698