| Index: chrome/common/ipc_message_unittest.cc
|
| ===================================================================
|
| --- chrome/common/ipc_message_unittest.cc (revision 16497)
|
| +++ chrome/common/ipc_message_unittest.cc (working copy)
|
| @@ -4,9 +4,10 @@
|
|
|
| #include <string.h>
|
|
|
| +#include "base/scoped_ptr.h"
|
| +#include "base/values.h"
|
| #include "chrome/common/ipc_message.h"
|
| #include "chrome/common/ipc_message_utils.h"
|
| -#include "base/scoped_ptr.h"
|
| #include "googleurl/src/gurl.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "third_party/skia/include/core/SkBitmap.h"
|
| @@ -91,3 +92,59 @@
|
| iter = NULL;
|
| EXPECT_FALSE(IPC::ParamTraits<SkBitmap>::Read(&bad_msg, &iter, &bad_output));
|
| }
|
| +
|
| +TEST(IPCMessageTest, ListValue) {
|
| + ListValue input;
|
| + input.Set(0, Value::CreateRealValue(42.42));
|
| + input.Set(1, Value::CreateStringValue("forty"));
|
| + input.Set(2, Value::CreateNullValue());
|
| +
|
| + IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
|
| + IPC::WriteParam(&msg, input);
|
| +
|
| + ListValue output;
|
| + void* iter = NULL;
|
| + EXPECT_TRUE(IPC::ReadParam(&msg, &iter, &output));
|
| +
|
| + EXPECT_TRUE(input.Equals(&output));
|
| +
|
| + // Also test the corrupt case.
|
| + IPC::Message bad_msg(1, 2, IPC::Message::PRIORITY_NORMAL);
|
| + bad_msg.WriteInt(99);
|
| + iter = NULL;
|
| + EXPECT_FALSE(IPC::ReadParam(&bad_msg, &iter, &output));
|
| +}
|
| +
|
| +TEST(IPCMessageTest, DictionaryValue) {
|
| + DictionaryValue input;
|
| + input.Set(L"null", Value::CreateNullValue());
|
| + input.Set(L"bool", Value::CreateBooleanValue(true));
|
| + input.Set(L"int", Value::CreateIntegerValue(42));
|
| +
|
| + scoped_ptr<DictionaryValue> subdict(new DictionaryValue());
|
| + subdict->Set(L"str", Value::CreateStringValue("forty two"));
|
| + subdict->Set(L"bool", Value::CreateBooleanValue(false));
|
| +
|
| + scoped_ptr<ListValue> sublist(new ListValue());
|
| + sublist->Set(0, Value::CreateRealValue(42.42));
|
| + sublist->Set(1, Value::CreateStringValue("forty"));
|
| + sublist->Set(2, Value::CreateStringValue("two"));
|
| + subdict->Set(L"list", sublist.release());
|
| +
|
| + input.Set(L"dict", subdict.release());
|
| +
|
| + IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
|
| + IPC::WriteParam(&msg, input);
|
| +
|
| + DictionaryValue output;
|
| + void* iter = NULL;
|
| + EXPECT_TRUE(IPC::ReadParam(&msg, &iter, &output));
|
| +
|
| + EXPECT_TRUE(input.Equals(&output));
|
| +
|
| + // Also test the corrupt case.
|
| + IPC::Message bad_msg(1, 2, IPC::Message::PRIORITY_NORMAL);
|
| + bad_msg.WriteInt(99);
|
| + iter = NULL;
|
| + EXPECT_FALSE(IPC::ReadParam(&bad_msg, &iter, &output));
|
| +}
|
|
|