Index: chromeos/dbus/ibus/ibus_engine_factory_service_unittest.cc |
diff --git a/chromeos/dbus/ibus/ibus_engine_factory_service_unittest.cc b/chromeos/dbus/ibus/ibus_engine_factory_service_unittest.cc |
index b7b68a0c464868b75ff0998d9001c1b4e3f89430..2df9b8847056680b392e6af4bc766a03d1c53a31 100644 |
--- a/chromeos/dbus/ibus/ibus_engine_factory_service_unittest.cc |
+++ b/chromeos/dbus/ibus/ibus_engine_factory_service_unittest.cc |
@@ -4,6 +4,8 @@ |
#include "chromeos/dbus/ibus/ibus_engine_factory_service.h" |
+#include <map> |
+#include <string> |
#include "base/message_loop.h" |
#include "chromeos/dbus/ibus/ibus_constants.h" |
#include "dbus/message.h" |
@@ -19,14 +21,40 @@ using ::testing::_; |
namespace chromeos { |
-class MockCreateEngineHandler { |
+class SynchronousCreateEngineHandler { |
public: |
- MOCK_METHOD1(Run, dbus::ObjectPath(const std::string& engine_name)); |
+ explicit SynchronousCreateEngineHandler(const dbus::ObjectPath& path) |
+ : path_(path) {} |
satorux1
2012/08/01 19:52:44
put a blank line here.
Seigo Nonaka
2012/08/02 04:11:23
Done.
|
+ void Run(const IBusEngineFactoryService::CreateEngineResponseSender& sender) { |
+ sender.Run(path_); |
+ } |
+ |
+ private: |
+ dbus::ObjectPath path_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(SynchronousCreateEngineHandler); |
+}; |
+ |
+class AsynchronousCreateEngineHandler { |
+ public: |
+ AsynchronousCreateEngineHandler(const dbus::ObjectPath& path, |
+ MessageLoop* message_loop) |
+ : path_(path), |
+ message_loop_(message_loop) {} |
satorux1
2012/08/01 19:52:44
blank line.
Seigo Nonaka
2012/08/02 04:11:23
Done.
|
+ void Run(const IBusEngineFactoryService::CreateEngineResponseSender& sender) { |
+ message_loop_->PostTask(FROM_HERE, base::Bind(sender, path_)); |
+ } |
+ |
+ private: |
+ dbus::ObjectPath path_; |
+ MessageLoop* message_loop_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(AsynchronousCreateEngineHandler); |
}; |
class MockCreateEngineResponseSender { |
public: |
- MockCreateEngineResponseSender(const dbus::ObjectPath expected_path) |
+ explicit MockCreateEngineResponseSender(const dbus::ObjectPath& expected_path) |
: expected_path_(expected_path) {} |
MOCK_METHOD1(Run, void(dbus::Response*)); |
@@ -108,7 +136,7 @@ class IBusEngineFactoryServiceTest : public testing::Test { |
} |
}; |
-TEST_F(IBusEngineFactoryServiceTest, CreateEngineTest) { |
+TEST_F(IBusEngineFactoryServiceTest, SyncCreateEngineTest) { |
// Set expectations. |
const char kSampleEngine[] = "Sample Engine"; |
const dbus::ObjectPath kObjectPath("/org/freedesktop/IBus/Engine/10"); |
@@ -118,12 +146,12 @@ TEST_F(IBusEngineFactoryServiceTest, CreateEngineTest) { |
Invoke(&response_sender, |
&MockCreateEngineResponseSender::CheckCreateEngineResponse)); |
+ SynchronousCreateEngineHandler handler(kObjectPath); |
// Set handler expectations. |
- MockCreateEngineHandler handler; |
- EXPECT_CALL(handler, Run(StrEq(kSampleEngine))) |
- .WillOnce(Return(kObjectPath)); |
- service_->SetCreateEngineHandler(base::Bind(&MockCreateEngineHandler::Run, |
- base::Unretained(&handler))); |
+ service_->SetCreateEngineHandler( |
+ kSampleEngine, |
+ base::Bind(&SynchronousCreateEngineHandler::Run, |
+ base::Unretained(&handler))); |
message_loop_.RunAllPending(); |
// Invoke method call. |
@@ -142,12 +170,53 @@ TEST_F(IBusEngineFactoryServiceTest, CreateEngineTest) { |
base::Unretained(&response_sender))); |
// Unset the handler so expect not calling handler. |
- service_->UnsetCreateEngineHandler(); |
+ service_->UnsetCreateEngineHandler(kSampleEngine); |
method_exported_map_[ibus::engine_factory::kCreateEngineMethod].Run( |
&method_call, |
base::Bind(&MockCreateEngineResponseSender::CheckCreateEngineResponse, |
base::Unretained(&response_sender))); |
+ message_loop_.RunAllPending(); |
+} |
+TEST_F(IBusEngineFactoryServiceTest, AsyncCreateEngineTest) { |
+ // Set expectations. |
+ const char kSampleEngine[] = "Sample Engine"; |
+ const dbus::ObjectPath kObjectPath("/org/freedesktop/IBus/Engine/10"); |
+ MockCreateEngineResponseSender response_sender(kObjectPath); |
+ EXPECT_CALL(response_sender, Run(_)) |
+ .WillOnce( |
+ Invoke(&response_sender, |
+ &MockCreateEngineResponseSender::CheckCreateEngineResponse)); |
+ |
+ AsynchronousCreateEngineHandler handler(kObjectPath, &message_loop_); |
+ // Set handler expectations. |
+ service_->SetCreateEngineHandler( |
+ kSampleEngine, |
+ base::Bind(&AsynchronousCreateEngineHandler::Run, |
+ base::Unretained(&handler))); |
+ message_loop_.RunAllPending(); |
+ |
+ // Invoke method call. |
+ dbus::MethodCall method_call( |
+ ibus::engine_factory::kServiceInterface, |
+ ibus::engine_factory::kCreateEngineMethod); |
+ method_call.SetSerial(10); |
+ dbus::MessageWriter writer(&method_call); |
+ writer.AppendString(kSampleEngine); |
+ ASSERT_FALSE( |
+ method_exported_map_[ibus::engine_factory::kCreateEngineMethod] |
+ .is_null()); |
+ method_exported_map_[ibus::engine_factory::kCreateEngineMethod].Run( |
+ &method_call, |
+ base::Bind(&MockCreateEngineResponseSender::Run, |
+ base::Unretained(&response_sender))); |
+ |
+ // Unset the handler so expect not calling handler. |
+ service_->UnsetCreateEngineHandler(kSampleEngine); |
+ method_exported_map_[ibus::engine_factory::kCreateEngineMethod].Run( |
+ &method_call, |
+ base::Bind(&MockCreateEngineResponseSender::CheckCreateEngineResponse, |
+ base::Unretained(&response_sender))); |
message_loop_.RunAllPending(); |
} |