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 #include "chromeos/dbus/flimflam_client_unittest_base.h" | 5 #include "chromeos/dbus/flimflam_client_unittest_base.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/json/json_writer.h" |
8 #include "base/values.h" | 9 #include "base/values.h" |
9 #include "dbus/message.h" | 10 #include "dbus/message.h" |
10 #include "dbus/object_path.h" | 11 #include "dbus/object_path.h" |
11 #include "dbus/values_util.h" | 12 #include "dbus/values_util.h" |
12 #include "testing/gmock/include/gmock/gmock.h" | 13 #include "testing/gmock/include/gmock/gmock.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
14 #include "third_party/cros_system_api/dbus/service_constants.h" | 15 #include "third_party/cros_system_api/dbus/service_constants.h" |
15 | 16 |
16 using ::testing::_; | 17 using ::testing::_; |
17 using ::testing::Invoke; | 18 using ::testing::Invoke; |
18 using ::testing::Return; | 19 using ::testing::Return; |
19 | 20 |
20 namespace chromeos { | 21 namespace chromeos { |
21 | 22 |
22 FlimflamClientUnittestBase::FlimflamClientUnittestBase( | 23 FlimflamClientUnittestBase::FlimflamClientUnittestBase( |
23 const std::string& interface_name) : interface_name_(interface_name) { | 24 const std::string& interface_name, |
| 25 const dbus::ObjectPath& object_path) |
| 26 : interface_name_(interface_name), |
| 27 object_path_(object_path) { |
24 } | 28 } |
25 | 29 |
26 FlimflamClientUnittestBase::~FlimflamClientUnittestBase() { | 30 FlimflamClientUnittestBase::~FlimflamClientUnittestBase() { |
27 } | 31 } |
28 | 32 |
29 void FlimflamClientUnittestBase::SetUp() { | 33 void FlimflamClientUnittestBase::SetUp() { |
30 // Create a mock bus. | 34 // Create a mock bus. |
31 dbus::Bus::Options options; | 35 dbus::Bus::Options options; |
32 options.bus_type = dbus::Bus::SYSTEM; | 36 options.bus_type = dbus::Bus::SYSTEM; |
33 mock_bus_ = new dbus::MockBus(options); | 37 mock_bus_ = new dbus::MockBus(options); |
34 | 38 |
35 // Create a mock proxy. | 39 // Create a mock proxy. |
36 mock_proxy_ = new dbus::MockObjectProxy( | 40 mock_proxy_ = new dbus::MockObjectProxy( |
37 mock_bus_.get(), | 41 mock_bus_.get(), |
38 flimflam::kFlimflamServiceName, | 42 flimflam::kFlimflamServiceName, |
39 dbus::ObjectPath(flimflam::kFlimflamServicePath)); | 43 object_path_); |
40 | 44 |
41 // Set an expectation so mock_proxy's CallMethod() will use OnCallMethod() | 45 // Set an expectation so mock_proxy's CallMethod() will use OnCallMethod() |
42 // to return responses. | 46 // to return responses. |
43 EXPECT_CALL(*mock_proxy_, CallMethod(_, _, _)) | 47 EXPECT_CALL(*mock_proxy_, CallMethod(_, _, _)) |
44 .WillRepeatedly(Invoke(this, &FlimflamClientUnittestBase::OnCallMethod)); | 48 .WillRepeatedly(Invoke(this, &FlimflamClientUnittestBase::OnCallMethod)); |
45 | 49 |
46 // Set an expectation so mock_proxy's ConnectToSignal() will use | 50 // Set an expectation so mock_proxy's ConnectToSignal() will use |
47 // OnConnectToSignal() to run the callback. | 51 // OnConnectToSignal() to run the callback. |
48 EXPECT_CALL(*mock_proxy_, ConnectToSignal( | 52 EXPECT_CALL(*mock_proxy_, ConnectToSignal( |
49 interface_name_, | 53 interface_name_, |
50 flimflam::kMonitorPropertyChanged, _, _)) | 54 flimflam::kMonitorPropertyChanged, _, _)) |
51 .WillRepeatedly(Invoke(this, | 55 .WillRepeatedly(Invoke(this, |
52 &FlimflamClientUnittestBase::OnConnectToSignal)); | 56 &FlimflamClientUnittestBase::OnConnectToSignal)); |
53 | 57 |
54 // Set an expectation so mock_bus's GetObjectProxy() for the given | 58 // Set an expectation so mock_bus's GetObjectProxy() for the given |
55 // service name and the object path will return mock_proxy_. | 59 // service name and the object path will return mock_proxy_. |
56 EXPECT_CALL(*mock_bus_, GetObjectProxy( | 60 EXPECT_CALL(*mock_bus_, GetObjectProxy(flimflam::kFlimflamServiceName, |
57 flimflam::kFlimflamServiceName, | 61 object_path_)) |
58 dbus::ObjectPath(flimflam::kFlimflamServicePath))) | |
59 .WillOnce(Return(mock_proxy_.get())); | 62 .WillOnce(Return(mock_proxy_.get())); |
60 | 63 |
61 // ShutdownAndBlock() will be called in TearDown(). | 64 // ShutdownAndBlock() will be called in TearDown(). |
62 EXPECT_CALL(*mock_bus_, ShutdownAndBlock()).WillOnce(Return()); | 65 EXPECT_CALL(*mock_bus_, ShutdownAndBlock()).WillOnce(Return()); |
63 } | 66 } |
64 | 67 |
65 void FlimflamClientUnittestBase::TearDown() { | 68 void FlimflamClientUnittestBase::TearDown() { |
66 mock_bus_->ShutdownAndBlock(); | 69 mock_bus_->ShutdownAndBlock(); |
67 } | 70 } |
68 | 71 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 EXPECT_EQ(DBUS_METHOD_CALL_SUCCESS, call_status); | 147 EXPECT_EQ(DBUS_METHOD_CALL_SUCCESS, call_status); |
145 EXPECT_EQ(expected_result, result); | 148 EXPECT_EQ(expected_result, result); |
146 } | 149 } |
147 | 150 |
148 // static | 151 // static |
149 void FlimflamClientUnittestBase::ExpectDictionaryValueResult( | 152 void FlimflamClientUnittestBase::ExpectDictionaryValueResult( |
150 const base::DictionaryValue* expected_result, | 153 const base::DictionaryValue* expected_result, |
151 DBusMethodCallStatus call_status, | 154 DBusMethodCallStatus call_status, |
152 const base::DictionaryValue& result) { | 155 const base::DictionaryValue& result) { |
153 EXPECT_EQ(DBUS_METHOD_CALL_SUCCESS, call_status); | 156 EXPECT_EQ(DBUS_METHOD_CALL_SUCCESS, call_status); |
154 EXPECT_TRUE(expected_result->Equals(&result)); | 157 std::string expected_result_string; |
| 158 base::JSONWriter::Write(expected_result, &expected_result_string); |
| 159 std::string result_string; |
| 160 base::JSONWriter::Write(&result, &result_string); |
| 161 EXPECT_EQ(expected_result_string, result_string); |
155 } | 162 } |
156 | 163 |
157 void FlimflamClientUnittestBase::OnConnectToSignal( | 164 void FlimflamClientUnittestBase::OnConnectToSignal( |
158 const std::string& interface_name, | 165 const std::string& interface_name, |
159 const std::string& signal_name, | 166 const std::string& signal_name, |
160 const dbus::ObjectProxy::SignalCallback& signal_callback, | 167 const dbus::ObjectProxy::SignalCallback& signal_callback, |
161 const dbus::ObjectProxy::OnConnectedCallback& on_connected_callback) { | 168 const dbus::ObjectProxy::OnConnectedCallback& on_connected_callback) { |
162 property_changed_handler_ = signal_callback; | 169 property_changed_handler_ = signal_callback; |
163 const bool success = true; | 170 const bool success = true; |
164 message_loop_.PostTask(FROM_HERE, | 171 message_loop_.PostTask(FROM_HERE, |
165 base::Bind(on_connected_callback, | 172 base::Bind(on_connected_callback, |
166 interface_name, | 173 interface_name, |
167 signal_name, | 174 signal_name, |
168 success)); | 175 success)); |
169 } | 176 } |
170 | 177 |
171 void FlimflamClientUnittestBase::OnCallMethod( | 178 void FlimflamClientUnittestBase::OnCallMethod( |
172 dbus::MethodCall* method_call, | 179 dbus::MethodCall* method_call, |
173 int timeout_ms, | 180 int timeout_ms, |
174 const dbus::ObjectProxy::ResponseCallback& response_callback) { | 181 const dbus::ObjectProxy::ResponseCallback& response_callback) { |
175 EXPECT_EQ(interface_name_, method_call->GetInterface()); | 182 EXPECT_EQ(interface_name_, method_call->GetInterface()); |
176 EXPECT_EQ(expected_method_name_, method_call->GetMember()); | 183 EXPECT_EQ(expected_method_name_, method_call->GetMember()); |
177 dbus::MessageReader reader(method_call); | 184 dbus::MessageReader reader(method_call); |
178 argument_checker_.Run(&reader); | 185 argument_checker_.Run(&reader); |
179 message_loop_.PostTask(FROM_HERE, | 186 message_loop_.PostTask(FROM_HERE, |
180 base::Bind(response_callback, response_)); | 187 base::Bind(response_callback, response_)); |
181 } | 188 } |
182 | 189 |
183 } // namespace chromeos | 190 } // namespace chromeos |
OLD | NEW |