| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/json/json_value_converter.h" | 5 #include "base/json/json_value_converter.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 TEST(JSONValueConverterTest, ParseSimpleMessage) { | 72 TEST(JSONValueConverterTest, ParseSimpleMessage) { |
| 73 const char normal_data[] = | 73 const char normal_data[] = |
| 74 "{\n" | 74 "{\n" |
| 75 " \"foo\": 1,\n" | 75 " \"foo\": 1,\n" |
| 76 " \"bar\": \"bar\",\n" | 76 " \"bar\": \"bar\",\n" |
| 77 " \"baz\": true,\n" | 77 " \"baz\": true,\n" |
| 78 " \"simple_enum\": \"foo\"," | 78 " \"simple_enum\": \"foo\"," |
| 79 " \"ints\": [1, 2]" | 79 " \"ints\": [1, 2]" |
| 80 "}\n"; | 80 "}\n"; |
| 81 | 81 |
| 82 scoped_ptr<Value> value(base::JSONReader::Read(normal_data, false)); | 82 scoped_ptr<Value> value(base::JSONReader::Read(normal_data)); |
| 83 SimpleMessage message; | 83 SimpleMessage message; |
| 84 base::JSONValueConverter<SimpleMessage> converter; | 84 base::JSONValueConverter<SimpleMessage> converter; |
| 85 EXPECT_TRUE(converter.Convert(*value.get(), &message)); | 85 EXPECT_TRUE(converter.Convert(*value.get(), &message)); |
| 86 | 86 |
| 87 EXPECT_EQ(1, message.foo); | 87 EXPECT_EQ(1, message.foo); |
| 88 EXPECT_EQ("bar", message.bar); | 88 EXPECT_EQ("bar", message.bar); |
| 89 EXPECT_TRUE(message.baz); | 89 EXPECT_TRUE(message.baz); |
| 90 EXPECT_EQ(SimpleMessage::FOO, message.simple_enum); | 90 EXPECT_EQ(SimpleMessage::FOO, message.simple_enum); |
| 91 EXPECT_EQ(2, static_cast<int>(message.ints.size())); | 91 EXPECT_EQ(2, static_cast<int>(message.ints.size())); |
| 92 EXPECT_EQ(1, *(message.ints[0])); | 92 EXPECT_EQ(1, *(message.ints[0])); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 107 " \"bar\": \"foobar\",\n" | 107 " \"bar\": \"foobar\",\n" |
| 108 " \"baz\": true\n" | 108 " \"baz\": true\n" |
| 109 " },\n" | 109 " },\n" |
| 110 " {\n" | 110 " {\n" |
| 111 " \"foo\": 3,\n" | 111 " \"foo\": 3,\n" |
| 112 " \"bar\": \"barbaz\",\n" | 112 " \"bar\": \"barbaz\",\n" |
| 113 " \"baz\": false\n" | 113 " \"baz\": false\n" |
| 114 " }]\n" | 114 " }]\n" |
| 115 "}\n"; | 115 "}\n"; |
| 116 | 116 |
| 117 scoped_ptr<Value> value(base::JSONReader::Read(normal_data, false)); | 117 scoped_ptr<Value> value(base::JSONReader::Read(normal_data)); |
| 118 NestedMessage message; | 118 NestedMessage message; |
| 119 base::JSONValueConverter<NestedMessage> converter; | 119 base::JSONValueConverter<NestedMessage> converter; |
| 120 EXPECT_TRUE(converter.Convert(*value.get(), &message)); | 120 EXPECT_TRUE(converter.Convert(*value.get(), &message)); |
| 121 | 121 |
| 122 EXPECT_EQ(1.0, message.foo); | 122 EXPECT_EQ(1.0, message.foo); |
| 123 EXPECT_EQ(1, message.child.foo); | 123 EXPECT_EQ(1, message.child.foo); |
| 124 EXPECT_EQ("bar", message.child.bar); | 124 EXPECT_EQ("bar", message.child.bar); |
| 125 EXPECT_TRUE(message.child.baz); | 125 EXPECT_TRUE(message.child.baz); |
| 126 | 126 |
| 127 EXPECT_EQ(2, static_cast<int>(message.children.size())); | 127 EXPECT_EQ(2, static_cast<int>(message.children.size())); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 140 | 140 |
| 141 TEST(JSONValueConverterTest, ParseFailures) { | 141 TEST(JSONValueConverterTest, ParseFailures) { |
| 142 const char normal_data[] = | 142 const char normal_data[] = |
| 143 "{\n" | 143 "{\n" |
| 144 " \"foo\": 1,\n" | 144 " \"foo\": 1,\n" |
| 145 " \"bar\": 2,\n" // "bar" is an integer here. | 145 " \"bar\": 2,\n" // "bar" is an integer here. |
| 146 " \"baz\": true,\n" | 146 " \"baz\": true,\n" |
| 147 " \"ints\": [1, 2]" | 147 " \"ints\": [1, 2]" |
| 148 "}\n"; | 148 "}\n"; |
| 149 | 149 |
| 150 scoped_ptr<Value> value(base::JSONReader::Read(normal_data, false)); | 150 scoped_ptr<Value> value(base::JSONReader::Read(normal_data)); |
| 151 SimpleMessage message; | 151 SimpleMessage message; |
| 152 base::JSONValueConverter<SimpleMessage> converter; | 152 base::JSONValueConverter<SimpleMessage> converter; |
| 153 EXPECT_FALSE(converter.Convert(*value.get(), &message)); | 153 EXPECT_FALSE(converter.Convert(*value.get(), &message)); |
| 154 // Do not check the values below. |message| may be modified during | 154 // Do not check the values below. |message| may be modified during |
| 155 // Convert() even it fails. | 155 // Convert() even it fails. |
| 156 } | 156 } |
| 157 | 157 |
| 158 TEST(JSONValueConverterTest, ParseWithMissingFields) { | 158 TEST(JSONValueConverterTest, ParseWithMissingFields) { |
| 159 const char normal_data[] = | 159 const char normal_data[] = |
| 160 "{\n" | 160 "{\n" |
| 161 " \"foo\": 1,\n" | 161 " \"foo\": 1,\n" |
| 162 " \"baz\": true,\n" | 162 " \"baz\": true,\n" |
| 163 " \"ints\": [1, 2]" | 163 " \"ints\": [1, 2]" |
| 164 "}\n"; | 164 "}\n"; |
| 165 | 165 |
| 166 scoped_ptr<Value> value(base::JSONReader::Read(normal_data, false)); | 166 scoped_ptr<Value> value(base::JSONReader::Read(normal_data)); |
| 167 SimpleMessage message; | 167 SimpleMessage message; |
| 168 base::JSONValueConverter<SimpleMessage> converter; | 168 base::JSONValueConverter<SimpleMessage> converter; |
| 169 // Convert() still succeeds even if the input doesn't have "bar" field. | 169 // Convert() still succeeds even if the input doesn't have "bar" field. |
| 170 EXPECT_TRUE(converter.Convert(*value.get(), &message)); | 170 EXPECT_TRUE(converter.Convert(*value.get(), &message)); |
| 171 | 171 |
| 172 EXPECT_EQ(1, message.foo); | 172 EXPECT_EQ(1, message.foo); |
| 173 EXPECT_TRUE(message.baz); | 173 EXPECT_TRUE(message.baz); |
| 174 EXPECT_EQ(2, static_cast<int>(message.ints.size())); | 174 EXPECT_EQ(2, static_cast<int>(message.ints.size())); |
| 175 EXPECT_EQ(1, *(message.ints[0])); | 175 EXPECT_EQ(1, *(message.ints[0])); |
| 176 EXPECT_EQ(2, *(message.ints[1])); | 176 EXPECT_EQ(2, *(message.ints[1])); |
| 177 } | 177 } |
| 178 | 178 |
| 179 TEST(JSONValueConverterTest, EnumParserFails) { | 179 TEST(JSONValueConverterTest, EnumParserFails) { |
| 180 const char normal_data[] = | 180 const char normal_data[] = |
| 181 "{\n" | 181 "{\n" |
| 182 " \"foo\": 1,\n" | 182 " \"foo\": 1,\n" |
| 183 " \"bar\": \"bar\",\n" | 183 " \"bar\": \"bar\",\n" |
| 184 " \"baz\": true,\n" | 184 " \"baz\": true,\n" |
| 185 " \"simple_enum\": \"baz\"," | 185 " \"simple_enum\": \"baz\"," |
| 186 " \"ints\": [1, 2]" | 186 " \"ints\": [1, 2]" |
| 187 "}\n"; | 187 "}\n"; |
| 188 | 188 |
| 189 scoped_ptr<Value> value(base::JSONReader::Read(normal_data, false)); | 189 scoped_ptr<Value> value(base::JSONReader::Read(normal_data)); |
| 190 SimpleMessage message; | 190 SimpleMessage message; |
| 191 base::JSONValueConverter<SimpleMessage> converter; | 191 base::JSONValueConverter<SimpleMessage> converter; |
| 192 EXPECT_FALSE(converter.Convert(*value.get(), &message)); | 192 EXPECT_FALSE(converter.Convert(*value.get(), &message)); |
| 193 // No check the values as mentioned above. | 193 // No check the values as mentioned above. |
| 194 } | 194 } |
| 195 | 195 |
| 196 TEST(JSONValueConverterTest, RepeatedValueErrorInTheMiddle) { | 196 TEST(JSONValueConverterTest, RepeatedValueErrorInTheMiddle) { |
| 197 const char normal_data[] = | 197 const char normal_data[] = |
| 198 "{\n" | 198 "{\n" |
| 199 " \"foo\": 1,\n" | 199 " \"foo\": 1,\n" |
| 200 " \"bar\": \"bar\",\n" | 200 " \"bar\": \"bar\",\n" |
| 201 " \"baz\": true,\n" | 201 " \"baz\": true,\n" |
| 202 " \"simple_enum\": \"baz\"," | 202 " \"simple_enum\": \"baz\"," |
| 203 " \"ints\": [1, false]" | 203 " \"ints\": [1, false]" |
| 204 "}\n"; | 204 "}\n"; |
| 205 | 205 |
| 206 scoped_ptr<Value> value(base::JSONReader::Read(normal_data, false)); | 206 scoped_ptr<Value> value(base::JSONReader::Read(normal_data)); |
| 207 SimpleMessage message; | 207 SimpleMessage message; |
| 208 base::JSONValueConverter<SimpleMessage> converter; | 208 base::JSONValueConverter<SimpleMessage> converter; |
| 209 EXPECT_FALSE(converter.Convert(*value.get(), &message)); | 209 EXPECT_FALSE(converter.Convert(*value.get(), &message)); |
| 210 // No check the values as mentioned above. | 210 // No check the values as mentioned above. |
| 211 } | 211 } |
| 212 | 212 |
| 213 } // namespace base | 213 } // namespace base |
| OLD | NEW |