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 <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 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 ASSERT_EQ(JSONReader::JSON_TRAILING_COMMA, error_code); | 141 ASSERT_EQ(JSONReader::JSON_TRAILING_COMMA, error_code); |
142 // Verify if the same JSON is still there. | 142 // Verify if the same JSON is still there. |
143 CheckJSONIsStillTheSame(*value); | 143 CheckJSONIsStillTheSame(*value); |
144 } | 144 } |
145 | 145 |
146 // Test proper JSON deserialization from file is working. | 146 // Test proper JSON deserialization from file is working. |
147 TEST(JSONValueDeserializerTest, ReadProperJSONFromFile) { | 147 TEST(JSONValueDeserializerTest, ReadProperJSONFromFile) { |
148 ScopedTempDir tempdir; | 148 ScopedTempDir tempdir; |
149 ASSERT_TRUE(tempdir.CreateUniqueTempDir()); | 149 ASSERT_TRUE(tempdir.CreateUniqueTempDir()); |
150 // Write it down in the file. | 150 // Write it down in the file. |
151 FilePath temp_file(tempdir.path().AppendASCII("test.json")); | 151 FilePath temp_file(tempdir.GetPath().AppendASCII("test.json")); |
152 ASSERT_EQ(static_cast<int>(strlen(kProperJSON)), | 152 ASSERT_EQ(static_cast<int>(strlen(kProperJSON)), |
153 WriteFile(temp_file, kProperJSON, strlen(kProperJSON))); | 153 WriteFile(temp_file, kProperJSON, strlen(kProperJSON))); |
154 | 154 |
155 // Try to deserialize it through the serializer. | 155 // Try to deserialize it through the serializer. |
156 JSONFileValueDeserializer file_deserializer(temp_file); | 156 JSONFileValueDeserializer file_deserializer(temp_file); |
157 | 157 |
158 int error_code = 0; | 158 int error_code = 0; |
159 std::string error_message; | 159 std::string error_message; |
160 std::unique_ptr<Value> value = | 160 std::unique_ptr<Value> value = |
161 file_deserializer.Deserialize(&error_code, &error_message); | 161 file_deserializer.Deserialize(&error_code, &error_message); |
162 ASSERT_TRUE(value); | 162 ASSERT_TRUE(value); |
163 ASSERT_EQ(0, error_code); | 163 ASSERT_EQ(0, error_code); |
164 ASSERT_TRUE(error_message.empty()); | 164 ASSERT_TRUE(error_message.empty()); |
165 // Verify if the same JSON is still there. | 165 // Verify if the same JSON is still there. |
166 CheckJSONIsStillTheSame(*value); | 166 CheckJSONIsStillTheSame(*value); |
167 } | 167 } |
168 | 168 |
169 // Test that trialing commas are only properly deserialized from file when | 169 // Test that trialing commas are only properly deserialized from file when |
170 // the proper flag for that is set. | 170 // the proper flag for that is set. |
171 TEST(JSONValueDeserializerTest, ReadJSONWithCommasFromFile) { | 171 TEST(JSONValueDeserializerTest, ReadJSONWithCommasFromFile) { |
172 ScopedTempDir tempdir; | 172 ScopedTempDir tempdir; |
173 ASSERT_TRUE(tempdir.CreateUniqueTempDir()); | 173 ASSERT_TRUE(tempdir.CreateUniqueTempDir()); |
174 // Write it down in the file. | 174 // Write it down in the file. |
175 FilePath temp_file(tempdir.path().AppendASCII("test.json")); | 175 FilePath temp_file(tempdir.GetPath().AppendASCII("test.json")); |
176 ASSERT_EQ(static_cast<int>(strlen(kProperJSONWithCommas)), | 176 ASSERT_EQ(static_cast<int>(strlen(kProperJSONWithCommas)), |
177 WriteFile(temp_file, kProperJSONWithCommas, | 177 WriteFile(temp_file, kProperJSONWithCommas, |
178 strlen(kProperJSONWithCommas))); | 178 strlen(kProperJSONWithCommas))); |
179 | 179 |
180 // Try to deserialize it through the serializer. | 180 // Try to deserialize it through the serializer. |
181 JSONFileValueDeserializer file_deserializer(temp_file); | 181 JSONFileValueDeserializer file_deserializer(temp_file); |
182 // This must fail without the proper flag. | 182 // This must fail without the proper flag. |
183 int error_code = 0; | 183 int error_code = 0; |
184 std::string error_message; | 184 std::string error_message; |
185 std::unique_ptr<Value> value = | 185 std::unique_ptr<Value> value = |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 int int_value = 0; | 424 int int_value = 0; |
425 ASSERT_TRUE(root_dict->GetInteger("int", &int_value)); | 425 ASSERT_TRUE(root_dict->GetInteger("int", &int_value)); |
426 ASSERT_EQ(42, int_value); | 426 ASSERT_EQ(42, int_value); |
427 | 427 |
428 std::string string_value; | 428 std::string string_value; |
429 ASSERT_TRUE(root_dict->GetString("string", &string_value)); | 429 ASSERT_TRUE(root_dict->GetString("string", &string_value)); |
430 ASSERT_EQ("hello", string_value); | 430 ASSERT_EQ("hello", string_value); |
431 | 431 |
432 // Now try writing. | 432 // Now try writing. |
433 const FilePath written_file_path = | 433 const FilePath written_file_path = |
434 temp_dir_.path().AppendASCII("test_output.js"); | 434 temp_dir_.GetPath().AppendASCII("test_output.js"); |
435 | 435 |
436 ASSERT_FALSE(PathExists(written_file_path)); | 436 ASSERT_FALSE(PathExists(written_file_path)); |
437 JSONFileValueSerializer serializer(written_file_path); | 437 JSONFileValueSerializer serializer(written_file_path); |
438 ASSERT_TRUE(serializer.Serialize(*root_dict)); | 438 ASSERT_TRUE(serializer.Serialize(*root_dict)); |
439 ASSERT_TRUE(PathExists(written_file_path)); | 439 ASSERT_TRUE(PathExists(written_file_path)); |
440 | 440 |
441 // Now compare file contents. | 441 // Now compare file contents. |
442 EXPECT_TRUE(TextContentsEqual(original_file_path, written_file_path)); | 442 EXPECT_TRUE(TextContentsEqual(original_file_path, written_file_path)); |
443 EXPECT_TRUE(DeleteFile(written_file_path, false)); | 443 EXPECT_TRUE(DeleteFile(written_file_path, false)); |
444 } | 444 } |
445 | 445 |
446 TEST_F(JSONFileValueSerializerTest, RoundtripNested) { | 446 TEST_F(JSONFileValueSerializerTest, RoundtripNested) { |
447 FilePath original_file_path; | 447 FilePath original_file_path; |
448 ASSERT_TRUE(PathService::Get(DIR_TEST_DATA, &original_file_path)); | 448 ASSERT_TRUE(PathService::Get(DIR_TEST_DATA, &original_file_path)); |
449 original_file_path = | 449 original_file_path = |
450 original_file_path.AppendASCII("serializer_nested_test.json"); | 450 original_file_path.AppendASCII("serializer_nested_test.json"); |
451 | 451 |
452 ASSERT_TRUE(PathExists(original_file_path)); | 452 ASSERT_TRUE(PathExists(original_file_path)); |
453 | 453 |
454 JSONFileValueDeserializer deserializer(original_file_path); | 454 JSONFileValueDeserializer deserializer(original_file_path); |
455 std::unique_ptr<Value> root = deserializer.Deserialize(nullptr, nullptr); | 455 std::unique_ptr<Value> root = deserializer.Deserialize(nullptr, nullptr); |
456 ASSERT_TRUE(root); | 456 ASSERT_TRUE(root); |
457 | 457 |
458 // Now try writing. | 458 // Now try writing. |
459 FilePath written_file_path = temp_dir_.path().AppendASCII("test_output.json"); | 459 FilePath written_file_path = |
| 460 temp_dir_.GetPath().AppendASCII("test_output.json"); |
460 | 461 |
461 ASSERT_FALSE(PathExists(written_file_path)); | 462 ASSERT_FALSE(PathExists(written_file_path)); |
462 JSONFileValueSerializer serializer(written_file_path); | 463 JSONFileValueSerializer serializer(written_file_path); |
463 ASSERT_TRUE(serializer.Serialize(*root)); | 464 ASSERT_TRUE(serializer.Serialize(*root)); |
464 ASSERT_TRUE(PathExists(written_file_path)); | 465 ASSERT_TRUE(PathExists(written_file_path)); |
465 | 466 |
466 // Now compare file contents. | 467 // Now compare file contents. |
467 EXPECT_TRUE(TextContentsEqual(original_file_path, written_file_path)); | 468 EXPECT_TRUE(TextContentsEqual(original_file_path, written_file_path)); |
468 EXPECT_TRUE(DeleteFile(written_file_path, false)); | 469 EXPECT_TRUE(DeleteFile(written_file_path, false)); |
469 } | 470 } |
470 | 471 |
471 TEST_F(JSONFileValueSerializerTest, NoWhitespace) { | 472 TEST_F(JSONFileValueSerializerTest, NoWhitespace) { |
472 FilePath source_file_path; | 473 FilePath source_file_path; |
473 ASSERT_TRUE(PathService::Get(DIR_TEST_DATA, &source_file_path)); | 474 ASSERT_TRUE(PathService::Get(DIR_TEST_DATA, &source_file_path)); |
474 source_file_path = | 475 source_file_path = |
475 source_file_path.AppendASCII("serializer_test_nowhitespace.json"); | 476 source_file_path.AppendASCII("serializer_test_nowhitespace.json"); |
476 ASSERT_TRUE(PathExists(source_file_path)); | 477 ASSERT_TRUE(PathExists(source_file_path)); |
477 JSONFileValueDeserializer deserializer(source_file_path); | 478 JSONFileValueDeserializer deserializer(source_file_path); |
478 std::unique_ptr<Value> root = deserializer.Deserialize(nullptr, nullptr); | 479 std::unique_ptr<Value> root = deserializer.Deserialize(nullptr, nullptr); |
479 ASSERT_TRUE(root); | 480 ASSERT_TRUE(root); |
480 } | 481 } |
481 | 482 |
482 } // namespace | 483 } // namespace |
483 | 484 |
484 } // namespace base | 485 } // namespace base |
OLD | NEW |