| Index: base/json/json_value_converter_unittest.cc
|
| diff --git a/base/json/json_value_converter_unittest.cc b/base/json/json_value_converter_unittest.cc
|
| index d1a8ee723f99bf3cce68b24470a7aa6b7e122e15..dd36a1fdb3a970502a885e3cacd25e9b9a420504 100644
|
| --- a/base/json/json_value_converter_unittest.cc
|
| +++ b/base/json/json_value_converter_unittest.cc
|
| @@ -62,7 +62,8 @@ TEST(JSONValueConverterTest, ParseSimpleMessage) {
|
| scoped_ptr<Value> value(base::JSONReader::Read(normal_data, false));
|
| SimpleMessage message;
|
| base::JSONValueConverter<SimpleMessage> converter;
|
| - converter.Convert(*value.get(), &message);
|
| + EXPECT_TRUE(converter.Convert(*value.get(), &message));
|
| +
|
| EXPECT_EQ(1, message.foo);
|
| EXPECT_EQ("bar", message.bar);
|
| EXPECT_TRUE(message.baz);
|
| @@ -95,7 +96,8 @@ TEST(JSONValueConverterTest, ParseNestedMessage) {
|
| scoped_ptr<Value> value(base::JSONReader::Read(normal_data, false));
|
| NestedMessage message;
|
| base::JSONValueConverter<NestedMessage> converter;
|
| - converter.Convert(*value.get(), &message);
|
| + EXPECT_TRUE(converter.Convert(*value.get(), &message));
|
| +
|
| EXPECT_EQ(1.0, message.foo);
|
| EXPECT_EQ(1, message.child.foo);
|
| EXPECT_EQ("bar", message.child.bar);
|
| @@ -113,4 +115,42 @@ TEST(JSONValueConverterTest, ParseNestedMessage) {
|
| EXPECT_FALSE(second_child.baz);
|
| }
|
|
|
| +TEST(JSONValueConverterTest, ParseFailures) {
|
| + const char normal_data[] =
|
| + "{\n"
|
| + " \"foo\": 1,\n"
|
| + " \"bar\": 2,\n" // "bar" is an integer here.
|
| + " \"baz\": true,\n"
|
| + " \"ints\": [1, 2]"
|
| + "}\n";
|
| +
|
| + scoped_ptr<Value> value(base::JSONReader::Read(normal_data, false));
|
| + SimpleMessage message;
|
| + base::JSONValueConverter<SimpleMessage> converter;
|
| + EXPECT_FALSE(converter.Convert(*value.get(), &message));
|
| + // Do not check the values below. |message| may be modified during
|
| + // Convert() even it fails.
|
| +}
|
| +
|
| +TEST(JSONValueConverterTest, ParseWithMissingFields) {
|
| + const char normal_data[] =
|
| + "{\n"
|
| + " \"foo\": 1,\n"
|
| + " \"baz\": true,\n"
|
| + " \"ints\": [1, 2]"
|
| + "}\n";
|
| +
|
| + scoped_ptr<Value> value(base::JSONReader::Read(normal_data, false));
|
| + SimpleMessage message;
|
| + base::JSONValueConverter<SimpleMessage> converter;
|
| + // Convert() still succeeds even if the input doesn't have "bar" field.
|
| + EXPECT_TRUE(converter.Convert(*value.get(), &message));
|
| +
|
| + EXPECT_EQ(1, message.foo);
|
| + EXPECT_TRUE(message.baz);
|
| + EXPECT_EQ(2, static_cast<int>(message.ints.size()));
|
| + EXPECT_EQ(1, message.ints[0]);
|
| + EXPECT_EQ(2, message.ints[1]);
|
| +}
|
| +
|
| } // namespace base
|
|
|