| Index: base/values_unittest.cc
|
| diff --git a/base/values_unittest.cc b/base/values_unittest.cc
|
| index 3b78b5faf9df161361d4bdbdff67c79ec316784e..4b4016cc38cb2ca374c32907b954c56788ec88f6 100644
|
| --- a/base/values_unittest.cc
|
| +++ b/base/values_unittest.cc
|
| @@ -34,12 +34,6 @@ class ValuesTest: public testing::Test {
|
| }
|
| };
|
|
|
| -// TODO(viettrungluu): I changed the keys for DictionaryValue from std::wstring
|
| -// to std::string. I've temporarily kept the old methods taking std::wstring for
|
| -// compatibility. The ...Deprecated tests are the old tests which use these
|
| -// methods, and remain to test compatibility. They will be removed once the old
|
| -// methods are removed.
|
| -
|
| TEST_F(ValuesTest, Basic) {
|
| // Test basic dictionary getting/setting
|
| DictionaryValue settings;
|
| @@ -83,52 +77,6 @@ TEST_F(ValuesTest, Basic) {
|
| ASSERT_EQ(std::string("http://froogle.com"), bookmark_url);
|
| }
|
|
|
| -// TODO(viettrungluu): deprecate:
|
| -TEST_F(ValuesTest, BasicDeprecated) {
|
| - // Test basic dictionary getting/setting
|
| - DictionaryValue settings;
|
| - std::wstring homepage = L"http://google.com";
|
| - ASSERT_FALSE(
|
| - settings.GetString(L"global.homepage", &homepage));
|
| - ASSERT_EQ(std::wstring(L"http://google.com"), homepage);
|
| -
|
| - ASSERT_FALSE(settings.Get(L"global", NULL));
|
| - settings.Set(L"global", Value::CreateBooleanValue(true));
|
| - ASSERT_TRUE(settings.Get(L"global", NULL));
|
| - settings.SetString(L"global.homepage", L"http://scurvy.com");
|
| - ASSERT_TRUE(settings.Get(L"global", NULL));
|
| - homepage = L"http://google.com";
|
| - ASSERT_TRUE(settings.GetString(L"global.homepage", &homepage));
|
| - ASSERT_EQ(std::wstring(L"http://scurvy.com"), homepage);
|
| -
|
| - // Test storing a dictionary in a list.
|
| - ListValue* toolbar_bookmarks;
|
| - ASSERT_FALSE(
|
| - settings.GetList(L"global.toolbar.bookmarks", &toolbar_bookmarks));
|
| -
|
| - toolbar_bookmarks = new ListValue;
|
| - settings.Set(L"global.toolbar.bookmarks", toolbar_bookmarks);
|
| - ASSERT_TRUE(
|
| - settings.GetList(L"global.toolbar.bookmarks", &toolbar_bookmarks));
|
| -
|
| - DictionaryValue* new_bookmark = new DictionaryValue;
|
| - new_bookmark->SetString(L"name", L"Froogle");
|
| - new_bookmark->SetString(L"url", L"http://froogle.com");
|
| - toolbar_bookmarks->Append(new_bookmark);
|
| -
|
| - ListValue* bookmark_list;
|
| - ASSERT_TRUE(settings.GetList(L"global.toolbar.bookmarks", &bookmark_list));
|
| - DictionaryValue* bookmark;
|
| - ASSERT_EQ(1U, bookmark_list->GetSize());
|
| - ASSERT_TRUE(bookmark_list->GetDictionary(0, &bookmark));
|
| - std::wstring bookmark_name = L"Unnamed";
|
| - ASSERT_TRUE(bookmark->GetString(L"name", &bookmark_name));
|
| - ASSERT_EQ(std::wstring(L"Froogle"), bookmark_name);
|
| - std::wstring bookmark_url;
|
| - ASSERT_TRUE(bookmark->GetString(L"url", &bookmark_url));
|
| - ASSERT_EQ(std::wstring(L"http://froogle.com"), bookmark_url);
|
| -}
|
| -
|
| TEST_F(ValuesTest, List) {
|
| scoped_ptr<ListValue> mixed_list(new ListValue());
|
| mixed_list->Set(0, Value::CreateBooleanValue(true));
|
| @@ -221,36 +169,6 @@ TEST_F(ValuesTest, StringValue) {
|
| ASSERT_EQ(ASCIIToUTF16("utf16"), utf16);
|
| }
|
|
|
| -// TODO(viettrungluu): deprecate:
|
| -TEST_F(ValuesTest, StringValueDeprecated) {
|
| - // Test overloaded CreateStringValue.
|
| - scoped_ptr<Value> narrow_value(Value::CreateStringValue("narrow"));
|
| - ASSERT_TRUE(narrow_value.get());
|
| - ASSERT_TRUE(narrow_value->IsType(Value::TYPE_STRING));
|
| - scoped_ptr<Value> utf16_value(
|
| - Value::CreateStringValue(ASCIIToUTF16("utf16")));
|
| - ASSERT_TRUE(utf16_value.get());
|
| - ASSERT_TRUE(utf16_value->IsType(Value::TYPE_STRING));
|
| -
|
| - // Test overloaded GetString.
|
| - std::string narrow = "http://google.com";
|
| - std::wstring wide = L"http://google.com";
|
| - string16 utf16 = ASCIIToUTF16("http://google.com");
|
| - ASSERT_TRUE(narrow_value->GetAsString(&narrow));
|
| - ASSERT_TRUE(narrow_value->GetAsString(&wide));
|
| - ASSERT_TRUE(narrow_value->GetAsString(&utf16));
|
| - ASSERT_EQ(std::string("narrow"), narrow);
|
| - ASSERT_EQ(std::wstring(L"narrow"), wide);
|
| - ASSERT_EQ(ASCIIToUTF16("narrow"), utf16);
|
| -
|
| - ASSERT_TRUE(utf16_value->GetAsString(&narrow));
|
| - ASSERT_TRUE(utf16_value->GetAsString(&wide));
|
| - ASSERT_TRUE(utf16_value->GetAsString(&utf16));
|
| - ASSERT_EQ(std::string("utf16"), narrow);
|
| - ASSERT_EQ(std::wstring(L"utf16"), wide);
|
| - ASSERT_EQ(ASCIIToUTF16("utf16"), utf16);
|
| -}
|
| -
|
| // This is a Value object that allows us to tell if it's been
|
| // properly deleted by modifying the value of external flag on destruction.
|
| class DeletionTestValue : public Value {
|
| @@ -369,35 +287,6 @@ TEST_F(ValuesTest, DictionaryDeletion) {
|
| }
|
| }
|
|
|
| -// TODO(viettrungluu): deprecate:
|
| -TEST_F(ValuesTest, DictionaryDeletionDeprecated) {
|
| - std::wstring key = L"test";
|
| - bool deletion_flag = true;
|
| -
|
| - {
|
| - DictionaryValue dict;
|
| - dict.Set(key, new DeletionTestValue(&deletion_flag));
|
| - EXPECT_FALSE(deletion_flag);
|
| - }
|
| - EXPECT_TRUE(deletion_flag);
|
| -
|
| - {
|
| - DictionaryValue dict;
|
| - dict.Set(key, new DeletionTestValue(&deletion_flag));
|
| - EXPECT_FALSE(deletion_flag);
|
| - dict.Clear();
|
| - EXPECT_TRUE(deletion_flag);
|
| - }
|
| -
|
| - {
|
| - DictionaryValue dict;
|
| - dict.Set(key, new DeletionTestValue(&deletion_flag));
|
| - EXPECT_FALSE(deletion_flag);
|
| - dict.Set(key, Value::CreateNullValue());
|
| - EXPECT_TRUE(deletion_flag);
|
| - }
|
| -}
|
| -
|
| TEST_F(ValuesTest, DictionaryRemoval) {
|
| std::string key = "test";
|
| bool deletion_flag = true;
|
| @@ -429,38 +318,6 @@ TEST_F(ValuesTest, DictionaryRemoval) {
|
| }
|
| }
|
|
|
| -// TODO(viettrungluu): deprecate:
|
| -TEST_F(ValuesTest, DictionaryRemovalDeprecated) {
|
| - std::wstring key = L"test";
|
| - bool deletion_flag = true;
|
| - Value* removed_item = NULL;
|
| -
|
| - {
|
| - DictionaryValue dict;
|
| - dict.Set(key, new DeletionTestValue(&deletion_flag));
|
| - EXPECT_FALSE(deletion_flag);
|
| - EXPECT_TRUE(dict.HasKey(key));
|
| - EXPECT_FALSE(dict.Remove(L"absent key", &removed_item));
|
| - EXPECT_TRUE(dict.Remove(key, &removed_item));
|
| - EXPECT_FALSE(dict.HasKey(key));
|
| - ASSERT_TRUE(removed_item);
|
| - }
|
| - EXPECT_FALSE(deletion_flag);
|
| - delete removed_item;
|
| - removed_item = NULL;
|
| - EXPECT_TRUE(deletion_flag);
|
| -
|
| - {
|
| - DictionaryValue dict;
|
| - dict.Set(key, new DeletionTestValue(&deletion_flag));
|
| - EXPECT_FALSE(deletion_flag);
|
| - EXPECT_TRUE(dict.HasKey(key));
|
| - EXPECT_TRUE(dict.Remove(key, NULL));
|
| - EXPECT_TRUE(deletion_flag);
|
| - EXPECT_FALSE(dict.HasKey(key));
|
| - }
|
| -}
|
| -
|
| TEST_F(ValuesTest, DictionaryWithoutPathExpansion) {
|
| DictionaryValue dict;
|
| dict.Set("this.is.expanded", Value::CreateNullValue());
|
| @@ -608,137 +465,6 @@ TEST_F(ValuesTest, DeepCopy) {
|
| ASSERT_EQ(1, copy_list_element_1_value);
|
| }
|
|
|
| -// TODO(viettrungluu): deprecate:
|
| -TEST_F(ValuesTest, DeepCopyDeprecated) {
|
| - DictionaryValue original_dict;
|
| - Value* original_null = Value::CreateNullValue();
|
| - original_dict.Set(L"null", original_null);
|
| - Value* original_bool = Value::CreateBooleanValue(true);
|
| - original_dict.Set(L"bool", original_bool);
|
| - Value* original_int = Value::CreateIntegerValue(42);
|
| - original_dict.Set(L"int", original_int);
|
| - Value* original_real = Value::CreateRealValue(3.14);
|
| - original_dict.Set(L"real", original_real);
|
| - Value* original_string = Value::CreateStringValue("hello");
|
| - original_dict.Set(L"string", original_string);
|
| - Value* original_utf16 = Value::CreateStringValue(ASCIIToUTF16("hello16"));
|
| - original_dict.Set(L"utf16", original_utf16);
|
| -
|
| - char* original_buffer = new char[42];
|
| - memset(original_buffer, '!', 42);
|
| - BinaryValue* original_binary = Value::CreateBinaryValue(original_buffer, 42);
|
| - original_dict.Set(L"binary", original_binary);
|
| -
|
| - ListValue* original_list = new ListValue();
|
| - Value* original_list_element_0 = Value::CreateIntegerValue(0);
|
| - original_list->Append(original_list_element_0);
|
| - Value* original_list_element_1 = Value::CreateIntegerValue(1);
|
| - original_list->Append(original_list_element_1);
|
| - original_dict.Set(L"list", original_list);
|
| -
|
| - scoped_ptr<DictionaryValue> copy_dict(
|
| - static_cast<DictionaryValue*>(original_dict.DeepCopy()));
|
| - ASSERT_TRUE(copy_dict.get());
|
| - ASSERT_NE(copy_dict.get(), &original_dict);
|
| -
|
| - Value* copy_null = NULL;
|
| - ASSERT_TRUE(copy_dict->Get(L"null", ©_null));
|
| - ASSERT_TRUE(copy_null);
|
| - ASSERT_NE(copy_null, original_null);
|
| - ASSERT_TRUE(copy_null->IsType(Value::TYPE_NULL));
|
| -
|
| - Value* copy_bool = NULL;
|
| - ASSERT_TRUE(copy_dict->Get(L"bool", ©_bool));
|
| - ASSERT_TRUE(copy_bool);
|
| - ASSERT_NE(copy_bool, original_bool);
|
| - ASSERT_TRUE(copy_bool->IsType(Value::TYPE_BOOLEAN));
|
| - bool copy_bool_value = false;
|
| - ASSERT_TRUE(copy_bool->GetAsBoolean(©_bool_value));
|
| - ASSERT_TRUE(copy_bool_value);
|
| -
|
| - Value* copy_int = NULL;
|
| - ASSERT_TRUE(copy_dict->Get(L"int", ©_int));
|
| - ASSERT_TRUE(copy_int);
|
| - ASSERT_NE(copy_int, original_int);
|
| - ASSERT_TRUE(copy_int->IsType(Value::TYPE_INTEGER));
|
| - int copy_int_value = 0;
|
| - ASSERT_TRUE(copy_int->GetAsInteger(©_int_value));
|
| - ASSERT_EQ(42, copy_int_value);
|
| -
|
| - Value* copy_real = NULL;
|
| - ASSERT_TRUE(copy_dict->Get(L"real", ©_real));
|
| - ASSERT_TRUE(copy_real);
|
| - ASSERT_NE(copy_real, original_real);
|
| - ASSERT_TRUE(copy_real->IsType(Value::TYPE_REAL));
|
| - double copy_real_value = 0;
|
| - ASSERT_TRUE(copy_real->GetAsReal(©_real_value));
|
| - ASSERT_EQ(3.14, copy_real_value);
|
| -
|
| - Value* copy_string = NULL;
|
| - ASSERT_TRUE(copy_dict->Get(L"string", ©_string));
|
| - ASSERT_TRUE(copy_string);
|
| - ASSERT_NE(copy_string, original_string);
|
| - ASSERT_TRUE(copy_string->IsType(Value::TYPE_STRING));
|
| - std::string copy_string_value;
|
| - std::wstring copy_wstring_value;
|
| - string16 copy_utf16_value;
|
| - ASSERT_TRUE(copy_string->GetAsString(©_string_value));
|
| - ASSERT_TRUE(copy_string->GetAsString(©_wstring_value));
|
| - ASSERT_TRUE(copy_string->GetAsString(©_utf16_value));
|
| - ASSERT_EQ(std::string("hello"), copy_string_value);
|
| - ASSERT_EQ(std::wstring(L"hello"), copy_wstring_value);
|
| - ASSERT_EQ(ASCIIToUTF16("hello"), copy_utf16_value);
|
| -
|
| - Value* copy_utf16 = NULL;
|
| - ASSERT_TRUE(copy_dict->Get(L"utf16", ©_utf16));
|
| - ASSERT_TRUE(copy_utf16);
|
| - ASSERT_NE(copy_utf16, original_utf16);
|
| - ASSERT_TRUE(copy_utf16->IsType(Value::TYPE_STRING));
|
| - ASSERT_TRUE(copy_utf16->GetAsString(©_string_value));
|
| - ASSERT_TRUE(copy_utf16->GetAsString(©_wstring_value));
|
| - ASSERT_TRUE(copy_utf16->GetAsString(©_utf16_value));
|
| - ASSERT_EQ(std::string("hello16"), copy_string_value);
|
| - ASSERT_EQ(std::wstring(L"hello16"), copy_wstring_value);
|
| - ASSERT_EQ(ASCIIToUTF16("hello16"), copy_utf16_value);
|
| -
|
| - Value* copy_binary = NULL;
|
| - ASSERT_TRUE(copy_dict->Get(L"binary", ©_binary));
|
| - ASSERT_TRUE(copy_binary);
|
| - ASSERT_NE(copy_binary, original_binary);
|
| - ASSERT_TRUE(copy_binary->IsType(Value::TYPE_BINARY));
|
| - ASSERT_NE(original_binary->GetBuffer(),
|
| - static_cast<BinaryValue*>(copy_binary)->GetBuffer());
|
| - ASSERT_EQ(original_binary->GetSize(),
|
| - static_cast<BinaryValue*>(copy_binary)->GetSize());
|
| - ASSERT_EQ(0, memcmp(original_binary->GetBuffer(),
|
| - static_cast<BinaryValue*>(copy_binary)->GetBuffer(),
|
| - original_binary->GetSize()));
|
| -
|
| - Value* copy_value = NULL;
|
| - ASSERT_TRUE(copy_dict->Get(L"list", ©_value));
|
| - ASSERT_TRUE(copy_value);
|
| - ASSERT_NE(copy_value, original_list);
|
| - ASSERT_TRUE(copy_value->IsType(Value::TYPE_LIST));
|
| - ListValue* copy_list = static_cast<ListValue*>(copy_value);
|
| - ASSERT_EQ(2U, copy_list->GetSize());
|
| -
|
| - Value* copy_list_element_0;
|
| - ASSERT_TRUE(copy_list->Get(0, ©_list_element_0));
|
| - ASSERT_TRUE(copy_list_element_0);
|
| - ASSERT_NE(copy_list_element_0, original_list_element_0);
|
| - int copy_list_element_0_value;
|
| - ASSERT_TRUE(copy_list_element_0->GetAsInteger(©_list_element_0_value));
|
| - ASSERT_EQ(0, copy_list_element_0_value);
|
| -
|
| - Value* copy_list_element_1;
|
| - ASSERT_TRUE(copy_list->Get(1, ©_list_element_1));
|
| - ASSERT_TRUE(copy_list_element_1);
|
| - ASSERT_NE(copy_list_element_1, original_list_element_1);
|
| - int copy_list_element_1_value;
|
| - ASSERT_TRUE(copy_list_element_1->GetAsInteger(©_list_element_1_value));
|
| - ASSERT_EQ(1, copy_list_element_1_value);
|
| -}
|
| -
|
| TEST_F(ValuesTest, Equals) {
|
| Value* null1 = Value::CreateNullValue();
|
| Value* null2 = Value::CreateNullValue();
|
| @@ -776,44 +502,6 @@ TEST_F(ValuesTest, Equals) {
|
| delete copy;
|
| }
|
|
|
| -// TODO(viettrungluu): deprecate:
|
| -TEST_F(ValuesTest, EqualsDeprecated) {
|
| - Value* null1 = Value::CreateNullValue();
|
| - Value* null2 = Value::CreateNullValue();
|
| - EXPECT_NE(null1, null2);
|
| - EXPECT_TRUE(null1->Equals(null2));
|
| -
|
| - Value* boolean = Value::CreateBooleanValue(false);
|
| - EXPECT_FALSE(null1->Equals(boolean));
|
| - delete null1;
|
| - delete null2;
|
| - delete boolean;
|
| -
|
| - DictionaryValue dv;
|
| - dv.SetBoolean(L"a", false);
|
| - dv.SetInteger(L"b", 2);
|
| - dv.SetReal(L"c", 2.5);
|
| - dv.SetString(L"d1", "string");
|
| - dv.SetString(L"d2", L"string");
|
| - dv.Set(L"e", Value::CreateNullValue());
|
| -
|
| - DictionaryValue* copy = static_cast<DictionaryValue*>(dv.DeepCopy());
|
| - EXPECT_TRUE(dv.Equals(copy));
|
| -
|
| - ListValue* list = new ListValue;
|
| - list->Append(Value::CreateNullValue());
|
| - list->Append(new DictionaryValue);
|
| - dv.Set(L"f", list);
|
| -
|
| - EXPECT_FALSE(dv.Equals(copy));
|
| - copy->Set(L"f", list->DeepCopy());
|
| - EXPECT_TRUE(dv.Equals(copy));
|
| -
|
| - list->Append(Value::CreateBooleanValue(true));
|
| - EXPECT_FALSE(dv.Equals(copy));
|
| - delete copy;
|
| -}
|
| -
|
| TEST_F(ValuesTest, RemoveEmptyChildren) {
|
| scoped_ptr<DictionaryValue> root(new DictionaryValue);
|
| // Remove empty lists and dictionaries.
|
| @@ -889,82 +577,6 @@ TEST_F(ValuesTest, RemoveEmptyChildren) {
|
| }
|
| }
|
|
|
| -// TODO(viettrungluu): deprecate:
|
| -TEST_F(ValuesTest, RemoveEmptyChildrenDeprecated) {
|
| - scoped_ptr<DictionaryValue> root(new DictionaryValue);
|
| - // Remove empty lists and dictionaries.
|
| - root->Set(L"empty_dict", new DictionaryValue);
|
| - root->Set(L"empty_list", new ListValue);
|
| - root->SetWithoutPathExpansion("a.b.c.d.e", new DictionaryValue);
|
| - root.reset(root->DeepCopyWithoutEmptyChildren());
|
| - EXPECT_TRUE(root->empty());
|
| -
|
| - // Make sure we don't prune too much.
|
| - root->SetBoolean(L"bool", true);
|
| - root->Set(L"empty_dict", new DictionaryValue);
|
| - root->SetString(L"empty_string", "");
|
| - root.reset(root->DeepCopyWithoutEmptyChildren());
|
| - EXPECT_EQ(2U, root->size());
|
| -
|
| - // Should do nothing.
|
| - root.reset(root->DeepCopyWithoutEmptyChildren());
|
| - EXPECT_EQ(2U, root->size());
|
| -
|
| - // Nested test cases. These should all reduce back to the bool and string
|
| - // set above.
|
| - {
|
| - root->Set(L"a.b.c.d.e", new DictionaryValue);
|
| - root.reset(root->DeepCopyWithoutEmptyChildren());
|
| - EXPECT_EQ(2U, root->size());
|
| - }
|
| - {
|
| - DictionaryValue* inner = new DictionaryValue;
|
| - root->Set(L"dict_with_emtpy_children", inner);
|
| - inner->Set(L"empty_dict", new DictionaryValue);
|
| - inner->Set(L"empty_list", new ListValue);
|
| - root.reset(root->DeepCopyWithoutEmptyChildren());
|
| - EXPECT_EQ(2U, root->size());
|
| - }
|
| - {
|
| - ListValue* inner = new ListValue;
|
| - root->Set(L"list_with_empty_children", inner);
|
| - inner->Append(new DictionaryValue);
|
| - inner->Append(new ListValue);
|
| - root.reset(root->DeepCopyWithoutEmptyChildren());
|
| - EXPECT_EQ(2U, root->size());
|
| - }
|
| -
|
| - // Nested with siblings.
|
| - {
|
| - ListValue* inner = new ListValue;
|
| - root->Set(L"list_with_empty_children", inner);
|
| - inner->Append(new DictionaryValue);
|
| - inner->Append(new ListValue);
|
| - DictionaryValue* inner2 = new DictionaryValue;
|
| - root->Set(L"dict_with_empty_children", inner2);
|
| - inner2->Set(L"empty_dict", new DictionaryValue);
|
| - inner2->Set(L"empty_list", new ListValue);
|
| - root.reset(root->DeepCopyWithoutEmptyChildren());
|
| - EXPECT_EQ(2U, root->size());
|
| - }
|
| -
|
| - // Make sure nested values don't get pruned.
|
| - {
|
| - ListValue* inner = new ListValue;
|
| - root->Set(L"list_with_empty_children", inner);
|
| - ListValue* inner2 = new ListValue;
|
| - inner->Append(new DictionaryValue);
|
| - inner->Append(inner2);
|
| - inner2->Append(Value::CreateStringValue("hello"));
|
| - root.reset(root->DeepCopyWithoutEmptyChildren());
|
| - EXPECT_EQ(3U, root->size());
|
| - EXPECT_TRUE(root->GetList(L"list_with_empty_children", &inner));
|
| - EXPECT_EQ(1U, inner->GetSize()); // Dictionary was pruned.
|
| - EXPECT_TRUE(inner->GetList(0, &inner2));
|
| - EXPECT_EQ(1U, inner2->GetSize());
|
| - }
|
| -}
|
| -
|
| TEST_F(ValuesTest, MergeDictionary) {
|
| scoped_ptr<DictionaryValue> base(new DictionaryValue);
|
| base->SetString("base_key", "base_key_value_base");
|
| @@ -1010,52 +622,6 @@ TEST_F(ValuesTest, MergeDictionary) {
|
| EXPECT_EQ("sub_merge_key_value_merge", sub_merge_key_value); // Merged in.
|
| }
|
|
|
| -// TODO(viettrungluu): deprecate:
|
| -TEST_F(ValuesTest, MergeDictionaryDeprecated) {
|
| - scoped_ptr<DictionaryValue> base(new DictionaryValue);
|
| - base->SetString(L"base_key", "base_key_value_base");
|
| - base->SetString(L"collide_key", "collide_key_value_base");
|
| - DictionaryValue* base_sub_dict = new DictionaryValue;
|
| - base_sub_dict->SetString(L"sub_base_key", "sub_base_key_value_base");
|
| - base_sub_dict->SetString(L"sub_collide_key", "sub_collide_key_value_base");
|
| - base->Set(L"sub_dict_key", base_sub_dict);
|
| -
|
| - scoped_ptr<DictionaryValue> merge(new DictionaryValue);
|
| - merge->SetString(L"merge_key", "merge_key_value_merge");
|
| - merge->SetString(L"collide_key", "collide_key_value_merge");
|
| - DictionaryValue* merge_sub_dict = new DictionaryValue;
|
| - merge_sub_dict->SetString(L"sub_merge_key", "sub_merge_key_value_merge");
|
| - merge_sub_dict->SetString(L"sub_collide_key", "sub_collide_key_value_merge");
|
| - merge->Set(L"sub_dict_key", merge_sub_dict);
|
| -
|
| - base->MergeDictionary(merge.get());
|
| -
|
| - EXPECT_EQ(4U, base->size());
|
| - std::string base_key_value;
|
| - EXPECT_TRUE(base->GetString(L"base_key", &base_key_value));
|
| - EXPECT_EQ("base_key_value_base", base_key_value); // Base value preserved.
|
| - std::string collide_key_value;
|
| - EXPECT_TRUE(base->GetString(L"collide_key", &collide_key_value));
|
| - EXPECT_EQ("collide_key_value_merge", collide_key_value); // Replaced.
|
| - std::string merge_key_value;
|
| - EXPECT_TRUE(base->GetString(L"merge_key", &merge_key_value));
|
| - EXPECT_EQ("merge_key_value_merge", merge_key_value); // Merged in.
|
| -
|
| - DictionaryValue* res_sub_dict;
|
| - EXPECT_TRUE(base->GetDictionary(L"sub_dict_key", &res_sub_dict));
|
| - EXPECT_EQ(3U, res_sub_dict->size());
|
| - std::string sub_base_key_value;
|
| - EXPECT_TRUE(res_sub_dict->GetString(L"sub_base_key", &sub_base_key_value));
|
| - EXPECT_EQ("sub_base_key_value_base", sub_base_key_value); // Preserved.
|
| - std::string sub_collide_key_value;
|
| - EXPECT_TRUE(res_sub_dict->GetString(L"sub_collide_key",
|
| - &sub_collide_key_value));
|
| - EXPECT_EQ("sub_collide_key_value_merge", sub_collide_key_value); // Replaced.
|
| - std::string sub_merge_key_value;
|
| - EXPECT_TRUE(res_sub_dict->GetString(L"sub_merge_key", &sub_merge_key_value));
|
| - EXPECT_EQ("sub_merge_key_value_merge", sub_merge_key_value); // Merged in.
|
| -}
|
| -
|
| TEST_F(ValuesTest, GetDifferingPaths) {
|
| scoped_ptr<DictionaryValue> dict1(new DictionaryValue());
|
| scoped_ptr<DictionaryValue> dict2(new DictionaryValue());
|
|
|