OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef SYNC_JS_JS_TEST_UTIL_H_ | 5 #ifndef SYNC_JS_JS_TEST_UTIL_H_ |
6 #define SYNC_JS_JS_TEST_UTIL_H_ | 6 #define SYNC_JS_JS_TEST_UTIL_H_ |
7 | 7 |
8 #include <ostream> | 8 #include <ostream> |
9 #include <string> | 9 #include <string> |
10 | 10 |
11 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
12 #include "sync/internal_api/public/util/weak_handle.h" | 12 #include "sync/internal_api/public/util/weak_handle.h" |
13 #include "sync/js/js_backend.h" | 13 #include "sync/js/js_backend.h" |
14 #include "sync/js/js_controller.h" | 14 #include "sync/js/js_controller.h" |
15 #include "sync/js/js_event_handler.h" | 15 #include "sync/js/js_event_handler.h" |
16 #include "sync/js/js_reply_handler.h" | |
17 #include "testing/gmock/include/gmock/gmock.h" | 16 #include "testing/gmock/include/gmock/gmock.h" |
18 | 17 |
19 namespace base { | 18 namespace base { |
20 class DictionaryValue; | 19 class DictionaryValue; |
21 class ListValue; | 20 class ListValue; |
22 } | 21 } |
23 | 22 |
24 namespace syncer { | 23 namespace syncer { |
25 | 24 |
26 class JsArgList; | |
27 class JsEventDetails; | 25 class JsEventDetails; |
28 | 26 |
29 // Defined for googletest. Equivalent to "*os << args.ToString()". | 27 // Defined for googletest. Equivalent to "*os << args.ToString()". |
30 void PrintTo(const JsArgList& args, ::std::ostream* os); | |
31 void PrintTo(const JsEventDetails& details, ::std::ostream* os); | 28 void PrintTo(const JsEventDetails& details, ::std::ostream* os); |
32 | 29 |
33 // A gmock matcher for JsArgList. Use like: | |
34 // | |
35 // EXPECT_CALL(mock, HandleJsReply("foo", HasArgs(expected_args))); | |
36 ::testing::Matcher<const JsArgList&> HasArgs(const JsArgList& expected_args); | |
37 | |
38 // A gmock matcher for JsEventDetails. Use like: | 30 // A gmock matcher for JsEventDetails. Use like: |
39 // | 31 // |
40 // EXPECT_CALL(mock, HandleJsEvent("foo", HasArgs(expected_details))); | 32 // EXPECT_CALL(mock, HandleJsEvent("foo", HasArgs(expected_details))); |
41 ::testing::Matcher<const JsEventDetails&> HasDetails( | 33 ::testing::Matcher<const JsEventDetails&> HasDetails( |
42 const JsEventDetails& expected_details); | 34 const JsEventDetails& expected_details); |
43 | 35 |
44 // Like HasDetails() but takes a DictionaryValue instead. | 36 // Like HasDetails() but takes a DictionaryValue instead. |
45 ::testing::Matcher<const JsEventDetails&> HasDetailsAsDictionary( | 37 ::testing::Matcher<const JsEventDetails&> HasDetailsAsDictionary( |
46 const base::DictionaryValue& expected_details); | 38 const base::DictionaryValue& expected_details); |
47 | 39 |
48 // Mocks. | 40 // Mocks. |
49 | 41 |
50 class MockJsBackend : public JsBackend, | 42 class MockJsBackend : public JsBackend, |
51 public base::SupportsWeakPtr<MockJsBackend> { | 43 public base::SupportsWeakPtr<MockJsBackend> { |
52 public: | 44 public: |
53 MockJsBackend(); | 45 MockJsBackend(); |
54 virtual ~MockJsBackend(); | 46 virtual ~MockJsBackend(); |
55 | 47 |
56 WeakHandle<JsBackend> AsWeakHandle(); | 48 WeakHandle<JsBackend> AsWeakHandle(); |
57 | 49 |
58 MOCK_METHOD1(SetJsEventHandler, void(const WeakHandle<JsEventHandler>&)); | 50 MOCK_METHOD1(SetJsEventHandler, void(const WeakHandle<JsEventHandler>&)); |
59 MOCK_METHOD3(ProcessJsMessage, void(const ::std::string&, const JsArgList&, | |
60 const WeakHandle<JsReplyHandler>&)); | |
61 }; | 51 }; |
62 | 52 |
63 class MockJsController : public JsController, | 53 class MockJsController : public JsController, |
64 public base::SupportsWeakPtr<MockJsController> { | 54 public base::SupportsWeakPtr<MockJsController> { |
65 public: | 55 public: |
66 MockJsController(); | 56 MockJsController(); |
67 virtual ~MockJsController(); | 57 virtual ~MockJsController(); |
68 | 58 |
69 MOCK_METHOD1(AddJsEventHandler, void(JsEventHandler*)); | 59 MOCK_METHOD1(AddJsEventHandler, void(JsEventHandler*)); |
70 MOCK_METHOD1(RemoveJsEventHandler, void(JsEventHandler*)); | 60 MOCK_METHOD1(RemoveJsEventHandler, void(JsEventHandler*)); |
71 MOCK_METHOD3(ProcessJsMessage, | |
72 void(const ::std::string&, const JsArgList&, | |
73 const WeakHandle<JsReplyHandler>&)); | |
74 }; | 61 }; |
75 | 62 |
76 class MockJsEventHandler | 63 class MockJsEventHandler |
77 : public JsEventHandler, | 64 : public JsEventHandler, |
78 public base::SupportsWeakPtr<MockJsEventHandler> { | 65 public base::SupportsWeakPtr<MockJsEventHandler> { |
79 public: | 66 public: |
80 MockJsEventHandler(); | 67 MockJsEventHandler(); |
81 virtual ~MockJsEventHandler(); | 68 virtual ~MockJsEventHandler(); |
82 | 69 |
83 WeakHandle<JsEventHandler> AsWeakHandle(); | 70 WeakHandle<JsEventHandler> AsWeakHandle(); |
84 | 71 |
85 MOCK_METHOD2(HandleJsEvent, | 72 MOCK_METHOD2(HandleJsEvent, |
86 void(const ::std::string&, const JsEventDetails&)); | 73 void(const ::std::string&, const JsEventDetails&)); |
87 }; | 74 }; |
88 | 75 |
89 class MockJsReplyHandler | |
90 : public JsReplyHandler, | |
91 public base::SupportsWeakPtr<MockJsReplyHandler> { | |
92 public: | |
93 MockJsReplyHandler(); | |
94 virtual ~MockJsReplyHandler(); | |
95 | |
96 WeakHandle<JsReplyHandler> AsWeakHandle(); | |
97 | |
98 MOCK_METHOD2(HandleJsReply, | |
99 void(const ::std::string&, const JsArgList&)); | |
100 }; | |
101 | |
102 } // namespace syncer | 76 } // namespace syncer |
103 | 77 |
104 #endif // SYNC_JS_JS_TEST_UTIL_H_ | 78 #endif // SYNC_JS_JS_TEST_UTIL_H_ |
OLD | NEW |