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

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

Issue 2475583002: Adds option for JSON reader to allow invalid utf characters (Closed)
Patch Set: comment Created 4 years, 1 month 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
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 <memory> 5 #include <memory>
6 #include <string> 6 #include <string>
7 7
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/files/scoped_temp_dir.h" 9 #include "base/files/scoped_temp_dir.h"
10 #include "base/json/json_file_value_serializer.h" 10 #include "base/json/json_file_value_serializer.h"
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 // Try to deserialize it through the serializer. 127 // Try to deserialize it through the serializer.
128 JSONStringValueDeserializer str_deserializer(kProperJSONWithCommas); 128 JSONStringValueDeserializer str_deserializer(kProperJSONWithCommas);
129 129
130 int error_code = 0; 130 int error_code = 0;
131 std::string error_message; 131 std::string error_message;
132 std::unique_ptr<Value> value = 132 std::unique_ptr<Value> value =
133 str_deserializer.Deserialize(&error_code, &error_message); 133 str_deserializer.Deserialize(&error_code, &error_message);
134 ASSERT_FALSE(value); 134 ASSERT_FALSE(value);
135 ASSERT_NE(0, error_code); 135 ASSERT_NE(0, error_code);
136 ASSERT_FALSE(error_message.empty()); 136 ASSERT_FALSE(error_message.empty());
137 // Now the flag is set and it must pass. 137 // Repeat with commas allowed.
138 str_deserializer.set_allow_trailing_comma(true); 138 JSONStringValueDeserializer str_deserializer2(kProperJSONWithCommas,
139 value = str_deserializer.Deserialize(&error_code, &error_message); 139 JSON_ALLOW_TRAILING_COMMAS);
140 value = str_deserializer2.Deserialize(&error_code, &error_message);
140 ASSERT_TRUE(value); 141 ASSERT_TRUE(value);
141 ASSERT_EQ(JSONReader::JSON_TRAILING_COMMA, error_code); 142 ASSERT_EQ(JSONReader::JSON_TRAILING_COMMA, error_code);
142 // Verify if the same JSON is still there. 143 // Verify if the same JSON is still there.
143 CheckJSONIsStillTheSame(*value); 144 CheckJSONIsStillTheSame(*value);
144 } 145 }
145 146
146 // Test proper JSON deserialization from file is working. 147 // Test proper JSON deserialization from file is working.
147 TEST(JSONValueDeserializerTest, ReadProperJSONFromFile) { 148 TEST(JSONValueDeserializerTest, ReadProperJSONFromFile) {
148 ScopedTempDir tempdir; 149 ScopedTempDir tempdir;
149 ASSERT_TRUE(tempdir.CreateUniqueTempDir()); 150 ASSERT_TRUE(tempdir.CreateUniqueTempDir());
(...skipping 30 matching lines...) Expand all
180 // Try to deserialize it through the serializer. 181 // Try to deserialize it through the serializer.
181 JSONFileValueDeserializer file_deserializer(temp_file); 182 JSONFileValueDeserializer file_deserializer(temp_file);
182 // This must fail without the proper flag. 183 // This must fail without the proper flag.
183 int error_code = 0; 184 int error_code = 0;
184 std::string error_message; 185 std::string error_message;
185 std::unique_ptr<Value> value = 186 std::unique_ptr<Value> value =
186 file_deserializer.Deserialize(&error_code, &error_message); 187 file_deserializer.Deserialize(&error_code, &error_message);
187 ASSERT_FALSE(value); 188 ASSERT_FALSE(value);
188 ASSERT_NE(0, error_code); 189 ASSERT_NE(0, error_code);
189 ASSERT_FALSE(error_message.empty()); 190 ASSERT_FALSE(error_message.empty());
190 // Now the flag is set and it must pass. 191 // Repeat with commas allowed.
191 file_deserializer.set_allow_trailing_comma(true); 192 JSONFileValueDeserializer file_deserializer2(temp_file,
192 value = file_deserializer.Deserialize(&error_code, &error_message); 193 JSON_ALLOW_TRAILING_COMMAS);
194 value = file_deserializer2.Deserialize(&error_code, &error_message);
193 ASSERT_TRUE(value); 195 ASSERT_TRUE(value);
194 ASSERT_EQ(JSONReader::JSON_TRAILING_COMMA, error_code); 196 ASSERT_EQ(JSONReader::JSON_TRAILING_COMMA, error_code);
195 // Verify if the same JSON is still there. 197 // Verify if the same JSON is still there.
196 CheckJSONIsStillTheSame(*value); 198 CheckJSONIsStillTheSame(*value);
197 } 199 }
198 200
199 TEST(JSONValueDeserializerTest, AllowTrailingComma) { 201 TEST(JSONValueDeserializerTest, AllowTrailingComma) {
200 static const char kTestWithCommas[] = "{\"key\": [true,],}"; 202 static const char kTestWithCommas[] = "{\"key\": [true,],}";
201 static const char kTestNoCommas[] = "{\"key\": [true]}"; 203 static const char kTestNoCommas[] = "{\"key\": [true]}";
202 204
203 JSONStringValueDeserializer deserializer(kTestWithCommas); 205 JSONStringValueDeserializer deserializer(kTestWithCommas,
204 deserializer.set_allow_trailing_comma(true); 206 JSON_ALLOW_TRAILING_COMMAS);
205 JSONStringValueDeserializer deserializer_expected(kTestNoCommas); 207 JSONStringValueDeserializer deserializer_expected(kTestNoCommas);
206 std::unique_ptr<Value> root = deserializer.Deserialize(nullptr, nullptr); 208 std::unique_ptr<Value> root = deserializer.Deserialize(nullptr, nullptr);
207 ASSERT_TRUE(root); 209 ASSERT_TRUE(root);
208 std::unique_ptr<Value> root_expected; 210 std::unique_ptr<Value> root_expected;
209 root_expected = deserializer_expected.Deserialize(nullptr, nullptr); 211 root_expected = deserializer_expected.Deserialize(nullptr, nullptr);
210 ASSERT_TRUE(root_expected); 212 ASSERT_TRUE(root_expected);
211 ASSERT_TRUE(root->Equals(root_expected.get())); 213 ASSERT_TRUE(root->Equals(root_expected.get()));
212 } 214 }
213 215
214 TEST(JSONValueSerializerTest, Roundtrip) { 216 TEST(JSONValueSerializerTest, Roundtrip) {
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 source_file_path.AppendASCII("serializer_test_nowhitespace.json"); 478 source_file_path.AppendASCII("serializer_test_nowhitespace.json");
477 ASSERT_TRUE(PathExists(source_file_path)); 479 ASSERT_TRUE(PathExists(source_file_path));
478 JSONFileValueDeserializer deserializer(source_file_path); 480 JSONFileValueDeserializer deserializer(source_file_path);
479 std::unique_ptr<Value> root = deserializer.Deserialize(nullptr, nullptr); 481 std::unique_ptr<Value> root = deserializer.Deserialize(nullptr, nullptr);
480 ASSERT_TRUE(root); 482 ASSERT_TRUE(root);
481 } 483 }
482 484
483 } // namespace 485 } // namespace
484 486
485 } // namespace base 487 } // namespace base
OLDNEW
« no previous file with comments | « base/json/json_string_value_serializer.cc ('k') | chrome/browser/ui/app_list/start_page_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698