| Index: ipc/ipc_message_unittest.cc
|
| ===================================================================
|
| --- ipc/ipc_message_unittest.cc (revision 270218)
|
| +++ ipc/ipc_message_unittest.cc (working copy)
|
| @@ -11,6 +11,19 @@
|
| #include "ipc/ipc_message_utils.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +// IPC messages for testing ----------------------------------------------------
|
| +
|
| +#define IPC_MESSAGE_IMPL
|
| +#include "ipc/ipc_message_macros.h"
|
| +
|
| +#define IPC_MESSAGE_START TestMsgStart
|
| +
|
| +IPC_MESSAGE_CONTROL0(TestMsgClassEmpty)
|
| +
|
| +IPC_MESSAGE_CONTROL1(TestMsgClassI, int)
|
| +
|
| +IPC_SYNC_MESSAGE_CONTROL1_1(TestMsgClassIS, int, std::string)
|
| +
|
| namespace {
|
|
|
| TEST(IPCMessageTest, ListValue) {
|
| @@ -70,4 +83,71 @@
|
| EXPECT_FALSE(IPC::ReadParam(&bad_msg, &iter, &output));
|
| }
|
|
|
| +class IPCMessageParameterTest : public testing::Test {
|
| + public:
|
| + IPCMessageParameterTest() : extra_param_("extra_param"), called_(false) {}
|
| +
|
| + bool OnMessageReceived(const IPC::Message& message) {
|
| + bool msg_is_ok = true;
|
| + bool handled = true;
|
| + IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(IPCMessageParameterTest, message,
|
| + msg_is_ok, std::string, &extra_param_)
|
| + IPC_MESSAGE_HANDLER(TestMsgClassEmpty, OnEmpty)
|
| + IPC_MESSAGE_HANDLER(TestMsgClassI, OnInt)
|
| + //IPC_MESSAGE_HANDLER(TestMsgClassIS, OnSync)
|
| + IPC_MESSAGE_UNHANDLED(handled = false)
|
| + IPC_END_MESSAGE_MAP()
|
| +
|
| + return handled;
|
| + }
|
| +
|
| + void OnEmpty(std::string* extra_param) {
|
| + EXPECT_EQ(extra_param, &extra_param_);
|
| + called_ = true;
|
| + }
|
| +
|
| + void OnInt(std::string* extra_param, int foo) {
|
| + EXPECT_EQ(extra_param, &extra_param_);
|
| + EXPECT_EQ(foo, 42);
|
| + called_ = true;
|
| + }
|
| +
|
| + /* TODO: handle sync IPCs
|
| + void OnSync(std::string* extra_param, int foo, std::string* out) {
|
| + EXPECT_EQ(extra_param, &extra_param_);
|
| + EXPECT_EQ(foo, 42);
|
| + called_ = true;
|
| + *out = std::string("out");
|
| + }
|
| +
|
| + bool Send(IPC::Message* reply) {
|
| + delete reply;
|
| + return true;
|
| + }*/
|
| +
|
| + std::string extra_param_;
|
| + bool called_;
|
| +};
|
| +
|
| +TEST_F(IPCMessageParameterTest, EmptyDispatcherWithParam) {
|
| + TestMsgClassEmpty message;
|
| + EXPECT_TRUE(OnMessageReceived(message));
|
| + EXPECT_TRUE(called_);
|
| +}
|
| +
|
| +TEST_F(IPCMessageParameterTest, OneIntegerWithParam) {
|
| + TestMsgClassI message(42);
|
| + EXPECT_TRUE(OnMessageReceived(message));
|
| + EXPECT_TRUE(called_);
|
| +}
|
| +
|
| +/* TODO: handle sync IPCs
|
| +TEST_F(IPCMessageParameterTest, Sync) {
|
| + std::string output;
|
| + TestMsgClassIS message(42, &output);
|
| + EXPECT_TRUE(OnMessageReceived(message));
|
| + EXPECT_TRUE(called_);
|
| + EXPECT_EQ(output, std::string("out"));
|
| +}*/
|
| +
|
| } // namespace
|
|
|