jbates@chromium.org | ce208f87 | 2012-03-07 20:42:56 | [diff] [blame^] | 1 | // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
dmaclach@chromium.org | 22b42c5 | 2010-12-20 06:59:23 | [diff] [blame] | 5 | #include "ipc/ipc_message.h" |
| 6 | |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 7 | #include <string.h> |
| 8 | |
levin@chromium.org | 3b63f8f4 | 2011-03-28 01:54:15 | [diff] [blame] | 9 | #include "base/memory/scoped_ptr.h" |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 10 | #include "base/values.h" |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 11 | #include "ipc/ipc_message_utils.h" |
| 12 | #include "testing/gtest/include/gtest/gtest.h" |
| 13 | |
| 14 | TEST(IPCMessageTest, ListValue) { |
| 15 | ListValue input; |
arv@chromium.org | fb534c9 | 2011-02-01 01:02:07 | [diff] [blame] | 16 | input.Set(0, Value::CreateDoubleValue(42.42)); |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 17 | 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.org | ce208f87 | 2012-03-07 20:42:56 | [diff] [blame^] | 24 | PickleIterator iter(msg); |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 25 | 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.org | ce208f87 | 2012-03-07 20:42:56 | [diff] [blame^] | 32 | iter = PickleIterator(bad_msg); |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 33 | EXPECT_FALSE(IPC::ReadParam(&bad_msg, &iter, &output)); |
| 34 | } |
| 35 | |
| 36 | TEST(IPCMessageTest, DictionaryValue) { |
| 37 | DictionaryValue input; |
viettrungluu@chromium.org | 9992266 | 2010-08-17 16:24:25 | [diff] [blame] | 38 | input.Set("null", Value::CreateNullValue()); |
| 39 | input.Set("bool", Value::CreateBooleanValue(true)); |
| 40 | input.Set("int", Value::CreateIntegerValue(42)); |
kalman@chromium.org | d8b4aa4 | 2011-08-19 05:59:57 | [diff] [blame] | 41 | input.SetWithoutPathExpansion("int.with.dot", Value::CreateIntegerValue(43)); |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 42 | |
| 43 | scoped_ptr<DictionaryValue> subdict(new DictionaryValue()); |
viettrungluu@chromium.org | 9992266 | 2010-08-17 16:24:25 | [diff] [blame] | 44 | subdict->Set("str", Value::CreateStringValue("forty two")); |
| 45 | subdict->Set("bool", Value::CreateBooleanValue(false)); |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 46 | |
| 47 | scoped_ptr<ListValue> sublist(new ListValue()); |
arv@chromium.org | fb534c9 | 2011-02-01 01:02:07 | [diff] [blame] | 48 | sublist->Set(0, Value::CreateDoubleValue(42.42)); |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 49 | sublist->Set(1, Value::CreateStringValue("forty")); |
| 50 | sublist->Set(2, Value::CreateStringValue("two")); |
viettrungluu@chromium.org | 9992266 | 2010-08-17 16:24:25 | [diff] [blame] | 51 | subdict->Set("list", sublist.release()); |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 52 | |
viettrungluu@chromium.org | 9992266 | 2010-08-17 16:24:25 | [diff] [blame] | 53 | input.Set("dict", subdict.release()); |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 54 | |
| 55 | IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); |
| 56 | IPC::WriteParam(&msg, input); |
| 57 | |
| 58 | DictionaryValue output; |
jbates@chromium.org | ce208f87 | 2012-03-07 20:42:56 | [diff] [blame^] | 59 | PickleIterator iter(msg); |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 60 | 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.org | ce208f87 | 2012-03-07 20:42:56 | [diff] [blame^] | 67 | iter = PickleIterator(bad_msg); |
agl@chromium.org | 946d1b2 | 2009-07-22 23:57:21 | [diff] [blame] | 68 | EXPECT_FALSE(IPC::ReadParam(&bad_msg, &iter, &output)); |
| 69 | } |