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

Unified Diff: content/browser/mojo/merge_dictionary_unittest.cc

Issue 2259903002: Enforce capability spec renderer <--> browser (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 3 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 | « content/browser/mojo/merge_dictionary.cc ('k') | content/browser/mojo/mojo_shell_context.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/mojo/merge_dictionary_unittest.cc
diff --git a/content/browser/mojo/merge_dictionary_unittest.cc b/content/browser/mojo/merge_dictionary_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..16e7af6ef1b4a1a4ee98e4e50405d5c3453a2fc8
--- /dev/null
+++ b/content/browser/mojo/merge_dictionary_unittest.cc
@@ -0,0 +1,73 @@
+// Copyright 2016 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/memory/ptr_util.h"
+#include "content/browser/mojo/merge_dictionary.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace content {
+
+using MergeDictionaryTest = testing::Test;
+
+TEST(MergeDictionaryTest, Merge) {
+ // |source| & |target| have three properties, "string", "list" and
+ // "dictionary", which are then merged.
+ base::DictionaryValue target;
+ target.SetString("string", "Hello, ");
+ std::unique_ptr<base::DictionaryValue> dict_value_original(
+ base::MakeUnique<base::DictionaryValue>());
+ dict_value_original->SetString("key1", "original");
+ dict_value_original->SetString("key3", "original");
+ target.Set("dictionary", std::move(dict_value_original));
+ std::unique_ptr<base::ListValue> list(base::MakeUnique<base::ListValue>());
+ list->AppendString("A");
+ list->AppendString("B");
+ target.Set("list", std::move(list));
+
+ base::DictionaryValue source;
+ source.SetString("string", "World!");
+ std::unique_ptr<base::DictionaryValue> dict_value_replacement(
+ base::MakeUnique<base::DictionaryValue>());
+ dict_value_replacement->SetString("key1", "new");
+ dict_value_replacement->SetString("key2", "new");
+ source.Set("dictionary", std::move(dict_value_replacement));
+ list = base::MakeUnique<base::ListValue>();
+ list->AppendString("C");
+ source.Set("list", std::move(list));
+
+ MergeDictionary(&target, &source);
+
+ // Simple string value should have been clobbered.
+ std::string out_string;
+ EXPECT_TRUE(target.GetString("string", &out_string));
+ EXPECT_EQ(out_string, "World!");
+
+ // Dictionary should have been merged, with key1 being clobbered, key2 added
+ // and key3 preserved.
+ base::DictionaryValue* out_dictionary = nullptr;
+ EXPECT_TRUE(target.GetDictionary("dictionary", &out_dictionary));
+ EXPECT_EQ(3u, out_dictionary->size());
+ std::string value1, value2, value3;
+ EXPECT_TRUE(out_dictionary->GetString("key1", &value1));
+ EXPECT_TRUE(out_dictionary->GetString("key2", &value2));
+ EXPECT_TRUE(out_dictionary->GetString("key3", &value3));
+ EXPECT_EQ(value1, "new");
+ EXPECT_EQ(value2, "new");
+ EXPECT_EQ(value3, "original");
+
+ // List should have been merged, with the items from source appended to the
+ // items from target.
+ base::ListValue* out_list = nullptr;
+ EXPECT_TRUE(target.GetList("list", &out_list));
+ EXPECT_EQ(3u, out_list->GetSize());
+ std::string a, b, c;
+ EXPECT_TRUE(out_list->GetString(0, &a));
+ EXPECT_TRUE(out_list->GetString(1, &b));
+ EXPECT_TRUE(out_list->GetString(2, &c));
+ EXPECT_EQ("A", a);
+ EXPECT_EQ("B", b);
+ EXPECT_EQ("C", c);
+}
+
+} // namespace content
« no previous file with comments | « content/browser/mojo/merge_dictionary.cc ('k') | content/browser/mojo/mojo_shell_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698