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

Unified Diff: base/json/json_value_converter_unittest.cc

Issue 1647803004: Move base to DEPS (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/json/json_value_converter.cc ('k') | base/json/json_value_serializer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/json/json_value_converter_unittest.cc
diff --git a/base/json/json_value_converter_unittest.cc b/base/json/json_value_converter_unittest.cc
deleted file mode 100644
index 90386107d85ca2a6f90b3292750ba3135996d558..0000000000000000000000000000000000000000
--- a/base/json/json_value_converter_unittest.cc
+++ /dev/null
@@ -1,256 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/json/json_value_converter.h"
-
-#include <string>
-#include <vector>
-
-#include "base/json/json_reader.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
-#include "base/strings/string_piece.h"
-#include "base/values.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace base {
-namespace {
-
-// Very simple messages.
-struct SimpleMessage {
- enum SimpleEnum {
- FOO, BAR,
- };
- int foo;
- std::string bar;
- bool baz;
- bool bstruct;
- SimpleEnum simple_enum;
- ScopedVector<int> ints;
- ScopedVector<std::string> string_values;
- SimpleMessage() : foo(0), baz(false), bstruct(false), simple_enum(FOO) {}
-
- static bool ParseSimpleEnum(const StringPiece& value, SimpleEnum* field) {
- if (value == "foo") {
- *field = FOO;
- return true;
- } else if (value == "bar") {
- *field = BAR;
- return true;
- }
- return false;
- }
-
- static bool HasFieldPresent(const base::Value* value, bool* result) {
- *result = value != NULL;
- return true;
- }
-
- static bool GetValueString(const base::Value* value, std::string* result) {
- const base::DictionaryValue* dict = NULL;
- if (!value->GetAsDictionary(&dict))
- return false;
-
- if (!dict->GetString("val", result))
- return false;
-
- return true;
- }
-
- static void RegisterJSONConverter(
- base::JSONValueConverter<SimpleMessage>* converter) {
- converter->RegisterIntField("foo", &SimpleMessage::foo);
- converter->RegisterStringField("bar", &SimpleMessage::bar);
- converter->RegisterBoolField("baz", &SimpleMessage::baz);
- converter->RegisterCustomField<SimpleEnum>(
- "simple_enum", &SimpleMessage::simple_enum, &ParseSimpleEnum);
- converter->RegisterRepeatedInt("ints", &SimpleMessage::ints);
- converter->RegisterCustomValueField<bool>("bstruct",
- &SimpleMessage::bstruct,
- &HasFieldPresent);
- converter->RegisterRepeatedCustomValue<std::string>(
- "string_values",
- &SimpleMessage::string_values,
- &GetValueString);
- }
-};
-
-// For nested messages.
-struct NestedMessage {
- double foo;
- SimpleMessage child;
- ScopedVector<SimpleMessage> children;
-
- NestedMessage() : foo(0) {}
-
- static void RegisterJSONConverter(
- base::JSONValueConverter<NestedMessage>* converter) {
- converter->RegisterDoubleField("foo", &NestedMessage::foo);
- converter->RegisterNestedField("child", &NestedMessage::child);
- converter->RegisterRepeatedMessage("children", &NestedMessage::children);
- }
-};
-
-} // namespace
-
-TEST(JSONValueConverterTest, ParseSimpleMessage) {
- const char normal_data[] =
- "{\n"
- " \"foo\": 1,\n"
- " \"bar\": \"bar\",\n"
- " \"baz\": true,\n"
- " \"bstruct\": {},\n"
- " \"string_values\": [{\"val\": \"value_1\"}, {\"val\": \"value_2\"}],"
- " \"simple_enum\": \"foo\","
- " \"ints\": [1, 2]"
- "}\n";
-
- scoped_ptr<Value> value = base::JSONReader::Read(normal_data);
- SimpleMessage message;
- base::JSONValueConverter<SimpleMessage> converter;
- EXPECT_TRUE(converter.Convert(*value.get(), &message));
-
- EXPECT_EQ(1, message.foo);
- EXPECT_EQ("bar", message.bar);
- EXPECT_TRUE(message.baz);
- EXPECT_EQ(SimpleMessage::FOO, message.simple_enum);
- EXPECT_EQ(2, static_cast<int>(message.ints.size()));
- ASSERT_EQ(2U, message.string_values.size());
- EXPECT_EQ("value_1", *message.string_values[0]);
- EXPECT_EQ("value_2", *message.string_values[1]);
- EXPECT_EQ(1, *(message.ints[0]));
- EXPECT_EQ(2, *(message.ints[1]));
-}
-
-TEST(JSONValueConverterTest, ParseNestedMessage) {
- const char normal_data[] =
- "{\n"
- " \"foo\": 1.0,\n"
- " \"child\": {\n"
- " \"foo\": 1,\n"
- " \"bar\": \"bar\",\n"
- " \"bstruct\": {},\n"
- " \"string_values\": [{\"val\": \"value_1\"}, {\"val\": \"value_2\"}],"
- " \"baz\": true\n"
- " },\n"
- " \"children\": [{\n"
- " \"foo\": 2,\n"
- " \"bar\": \"foobar\",\n"
- " \"bstruct\": \"\",\n"
- " \"string_values\": [{\"val\": \"value_1\"}],"
- " \"baz\": true\n"
- " },\n"
- " {\n"
- " \"foo\": 3,\n"
- " \"bar\": \"barbaz\",\n"
- " \"baz\": false\n"
- " }]\n"
- "}\n";
-
- scoped_ptr<Value> value = base::JSONReader::Read(normal_data);
- NestedMessage message;
- base::JSONValueConverter<NestedMessage> converter;
- EXPECT_TRUE(converter.Convert(*value.get(), &message));
-
- EXPECT_EQ(1.0, message.foo);
- EXPECT_EQ(1, message.child.foo);
- EXPECT_EQ("bar", message.child.bar);
- EXPECT_TRUE(message.child.baz);
- EXPECT_TRUE(message.child.bstruct);
- ASSERT_EQ(2U, message.child.string_values.size());
- EXPECT_EQ("value_1", *message.child.string_values[0]);
- EXPECT_EQ("value_2", *message.child.string_values[1]);
-
- EXPECT_EQ(2, static_cast<int>(message.children.size()));
- const SimpleMessage* first_child = message.children[0];
- ASSERT_TRUE(first_child);
- EXPECT_EQ(2, first_child->foo);
- EXPECT_EQ("foobar", first_child->bar);
- EXPECT_TRUE(first_child->baz);
- EXPECT_TRUE(first_child->bstruct);
- ASSERT_EQ(1U, first_child->string_values.size());
- EXPECT_EQ("value_1", *first_child->string_values[0]);
-
- const SimpleMessage* second_child = message.children[1];
- ASSERT_TRUE(second_child);
- EXPECT_EQ(3, second_child->foo);
- EXPECT_EQ("barbaz", second_child->bar);
- EXPECT_FALSE(second_child->baz);
- EXPECT_FALSE(second_child->bstruct);
- EXPECT_EQ(0U, second_child->string_values.size());
-}
-
-TEST(JSONValueConverterTest, ParseFailures) {
- const char normal_data[] =
- "{\n"
- " \"foo\": 1,\n"
- " \"bar\": 2,\n" // "bar" is an integer here.
- " \"baz\": true,\n"
- " \"ints\": [1, 2]"
- "}\n";
-
- scoped_ptr<Value> value = base::JSONReader::Read(normal_data);
- SimpleMessage message;
- base::JSONValueConverter<SimpleMessage> converter;
- EXPECT_FALSE(converter.Convert(*value.get(), &message));
- // Do not check the values below. |message| may be modified during
- // Convert() even it fails.
-}
-
-TEST(JSONValueConverterTest, ParseWithMissingFields) {
- const char normal_data[] =
- "{\n"
- " \"foo\": 1,\n"
- " \"baz\": true,\n"
- " \"ints\": [1, 2]"
- "}\n";
-
- scoped_ptr<Value> value = base::JSONReader::Read(normal_data);
- SimpleMessage message;
- base::JSONValueConverter<SimpleMessage> converter;
- // Convert() still succeeds even if the input doesn't have "bar" field.
- EXPECT_TRUE(converter.Convert(*value.get(), &message));
-
- EXPECT_EQ(1, message.foo);
- EXPECT_TRUE(message.baz);
- EXPECT_EQ(2, static_cast<int>(message.ints.size()));
- EXPECT_EQ(1, *(message.ints[0]));
- EXPECT_EQ(2, *(message.ints[1]));
-}
-
-TEST(JSONValueConverterTest, EnumParserFails) {
- const char normal_data[] =
- "{\n"
- " \"foo\": 1,\n"
- " \"bar\": \"bar\",\n"
- " \"baz\": true,\n"
- " \"simple_enum\": \"baz\","
- " \"ints\": [1, 2]"
- "}\n";
-
- scoped_ptr<Value> value = base::JSONReader::Read(normal_data);
- SimpleMessage message;
- base::JSONValueConverter<SimpleMessage> converter;
- EXPECT_FALSE(converter.Convert(*value.get(), &message));
- // No check the values as mentioned above.
-}
-
-TEST(JSONValueConverterTest, RepeatedValueErrorInTheMiddle) {
- const char normal_data[] =
- "{\n"
- " \"foo\": 1,\n"
- " \"bar\": \"bar\",\n"
- " \"baz\": true,\n"
- " \"simple_enum\": \"baz\","
- " \"ints\": [1, false]"
- "}\n";
-
- scoped_ptr<Value> value = base::JSONReader::Read(normal_data);
- SimpleMessage message;
- base::JSONValueConverter<SimpleMessage> converter;
- EXPECT_FALSE(converter.Convert(*value.get(), &message));
- // No check the values as mentioned above.
-}
-
-} // namespace base
« no previous file with comments | « base/json/json_value_converter.cc ('k') | base/json/json_value_serializer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698