diff options
author | mnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-18 16:23:40 +0000 |
---|---|---|
committer | mnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-18 16:23:40 +0000 |
commit | dc1f2440d6c1773491b472e7595822b207052ac9 (patch) | |
tree | 8a159f623f9bd66c2a8b59f21e54d1ad183b2666 /base/values_unittest.cc | |
parent | 70edb8606702fd26565cc46fd3075bfe75f68d97 (diff) | |
download | chromium_src-dc1f2440d6c1773491b472e7595822b207052ac9.zip chromium_src-dc1f2440d6c1773491b472e7595822b207052ac9.tar.gz chromium_src-dc1f2440d6c1773491b472e7595822b207052ac9.tar.bz2 |
Fix DictionaryValue::Equals() to also detect differences in key names.
BUG=52419
TEST=unit tests in values_unittest.cc
Review URL: http://codereview.chromium.org/3163020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56536 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/values_unittest.cc')
-rw-r--r-- | base/values_unittest.cc | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/base/values_unittest.cc b/base/values_unittest.cc index a36c588..c1fb018 100644 --- a/base/values_unittest.cc +++ b/base/values_unittest.cc @@ -484,21 +484,28 @@ TEST_F(ValuesTest, Equals) { dv.SetString("d2", ASCIIToUTF16("http://google.com")); dv.Set("e", Value::CreateNullValue()); - DictionaryValue* copy = static_cast<DictionaryValue*>(dv.DeepCopy()); - EXPECT_TRUE(dv.Equals(copy)); + scoped_ptr<DictionaryValue> copy; + copy.reset(static_cast<DictionaryValue*>(dv.DeepCopy())); + EXPECT_TRUE(dv.Equals(copy.get())); ListValue* list = new ListValue; list->Append(Value::CreateNullValue()); list->Append(new DictionaryValue); dv.Set("f", list); - EXPECT_FALSE(dv.Equals(copy)); + EXPECT_FALSE(dv.Equals(copy.get())); copy->Set("f", list->DeepCopy()); - EXPECT_TRUE(dv.Equals(copy)); + EXPECT_TRUE(dv.Equals(copy.get())); list->Append(Value::CreateBooleanValue(true)); - EXPECT_FALSE(dv.Equals(copy)); - delete copy; + EXPECT_FALSE(dv.Equals(copy.get())); + + // Check if Equals detects differences in only the keys. + copy.reset(static_cast<DictionaryValue*>(dv.DeepCopy())); + EXPECT_TRUE(dv.Equals(copy.get())); + copy->Remove("a", NULL); + copy->SetBoolean("aa", false); + EXPECT_FALSE(dv.Equals(copy.get())); } TEST_F(ValuesTest, RemoveEmptyChildren) { |