diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-28 00:40:04 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-28 00:40:04 +0000 |
commit | c4803e43232864180e5db4fb3b8d185dc0c5ba84 (patch) | |
tree | b22d2ccf1a6f384698261627d91c55838d815657 /base/json | |
parent | 33c867665307e75078bea129ea7cf2a94fda1395 (diff) | |
download | chromium_src-c4803e43232864180e5db4fb3b8d185dc0c5ba84.zip chromium_src-c4803e43232864180e5db4fb3b8d185dc0c5ba84.tar.gz chromium_src-c4803e43232864180e5db4fb3b8d185dc0c5ba84.tar.bz2 |
base: Move the rest of JSONValueSerializer unit tests from c/common to base/json.
This is the follow up patch to r189315 - https://codereview.chromium.org/12910004
where we moved the half of tests that didn't depend on json test files.
json_value_serializer_perftest.cc was not moved yet because it depends on
chrome/common/logging_chrome.h
TEST=base_unittests --gtest_filter=*JSON*
TEST=perf_tests --gtest_filter=JSONValueSerializerTests*
R=darin@chromium.org,bulach@chromium.org
Review URL: https://chromiumcodereview.appspot.com/12481028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@191077 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/json')
-rw-r--r-- | base/json/json_value_serializer_unittest.cc | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/base/json/json_value_serializer_unittest.cc b/base/json/json_value_serializer_unittest.cc index c5bef81..e510500 100644 --- a/base/json/json_value_serializer_unittest.cc +++ b/base/json/json_value_serializer_unittest.cc @@ -11,6 +11,7 @@ #include "base/json/json_string_value_serializer.h" #include "base/json/json_writer.h" #include "base/memory/scoped_ptr.h" +#include "base/path_service.h" #include "base/string_util.h" #include "base/utf_string_conversions.h" #include "base/values.h" @@ -369,6 +370,104 @@ TEST(JSONValueSerializerTest, JSONReaderComments) { ASSERT_FALSE(root.get()); } +class JSONFileValueSerializerTest : public testing::Test { + protected: + virtual void SetUp() OVERRIDE { + ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); + } + + base::ScopedTempDir temp_dir_; +}; + +TEST_F(JSONFileValueSerializerTest, Roundtrip) { + base::FilePath original_file_path; + ASSERT_TRUE(PathService::Get(DIR_TEST_DATA, &original_file_path)); + original_file_path = + original_file_path.Append(FILE_PATH_LITERAL("serializer_test.json")); + + ASSERT_TRUE(file_util::PathExists(original_file_path)); + + JSONFileValueSerializer deserializer(original_file_path); + scoped_ptr<Value> root; + root.reset(deserializer.Deserialize(NULL, NULL)); + + ASSERT_TRUE(root.get()); + ASSERT_TRUE(root->IsType(Value::TYPE_DICTIONARY)); + + DictionaryValue* root_dict = static_cast<DictionaryValue*>(root.get()); + + Value* null_value = NULL; + ASSERT_TRUE(root_dict->Get("null", &null_value)); + ASSERT_TRUE(null_value); + ASSERT_TRUE(null_value->IsType(Value::TYPE_NULL)); + + bool bool_value = false; + ASSERT_TRUE(root_dict->GetBoolean("bool", &bool_value)); + ASSERT_TRUE(bool_value); + + int int_value = 0; + ASSERT_TRUE(root_dict->GetInteger("int", &int_value)); + ASSERT_EQ(42, int_value); + + std::string string_value; + ASSERT_TRUE(root_dict->GetString("string", &string_value)); + ASSERT_EQ("hello", string_value); + + // Now try writing. + const base::FilePath written_file_path = + temp_dir_.path().Append(FILE_PATH_LITERAL("test_output.js")); + + ASSERT_FALSE(file_util::PathExists(written_file_path)); + JSONFileValueSerializer serializer(written_file_path); + ASSERT_TRUE(serializer.Serialize(*root)); + ASSERT_TRUE(file_util::PathExists(written_file_path)); + + // Now compare file contents. + EXPECT_TRUE(file_util::TextContentsEqual(original_file_path, + written_file_path)); + EXPECT_TRUE(file_util::Delete(written_file_path, false)); +} + +TEST_F(JSONFileValueSerializerTest, RoundtripNested) { + base::FilePath original_file_path; + ASSERT_TRUE(PathService::Get(DIR_TEST_DATA, &original_file_path)); + original_file_path = original_file_path.Append( + FILE_PATH_LITERAL("serializer_nested_test.json")); + + ASSERT_TRUE(file_util::PathExists(original_file_path)); + + JSONFileValueSerializer deserializer(original_file_path); + scoped_ptr<Value> root; + root.reset(deserializer.Deserialize(NULL, NULL)); + ASSERT_TRUE(root.get()); + + // Now try writing. + base::FilePath written_file_path = temp_dir_.path().Append( + FILE_PATH_LITERAL("test_output.json")); + + ASSERT_FALSE(file_util::PathExists(written_file_path)); + JSONFileValueSerializer serializer(written_file_path); + ASSERT_TRUE(serializer.Serialize(*root)); + ASSERT_TRUE(file_util::PathExists(written_file_path)); + + // Now compare file contents. + EXPECT_TRUE(file_util::TextContentsEqual(original_file_path, + written_file_path)); + EXPECT_TRUE(file_util::Delete(written_file_path, false)); +} + +TEST_F(JSONFileValueSerializerTest, NoWhitespace) { + base::FilePath source_file_path; + ASSERT_TRUE(PathService::Get(DIR_TEST_DATA, &source_file_path)); + source_file_path = source_file_path.Append( + FILE_PATH_LITERAL("serializer_test_nowhitespace.json")); + ASSERT_TRUE(file_util::PathExists(source_file_path)); + JSONFileValueSerializer serializer(source_file_path); + scoped_ptr<Value> root; + root.reset(serializer.Deserialize(NULL, NULL)); + ASSERT_TRUE(root.get()); +} + } // namespace } // namespace base |