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

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

Issue 6350001: Replace MockFilterCallback with MockCallback and simplify unit tests. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: forgot some files Created 9 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « media/base/mock_callback.cc ('k') | media/base/mock_filters.cc » ('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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // A new breed of mock media filters, this time using gmock! Feel free to add 5 // A new breed of mock media filters, this time using gmock! Feel free to add
6 // actions if you need interesting side-effects (i.e., copying data to the 6 // actions if you need interesting side-effects (i.e., copying data to the
7 // buffer passed into MockDataSource::Read()). 7 // buffer passed into MockDataSource::Read()).
8 // 8 //
9 // Don't forget you can use StrictMock<> and NiceMock<> if you want the mock 9 // Don't forget you can use StrictMock<> and NiceMock<> if you want the mock
10 // filters to fail the test or do nothing when an unexpected method is called. 10 // filters to fail the test or do nothing when an unexpected method is called.
11 // http://code.google.com/p/googlemock/wiki/CookBook#Nice_Mocks_and_Strict_Mocks 11 // http://code.google.com/p/googlemock/wiki/CookBook#Nice_Mocks_and_Strict_Mocks
12 12
13 #ifndef MEDIA_BASE_MOCK_FILTERS_H_ 13 #ifndef MEDIA_BASE_MOCK_FILTERS_H_
14 #define MEDIA_BASE_MOCK_FILTERS_H_ 14 #define MEDIA_BASE_MOCK_FILTERS_H_
15 15
16 #include <string> 16 #include <string>
17 17
18 #include "base/callback.h"
19 #include "media/base/filters.h" 18 #include "media/base/filters.h"
20 #include "media/base/filter_collection.h" 19 #include "media/base/filter_collection.h"
21 #include "media/base/video_frame.h" 20 #include "media/base/video_frame.h"
22 #include "testing/gmock/include/gmock/gmock.h" 21 #include "testing/gmock/include/gmock/gmock.h"
23 22
24 namespace media { 23 namespace media {
25 24
26 // Use this template to test for object destruction by setting expectations on 25 // Use this template to test for object destruction by setting expectations on
27 // the method OnDestroy(). 26 // the method OnDestroy().
28 // 27 //
29 // TODO(scherkus): not sure about the naming... perhaps contribute this back 28 // TODO(scherkus): not sure about the naming... perhaps contribute this back
30 // to gmock itself! 29 // to gmock itself!
31 template<class MockClass> 30 template<class MockClass>
32 class Destroyable : public MockClass { 31 class Destroyable : public MockClass {
33 public: 32 public:
34 Destroyable() {} 33 Destroyable() {}
35 34
36 MOCK_METHOD0(OnDestroy, void()); 35 MOCK_METHOD0(OnDestroy, void());
37 36
38 protected: 37 protected:
39 virtual ~Destroyable() { 38 virtual ~Destroyable() {
40 OnDestroy(); 39 OnDestroy();
41 } 40 }
42 41
43 private: 42 private:
44 DISALLOW_COPY_AND_ASSIGN(Destroyable); 43 DISALLOW_COPY_AND_ASSIGN(Destroyable);
45 }; 44 };
46 45
47 // Helper class used to test that callbacks are executed. It is recommend you
48 // combine this class with StrictMock<> to verify that the callback is executed.
49 // You can reuse the same instance of a MockFilterCallback many times since
50 // gmock will track the number of times the methods are executed.
51 class MockFilterCallback {
52 public:
53 MockFilterCallback();
54 MockFilterCallback(bool run_destroy_callback);
55 virtual ~MockFilterCallback();
56
57 MOCK_METHOD0(OnCallbackDestroyed, void());
58 MOCK_METHOD0(OnFilterCallback, void());
59
60 // Helper method to create a new callback for this mock. The callback will
61 // call OnFilterCallback() when executed and OnCallbackDestroyed() when
62 // destroyed. Clients should use NiceMock<> or StrictMock<> depending on the
63 // test.
64 FilterCallback* NewCallback();
65
66 private:
67 // Private implementation of CallbackRunner used to trigger expectations on
68 // MockFilterCallback.
69 class CallbackImpl : public CallbackRunner<Tuple0> {
70 public:
71 explicit CallbackImpl(MockFilterCallback* mock_callback,
72 bool run_destroy_callback)
73 : mock_callback_(mock_callback),
74 run_destroy_callback_(run_destroy_callback) {
75 }
76
77 virtual ~CallbackImpl() {
78 if (run_destroy_callback_)
79 mock_callback_->OnCallbackDestroyed();
80 }
81
82 virtual void RunWithParams(const Tuple0& params) {
83 mock_callback_->OnFilterCallback();
84 }
85
86 private:
87 MockFilterCallback* mock_callback_;
88 bool run_destroy_callback_;
89
90 DISALLOW_COPY_AND_ASSIGN(CallbackImpl);
91 };
92
93 bool run_destroy_callback_;
94 DISALLOW_COPY_AND_ASSIGN(MockFilterCallback);
95 };
96
97 class MockFilter : public Filter { 46 class MockFilter : public Filter {
98 public: 47 public:
99 MockFilter(); 48 MockFilter();
100 MockFilter(bool requires_message_loop); 49 MockFilter(bool requires_message_loop);
101 50
102 // Filter implementation. 51 // Filter implementation.
103 virtual bool requires_message_loop() const; 52 virtual bool requires_message_loop() const;
104 virtual const char* message_loop_name() const; 53 virtual const char* message_loop_name() const;
105 54
106 MOCK_METHOD1(Play, void(FilterCallback* callback)); 55 MOCK_METHOD1(Play, void(FilterCallback* callback));
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 314
366 // Helper gmock action that calls DisableAudioRenderer() on behalf of the 315 // Helper gmock action that calls DisableAudioRenderer() on behalf of the
367 // provided filter. 316 // provided filter.
368 ACTION_P(DisableAudioRenderer, filter) { 317 ACTION_P(DisableAudioRenderer, filter) {
369 filter->host()->DisableAudioRenderer(); 318 filter->host()->DisableAudioRenderer();
370 } 319 }
371 320
372 } // namespace media 321 } // namespace media
373 322
374 #endif // MEDIA_BASE_MOCK_FILTERS_H_ 323 #endif // MEDIA_BASE_MOCK_FILTERS_H_
OLDNEW
« no previous file with comments | « media/base/mock_callback.cc ('k') | media/base/mock_filters.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698