[go: nahoru, domu]

blob: 2f50ee3200c147ddd91f3ce39a197d106a2cea06 [file] [log] [blame]
jbates@chromium.orgce208f872012-03-07 20:42:561// Copyright (c) 2012 The Chromium Authors. All rights reserved.
agl@chromium.org946d1b22009-07-22 23:57:212// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
dmaclach@chromium.org22b42c52010-12-20 06:59:235#include "ipc/ipc_message.h"
6
agl@chromium.org946d1b22009-07-22 23:57:217#include <string.h>
8
levin@chromium.org3b63f8f42011-03-28 01:54:159#include "base/memory/scoped_ptr.h"
agl@chromium.org946d1b22009-07-22 23:57:2110#include "base/values.h"
agl@chromium.org946d1b22009-07-22 23:57:2111#include "ipc/ipc_message_utils.h"
12#include "testing/gtest/include/gtest/gtest.h"
13
14TEST(IPCMessageTest, ListValue) {
15 ListValue input;
arv@chromium.orgfb534c92011-02-01 01:02:0716 input.Set(0, Value::CreateDoubleValue(42.42));
agl@chromium.org946d1b22009-07-22 23:57:2117 input.Set(1, Value::CreateStringValue("forty"));
18 input.Set(2, Value::CreateNullValue());
19
20 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
21 IPC::WriteParam(&msg, input);
22
23 ListValue output;
jbates@chromium.orgce208f872012-03-07 20:42:5624 PickleIterator iter(msg);
agl@chromium.org946d1b22009-07-22 23:57:2125 EXPECT_TRUE(IPC::ReadParam(&msg, &iter, &output));
26
27 EXPECT_TRUE(input.Equals(&output));
28
29 // Also test the corrupt case.
30 IPC::Message bad_msg(1, 2, IPC::Message::PRIORITY_NORMAL);
31 bad_msg.WriteInt(99);
jbates@chromium.orgce208f872012-03-07 20:42:5632 iter = PickleIterator(bad_msg);
agl@chromium.org946d1b22009-07-22 23:57:2133 EXPECT_FALSE(IPC::ReadParam(&bad_msg, &iter, &output));
34}
35
36TEST(IPCMessageTest, DictionaryValue) {
37 DictionaryValue input;
viettrungluu@chromium.org99922662010-08-17 16:24:2538 input.Set("null", Value::CreateNullValue());
39 input.Set("bool", Value::CreateBooleanValue(true));
40 input.Set("int", Value::CreateIntegerValue(42));
kalman@chromium.orgd8b4aa42011-08-19 05:59:5741 input.SetWithoutPathExpansion("int.with.dot", Value::CreateIntegerValue(43));
agl@chromium.org946d1b22009-07-22 23:57:2142
43 scoped_ptr<DictionaryValue> subdict(new DictionaryValue());
viettrungluu@chromium.org99922662010-08-17 16:24:2544 subdict->Set("str", Value::CreateStringValue("forty two"));
45 subdict->Set("bool", Value::CreateBooleanValue(false));
agl@chromium.org946d1b22009-07-22 23:57:2146
47 scoped_ptr<ListValue> sublist(new ListValue());
arv@chromium.orgfb534c92011-02-01 01:02:0748 sublist->Set(0, Value::CreateDoubleValue(42.42));
agl@chromium.org946d1b22009-07-22 23:57:2149 sublist->Set(1, Value::CreateStringValue("forty"));
50 sublist->Set(2, Value::CreateStringValue("two"));
viettrungluu@chromium.org99922662010-08-17 16:24:2551 subdict->Set("list", sublist.release());
agl@chromium.org946d1b22009-07-22 23:57:2152
viettrungluu@chromium.org99922662010-08-17 16:24:2553 input.Set("dict", subdict.release());
agl@chromium.org946d1b22009-07-22 23:57:2154
55 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
56 IPC::WriteParam(&msg, input);
57
58 DictionaryValue output;
jbates@chromium.orgce208f872012-03-07 20:42:5659 PickleIterator iter(msg);
agl@chromium.org946d1b22009-07-22 23:57:2160 EXPECT_TRUE(IPC::ReadParam(&msg, &iter, &output));
61
62 EXPECT_TRUE(input.Equals(&output));
63
64 // Also test the corrupt case.
65 IPC::Message bad_msg(1, 2, IPC::Message::PRIORITY_NORMAL);
66 bad_msg.WriteInt(99);
jbates@chromium.orgce208f872012-03-07 20:42:5667 iter = PickleIterator(bad_msg);
agl@chromium.org946d1b22009-07-22 23:57:2168 EXPECT_FALSE(IPC::ReadParam(&bad_msg, &iter, &output));
69}