Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Side by Side Diff: base/json/json_value_converter_unittest.cc

Issue 1852433005: Convert //base to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase after r384946 Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/json/json_value_converter.h ('k') | base/json/json_value_serializer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <memory>
7 #include <string> 8 #include <string>
8 #include <vector> 9 #include <vector>
9 10
10 #include "base/json/json_reader.h" 11 #include "base/json/json_reader.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "base/memory/scoped_vector.h" 12 #include "base/memory/scoped_vector.h"
13 #include "base/strings/string_piece.h" 13 #include "base/strings/string_piece.h"
14 #include "base/values.h" 14 #include "base/values.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 16
17 namespace base { 17 namespace base {
18 namespace { 18 namespace {
19 19
20 // Very simple messages. 20 // Very simple messages.
21 struct SimpleMessage { 21 struct SimpleMessage {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 "{\n" 99 "{\n"
100 " \"foo\": 1,\n" 100 " \"foo\": 1,\n"
101 " \"bar\": \"bar\",\n" 101 " \"bar\": \"bar\",\n"
102 " \"baz\": true,\n" 102 " \"baz\": true,\n"
103 " \"bstruct\": {},\n" 103 " \"bstruct\": {},\n"
104 " \"string_values\": [{\"val\": \"value_1\"}, {\"val\": \"value_2\"}]," 104 " \"string_values\": [{\"val\": \"value_1\"}, {\"val\": \"value_2\"}],"
105 " \"simple_enum\": \"foo\"," 105 " \"simple_enum\": \"foo\","
106 " \"ints\": [1, 2]" 106 " \"ints\": [1, 2]"
107 "}\n"; 107 "}\n";
108 108
109 scoped_ptr<Value> value = base::JSONReader::Read(normal_data); 109 std::unique_ptr<Value> value = base::JSONReader::Read(normal_data);
110 SimpleMessage message; 110 SimpleMessage message;
111 base::JSONValueConverter<SimpleMessage> converter; 111 base::JSONValueConverter<SimpleMessage> converter;
112 EXPECT_TRUE(converter.Convert(*value.get(), &message)); 112 EXPECT_TRUE(converter.Convert(*value.get(), &message));
113 113
114 EXPECT_EQ(1, message.foo); 114 EXPECT_EQ(1, message.foo);
115 EXPECT_EQ("bar", message.bar); 115 EXPECT_EQ("bar", message.bar);
116 EXPECT_TRUE(message.baz); 116 EXPECT_TRUE(message.baz);
117 EXPECT_EQ(SimpleMessage::FOO, message.simple_enum); 117 EXPECT_EQ(SimpleMessage::FOO, message.simple_enum);
118 EXPECT_EQ(2, static_cast<int>(message.ints.size())); 118 EXPECT_EQ(2, static_cast<int>(message.ints.size()));
119 ASSERT_EQ(2U, message.string_values.size()); 119 ASSERT_EQ(2U, message.string_values.size());
(...skipping 21 matching lines...) Expand all
141 " \"string_values\": [{\"val\": \"value_1\"}]," 141 " \"string_values\": [{\"val\": \"value_1\"}],"
142 " \"baz\": true\n" 142 " \"baz\": true\n"
143 " },\n" 143 " },\n"
144 " {\n" 144 " {\n"
145 " \"foo\": 3,\n" 145 " \"foo\": 3,\n"
146 " \"bar\": \"barbaz\",\n" 146 " \"bar\": \"barbaz\",\n"
147 " \"baz\": false\n" 147 " \"baz\": false\n"
148 " }]\n" 148 " }]\n"
149 "}\n"; 149 "}\n";
150 150
151 scoped_ptr<Value> value = base::JSONReader::Read(normal_data); 151 std::unique_ptr<Value> value = base::JSONReader::Read(normal_data);
152 NestedMessage message; 152 NestedMessage message;
153 base::JSONValueConverter<NestedMessage> converter; 153 base::JSONValueConverter<NestedMessage> converter;
154 EXPECT_TRUE(converter.Convert(*value.get(), &message)); 154 EXPECT_TRUE(converter.Convert(*value.get(), &message));
155 155
156 EXPECT_EQ(1.0, message.foo); 156 EXPECT_EQ(1.0, message.foo);
157 EXPECT_EQ(1, message.child.foo); 157 EXPECT_EQ(1, message.child.foo);
158 EXPECT_EQ("bar", message.child.bar); 158 EXPECT_EQ("bar", message.child.bar);
159 EXPECT_TRUE(message.child.baz); 159 EXPECT_TRUE(message.child.baz);
160 EXPECT_TRUE(message.child.bstruct); 160 EXPECT_TRUE(message.child.bstruct);
161 ASSERT_EQ(2U, message.child.string_values.size()); 161 ASSERT_EQ(2U, message.child.string_values.size());
(...skipping 21 matching lines...) Expand all
183 183
184 TEST(JSONValueConverterTest, ParseFailures) { 184 TEST(JSONValueConverterTest, ParseFailures) {
185 const char normal_data[] = 185 const char normal_data[] =
186 "{\n" 186 "{\n"
187 " \"foo\": 1,\n" 187 " \"foo\": 1,\n"
188 " \"bar\": 2,\n" // "bar" is an integer here. 188 " \"bar\": 2,\n" // "bar" is an integer here.
189 " \"baz\": true,\n" 189 " \"baz\": true,\n"
190 " \"ints\": [1, 2]" 190 " \"ints\": [1, 2]"
191 "}\n"; 191 "}\n";
192 192
193 scoped_ptr<Value> value = base::JSONReader::Read(normal_data); 193 std::unique_ptr<Value> value = base::JSONReader::Read(normal_data);
194 SimpleMessage message; 194 SimpleMessage message;
195 base::JSONValueConverter<SimpleMessage> converter; 195 base::JSONValueConverter<SimpleMessage> converter;
196 EXPECT_FALSE(converter.Convert(*value.get(), &message)); 196 EXPECT_FALSE(converter.Convert(*value.get(), &message));
197 // Do not check the values below. |message| may be modified during 197 // Do not check the values below. |message| may be modified during
198 // Convert() even it fails. 198 // Convert() even it fails.
199 } 199 }
200 200
201 TEST(JSONValueConverterTest, ParseWithMissingFields) { 201 TEST(JSONValueConverterTest, ParseWithMissingFields) {
202 const char normal_data[] = 202 const char normal_data[] =
203 "{\n" 203 "{\n"
204 " \"foo\": 1,\n" 204 " \"foo\": 1,\n"
205 " \"baz\": true,\n" 205 " \"baz\": true,\n"
206 " \"ints\": [1, 2]" 206 " \"ints\": [1, 2]"
207 "}\n"; 207 "}\n";
208 208
209 scoped_ptr<Value> value = base::JSONReader::Read(normal_data); 209 std::unique_ptr<Value> value = base::JSONReader::Read(normal_data);
210 SimpleMessage message; 210 SimpleMessage message;
211 base::JSONValueConverter<SimpleMessage> converter; 211 base::JSONValueConverter<SimpleMessage> converter;
212 // Convert() still succeeds even if the input doesn't have "bar" field. 212 // Convert() still succeeds even if the input doesn't have "bar" field.
213 EXPECT_TRUE(converter.Convert(*value.get(), &message)); 213 EXPECT_TRUE(converter.Convert(*value.get(), &message));
214 214
215 EXPECT_EQ(1, message.foo); 215 EXPECT_EQ(1, message.foo);
216 EXPECT_TRUE(message.baz); 216 EXPECT_TRUE(message.baz);
217 EXPECT_EQ(2, static_cast<int>(message.ints.size())); 217 EXPECT_EQ(2, static_cast<int>(message.ints.size()));
218 EXPECT_EQ(1, *(message.ints[0])); 218 EXPECT_EQ(1, *(message.ints[0]));
219 EXPECT_EQ(2, *(message.ints[1])); 219 EXPECT_EQ(2, *(message.ints[1]));
220 } 220 }
221 221
222 TEST(JSONValueConverterTest, EnumParserFails) { 222 TEST(JSONValueConverterTest, EnumParserFails) {
223 const char normal_data[] = 223 const char normal_data[] =
224 "{\n" 224 "{\n"
225 " \"foo\": 1,\n" 225 " \"foo\": 1,\n"
226 " \"bar\": \"bar\",\n" 226 " \"bar\": \"bar\",\n"
227 " \"baz\": true,\n" 227 " \"baz\": true,\n"
228 " \"simple_enum\": \"baz\"," 228 " \"simple_enum\": \"baz\","
229 " \"ints\": [1, 2]" 229 " \"ints\": [1, 2]"
230 "}\n"; 230 "}\n";
231 231
232 scoped_ptr<Value> value = base::JSONReader::Read(normal_data); 232 std::unique_ptr<Value> value = base::JSONReader::Read(normal_data);
233 SimpleMessage message; 233 SimpleMessage message;
234 base::JSONValueConverter<SimpleMessage> converter; 234 base::JSONValueConverter<SimpleMessage> converter;
235 EXPECT_FALSE(converter.Convert(*value.get(), &message)); 235 EXPECT_FALSE(converter.Convert(*value.get(), &message));
236 // No check the values as mentioned above. 236 // No check the values as mentioned above.
237 } 237 }
238 238
239 TEST(JSONValueConverterTest, RepeatedValueErrorInTheMiddle) { 239 TEST(JSONValueConverterTest, RepeatedValueErrorInTheMiddle) {
240 const char normal_data[] = 240 const char normal_data[] =
241 "{\n" 241 "{\n"
242 " \"foo\": 1,\n" 242 " \"foo\": 1,\n"
243 " \"bar\": \"bar\",\n" 243 " \"bar\": \"bar\",\n"
244 " \"baz\": true,\n" 244 " \"baz\": true,\n"
245 " \"simple_enum\": \"baz\"," 245 " \"simple_enum\": \"baz\","
246 " \"ints\": [1, false]" 246 " \"ints\": [1, false]"
247 "}\n"; 247 "}\n";
248 248
249 scoped_ptr<Value> value = base::JSONReader::Read(normal_data); 249 std::unique_ptr<Value> value = base::JSONReader::Read(normal_data);
250 SimpleMessage message; 250 SimpleMessage message;
251 base::JSONValueConverter<SimpleMessage> converter; 251 base::JSONValueConverter<SimpleMessage> converter;
252 EXPECT_FALSE(converter.Convert(*value.get(), &message)); 252 EXPECT_FALSE(converter.Convert(*value.get(), &message));
253 // No check the values as mentioned above. 253 // No check the values as mentioned above.
254 } 254 }
255 255
256 } // namespace base 256 } // namespace base
OLDNEW
« no previous file with comments | « base/json/json_value_converter.h ('k') | base/json/json_value_serializer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698