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 |