| Index: dbus/mock_unittest.cc
|
| diff --git a/dbus/mock_unittest.cc b/dbus/mock_unittest.cc
|
| index c1e0f9b3f6b3bfce9c3f95f474f70f03e01ca627..bfdc5a30c28a3988a56a36f021367755a38f432d 100644
|
| --- a/dbus/mock_unittest.cc
|
| +++ b/dbus/mock_unittest.cc
|
| @@ -13,6 +13,7 @@
|
| #include "dbus/mock_exported_object.h"
|
| #include "dbus/mock_object_proxy.h"
|
| #include "dbus/object_path.h"
|
| +#include "dbus/scoped_dbus_error.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -44,6 +45,10 @@ class MockTest : public testing::Test {
|
| // CreateMockProxyResponse() to return responses.
|
| EXPECT_CALL(*mock_proxy_.get(), MockCallMethodAndBlock(_, _))
|
| .WillRepeatedly(Invoke(this, &MockTest::CreateMockProxyResponse));
|
| + EXPECT_CALL(*mock_proxy_.get(),
|
| + MockCallMethodAndBlockWithErrorDetails(_, _, _))
|
| + .WillRepeatedly(
|
| + Invoke(this, &MockTest::CreateMockProxyResponseWithErrorDetails));
|
|
|
| // Set an expectation so mock_proxy's CallMethod() will use
|
| // HandleMockProxyResponseWithMessageLoop() to return responses.
|
| @@ -104,6 +109,12 @@ class MockTest : public testing::Test {
|
| return NULL;
|
| }
|
|
|
| + Response* CreateMockProxyResponseWithErrorDetails(
|
| + MethodCall* method_call, int timeout_ms, ScopedDBusError* error) {
|
| + dbus_set_error(error->get(), DBUS_ERROR_NOT_SUPPORTED, "Not implemented");
|
| + return NULL;
|
| + }
|
| +
|
| // Creates a response and runs the given response callback in the
|
| // message loop with the response. Used to implement for |mock_proxy_|.
|
| void HandleMockProxyResponseWithMessageLoop(
|
| @@ -127,7 +138,7 @@ class MockTest : public testing::Test {
|
| }
|
| };
|
|
|
| -// This test demonstrates how to mock a synchronos method call using the
|
| +// This test demonstrates how to mock a synchronous method call using the
|
| // mock classes.
|
| TEST_F(MockTest, CallMethodAndBlock) {
|
| const char kHello[] = "Hello";
|
| @@ -155,7 +166,29 @@ TEST_F(MockTest, CallMethodAndBlock) {
|
| EXPECT_EQ(kHello, text_message);
|
| }
|
|
|
| -// This test demonstrates how to mock an asynchronos method call using the
|
| +TEST_F(MockTest, CallMethodAndBlockWithErrorDetails) {
|
| + // Get an object proxy from the mock bus.
|
| + ObjectProxy* proxy = mock_bus_->GetObjectProxy(
|
| + "org.chromium.TestService",
|
| + ObjectPath("/org/chromium/TestObject"));
|
| +
|
| + // Create a method call.
|
| + MethodCall method_call("org.chromium.TestInterface", "Echo");
|
| +
|
| + ScopedDBusError error;
|
| + // Call the method.
|
| + scoped_ptr<Response> response(
|
| + proxy->CallMethodAndBlockWithErrorDetails(
|
| + &method_call, ObjectProxy::TIMEOUT_USE_DEFAULT, &error));
|
| +
|
| + // Check the response.
|
| + ASSERT_FALSE(response.get());
|
| + ASSERT_TRUE(error.is_set());
|
| + EXPECT_STREQ(DBUS_ERROR_NOT_SUPPORTED, error.name());
|
| + EXPECT_STREQ("Not implemented", error.message());
|
| +}
|
| +
|
| +// This test demonstrates how to mock an asynchronous method call using the
|
| // mock classes.
|
| TEST_F(MockTest, CallMethod) {
|
| const char kHello[] = "hello";
|
|
|