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

Unified Diff: base/values_unittest.cc

Issue 2683203004: Move Storage for ListValue and DictValue in Union (Closed)
Patch Set: Rebase Created 3 years, 10 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
Index: base/values_unittest.cc
diff --git a/base/values_unittest.cc b/base/values_unittest.cc
index e62b6e579b134f5bd92291b1b796618c689f239a..107dd64e69ba047acc599f5a4677a9615eab8494 100644
--- a/base/values_unittest.cc
+++ b/base/values_unittest.cc
@@ -399,61 +399,20 @@ TEST(ValuesTest, StringValue) {
static_cast<const StringValue**>(NULL)));
}
-// 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 {
- public:
- explicit DeletionTestValue(bool* deletion_flag) : Value(Type::NONE) {
- Init(deletion_flag); // Separate function so that we can use ASSERT_*
- }
-
- void Init(bool* deletion_flag) {
- ASSERT_TRUE(deletion_flag);
- deletion_flag_ = deletion_flag;
- *deletion_flag_ = false;
- }
-
- ~DeletionTestValue() override { *deletion_flag_ = true; }
-
- private:
- bool* deletion_flag_;
-};
-
TEST(ValuesTest, ListDeletion) {
- bool deletion_flag = true;
-
- {
- ListValue list;
- list.Append(MakeUnique<DeletionTestValue>(&deletion_flag));
- EXPECT_FALSE(deletion_flag);
- }
- EXPECT_TRUE(deletion_flag);
-
- {
- ListValue list;
- list.Append(MakeUnique<DeletionTestValue>(&deletion_flag));
- EXPECT_FALSE(deletion_flag);
- list.Clear();
- EXPECT_TRUE(deletion_flag);
- }
-
- {
- ListValue list;
- list.Append(MakeUnique<DeletionTestValue>(&deletion_flag));
- EXPECT_FALSE(deletion_flag);
- EXPECT_TRUE(list.Set(0, Value::CreateNullValue()));
- EXPECT_TRUE(deletion_flag);
- }
+ ListValue list;
+ list.Append(MakeUnique<Value>());
+ EXPECT_FALSE(list.empty());
+ list.Clear();
+ EXPECT_TRUE(list.empty());
}
TEST(ValuesTest, ListRemoval) {
- bool deletion_flag = true;
std::unique_ptr<Value> removed_item;
{
ListValue list;
- list.Append(MakeUnique<DeletionTestValue>(&deletion_flag));
- EXPECT_FALSE(deletion_flag);
+ list.Append(MakeUnique<Value>());
EXPECT_EQ(1U, list.GetSize());
EXPECT_FALSE(list.Remove(std::numeric_limits<size_t>::max(),
&removed_item));
@@ -462,88 +421,55 @@ TEST(ValuesTest, ListRemoval) {
ASSERT_TRUE(removed_item);
EXPECT_EQ(0U, list.GetSize());
}
- EXPECT_FALSE(deletion_flag);
removed_item.reset();
- EXPECT_TRUE(deletion_flag);
{
ListValue list;
- list.Append(MakeUnique<DeletionTestValue>(&deletion_flag));
- EXPECT_FALSE(deletion_flag);
+ list.Append(MakeUnique<Value>());
EXPECT_TRUE(list.Remove(0, NULL));
- EXPECT_TRUE(deletion_flag);
EXPECT_EQ(0U, list.GetSize());
}
{
ListValue list;
- std::unique_ptr<DeletionTestValue> value(
- new DeletionTestValue(&deletion_flag));
- DeletionTestValue* original_value = value.get();
+ auto value = MakeUnique<Value>();
+ Value* original_value = value.get();
list.Append(std::move(value));
- EXPECT_FALSE(deletion_flag);
size_t index = 0;
list.Remove(*original_value, &index);
EXPECT_EQ(0U, index);
- EXPECT_TRUE(deletion_flag);
EXPECT_EQ(0U, list.GetSize());
}
}
TEST(ValuesTest, DictionaryDeletion) {
std::string key = "test";
- bool deletion_flag = true;
-
- {
- DictionaryValue dict;
- dict.Set(key, MakeUnique<DeletionTestValue>(&deletion_flag));
- EXPECT_FALSE(deletion_flag);
- }
- EXPECT_TRUE(deletion_flag);
-
- {
- DictionaryValue dict;
- dict.Set(key, MakeUnique<DeletionTestValue>(&deletion_flag));
- EXPECT_FALSE(deletion_flag);
- dict.Clear();
- EXPECT_TRUE(deletion_flag);
- }
-
- {
- DictionaryValue dict;
- dict.Set(key, MakeUnique<DeletionTestValue>(&deletion_flag));
- EXPECT_FALSE(deletion_flag);
- dict.Set(key, Value::CreateNullValue());
- EXPECT_TRUE(deletion_flag);
- }
+ DictionaryValue dict;
+ dict.Set(key, MakeUnique<Value>());
+ EXPECT_FALSE(dict.empty());
+ dict.Clear();
+ EXPECT_TRUE(dict.empty());
}
TEST(ValuesTest, DictionaryRemoval) {
std::string key = "test";
- bool deletion_flag = true;
std::unique_ptr<Value> removed_item;
{
DictionaryValue dict;
- dict.Set(key, MakeUnique<DeletionTestValue>(&deletion_flag));
- EXPECT_FALSE(deletion_flag);
+ dict.Set(key, MakeUnique<Value>());
EXPECT_TRUE(dict.HasKey(key));
EXPECT_FALSE(dict.Remove("absent key", &removed_item));
EXPECT_TRUE(dict.Remove(key, &removed_item));
EXPECT_FALSE(dict.HasKey(key));
ASSERT_TRUE(removed_item);
}
- EXPECT_FALSE(deletion_flag);
- removed_item.reset();
- EXPECT_TRUE(deletion_flag);
{
DictionaryValue dict;
- dict.Set(key, MakeUnique<DeletionTestValue>(&deletion_flag));
- EXPECT_FALSE(deletion_flag);
+ dict.Set(key, MakeUnique<Value>());
EXPECT_TRUE(dict.HasKey(key));
EXPECT_TRUE(dict.Remove(key, NULL));
- EXPECT_TRUE(deletion_flag);
EXPECT_FALSE(dict.HasKey(key));
}
}

Powered by Google App Engine
This is Rietveld 408576698