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

Unified Diff: base/values_unittest.cc

Issue 2771923005: Implement comparison operators for base::Value (Closed)
Patch Set: Declare Operators out of line and update tests Created 3 years, 9 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/values.cc ('k') | chrome/browser/ui/webui/options/preferences_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/values_unittest.cc
diff --git a/base/values_unittest.cc b/base/values_unittest.cc
index 3bcdc16e37e61919d59ea81a8088572f24e94c43..9a7eb2f2707012cad544f268209fd64be4e3d229 100644
--- a/base/values_unittest.cc
+++ b/base/values_unittest.cc
@@ -789,10 +789,10 @@ TEST(ValuesTest, Equals) {
std::unique_ptr<Value> null1(Value::CreateNullValue());
std::unique_ptr<Value> null2(Value::CreateNullValue());
EXPECT_NE(null1.get(), null2.get());
- EXPECT_TRUE(null1->Equals(null2.get()));
+ EXPECT_EQ(*null1, *null2);
Value boolean(false);
- EXPECT_FALSE(null1->Equals(&boolean));
+ EXPECT_NE(*null1, boolean);
DictionaryValue dv;
dv.SetBoolean("a", false);
@@ -803,7 +803,7 @@ TEST(ValuesTest, Equals) {
dv.Set("e", Value::CreateNullValue());
std::unique_ptr<DictionaryValue> copy = dv.CreateDeepCopy();
- EXPECT_TRUE(dv.Equals(copy.get()));
+ EXPECT_EQ(dv, *copy);
std::unique_ptr<ListValue> list(new ListValue);
ListValue* original_list = list.get();
@@ -812,19 +812,19 @@ TEST(ValuesTest, Equals) {
std::unique_ptr<Value> list_copy(list->CreateDeepCopy());
dv.Set("f", std::move(list));
- EXPECT_FALSE(dv.Equals(copy.get()));
+ EXPECT_NE(dv, *copy);
copy->Set("f", std::move(list_copy));
- EXPECT_TRUE(dv.Equals(copy.get()));
+ EXPECT_EQ(dv, *copy);
original_list->Append(MakeUnique<Value>(true));
- EXPECT_FALSE(dv.Equals(copy.get()));
+ EXPECT_NE(dv, *copy);
// Check if Equals detects differences in only the keys.
copy = dv.CreateDeepCopy();
- EXPECT_TRUE(dv.Equals(copy.get()));
+ EXPECT_EQ(dv, *copy);
copy->Remove("a", NULL);
copy->SetBoolean("aa", false);
- EXPECT_FALSE(dv.Equals(copy.get()));
+ EXPECT_NE(dv, *copy);
}
TEST(ValuesTest, StaticEquals) {
@@ -850,6 +850,126 @@ TEST(ValuesTest, StaticEquals) {
EXPECT_FALSE(Value::Equals(NULL, null1.get()));
}
+TEST(ValuesTest, Comparisons) {
+ // Test None Values.
+ Value null1;
+ Value null2;
+ EXPECT_EQ(null1, null2);
+ EXPECT_FALSE(null1 != null2);
+ EXPECT_FALSE(null1 < null2);
+ EXPECT_FALSE(null1 > null2);
+ EXPECT_LE(null1, null2);
+ EXPECT_GE(null1, null2);
+
+ // Test Bool Values.
+ Value bool1(false);
+ Value bool2(true);
+ EXPECT_FALSE(bool1 == bool2);
+ EXPECT_NE(bool1, bool2);
+ EXPECT_LT(bool1, bool2);
+ EXPECT_FALSE(bool1 > bool2);
+ EXPECT_LE(bool1, bool2);
+ EXPECT_FALSE(bool1 >= bool2);
+
+ // Test Int Values.
+ Value int1(1);
+ Value int2(2);
+ EXPECT_FALSE(int1 == int2);
+ EXPECT_NE(int1, int2);
+ EXPECT_LT(int1, int2);
+ EXPECT_FALSE(int1 > int2);
+ EXPECT_LE(int1, int2);
+ EXPECT_FALSE(int1 >= int2);
+
+ // Test Double Values.
+ Value double1(1.0);
+ Value double2(2.0);
+ EXPECT_FALSE(double1 == double2);
+ EXPECT_NE(double1, double2);
+ EXPECT_LT(double1, double2);
+ EXPECT_FALSE(double1 > double2);
+ EXPECT_LE(double1, double2);
+ EXPECT_FALSE(double1 >= double2);
+
+ // Test String Values.
+ Value string1("1");
+ Value string2("2");
+ EXPECT_FALSE(string1 == string2);
+ EXPECT_NE(string1, string2);
+ EXPECT_LT(string1, string2);
+ EXPECT_FALSE(string1 > string2);
+ EXPECT_LE(string1, string2);
+ EXPECT_FALSE(string1 >= string2);
+
+ // Test Binary Values.
+ Value binary1(std::vector<char>{0x01});
+ Value binary2(std::vector<char>{0x02});
+ EXPECT_FALSE(binary1 == binary2);
+ EXPECT_NE(binary1, binary2);
+ EXPECT_LT(binary1, binary2);
+ EXPECT_FALSE(binary1 > binary2);
+ EXPECT_LE(binary1, binary2);
+ EXPECT_FALSE(binary1 >= binary2);
+
+ // Test Empty List Values.
+ ListValue null_list1;
+ ListValue null_list2;
+ EXPECT_EQ(null_list1, null_list2);
+ EXPECT_FALSE(null_list1 != null_list2);
+ EXPECT_FALSE(null_list1 < null_list2);
+ EXPECT_FALSE(null_list1 > null_list2);
+ EXPECT_LE(null_list1, null_list2);
+ EXPECT_GE(null_list1, null_list2);
+
+ // Test Non Empty List Values.
+ ListValue int_list1;
+ ListValue int_list2;
+ int_list1.AppendInteger(1);
+ int_list2.AppendInteger(2);
+ EXPECT_FALSE(int_list1 == int_list2);
+ EXPECT_NE(int_list1, int_list2);
+ EXPECT_LT(int_list1, int_list2);
+ EXPECT_FALSE(int_list1 > int_list2);
+ EXPECT_LE(int_list1, int_list2);
+ EXPECT_FALSE(int_list1 >= int_list2);
+
+ // Test Empty Dict Values.
+ DictionaryValue null_dict1;
+ DictionaryValue null_dict2;
+ EXPECT_EQ(null_dict1, null_dict2);
+ EXPECT_FALSE(null_dict1 != null_dict2);
+ EXPECT_FALSE(null_dict1 < null_dict2);
+ EXPECT_FALSE(null_dict1 > null_dict2);
+ EXPECT_LE(null_dict1, null_dict2);
+ EXPECT_GE(null_dict1, null_dict2);
+
+ // Test Non Empty Dict Values.
+ DictionaryValue int_dict1;
+ DictionaryValue int_dict2;
+ int_dict1.SetInteger("key", 1);
+ int_dict2.SetInteger("key", 2);
+ EXPECT_FALSE(int_dict1 == int_dict2);
+ EXPECT_NE(int_dict1, int_dict2);
+ EXPECT_LT(int_dict1, int_dict2);
+ EXPECT_FALSE(int_dict1 > int_dict2);
+ EXPECT_LE(int_dict1, int_dict2);
+ EXPECT_FALSE(int_dict1 >= int_dict2);
+
+ // Test Values of different types.
+ std::vector<Value> values = {null1, bool1, int1, double1,
+ string1, binary1, int_dict1, int_list1};
+ for (size_t i = 0; i < values.size(); ++i) {
+ for (size_t j = i + 1; j < values.size(); ++j) {
+ EXPECT_FALSE(values[i] == values[j]);
+ EXPECT_NE(values[i], values[j]);
+ EXPECT_LT(values[i], values[j]);
+ EXPECT_FALSE(values[i] > values[j]);
+ EXPECT_LE(values[i], values[j]);
+ EXPECT_FALSE(values[i] >= values[j]);
+ }
+ }
+}
+
TEST(ValuesTest, DeepCopyCovariantReturnTypes) {
DictionaryValue original_dict;
std::unique_ptr<Value> scoped_null(Value::CreateNullValue());
@@ -895,15 +1015,15 @@ TEST(ValuesTest, DeepCopyCovariantReturnTypes) {
std::unique_ptr<Value> copy_binary = original_binary->CreateDeepCopy();
std::unique_ptr<Value> copy_list = original_list->CreateDeepCopy();
- EXPECT_TRUE(original_dict.Equals(copy_dict.get()));
- EXPECT_TRUE(original_null->Equals(copy_null.get()));
- EXPECT_TRUE(original_bool->Equals(copy_bool.get()));
- EXPECT_TRUE(original_int->Equals(copy_int.get()));
- EXPECT_TRUE(original_double->Equals(copy_double.get()));
- EXPECT_TRUE(original_string->Equals(copy_string.get()));
- EXPECT_TRUE(original_string16->Equals(copy_string16.get()));
- EXPECT_TRUE(original_binary->Equals(copy_binary.get()));
- EXPECT_TRUE(original_list->Equals(copy_list.get()));
+ EXPECT_EQ(original_dict, *copy_dict);
+ EXPECT_EQ(*original_null, *copy_null);
+ EXPECT_EQ(*original_bool, *copy_bool);
+ EXPECT_EQ(*original_int, *copy_int);
+ EXPECT_EQ(*original_double, *copy_double);
+ EXPECT_EQ(*original_string, *copy_string);
+ EXPECT_EQ(*original_string16, *copy_string16);
+ EXPECT_EQ(*original_binary, *copy_binary);
+ EXPECT_EQ(*original_list, *copy_list);
}
TEST(ValuesTest, RemoveEmptyChildren) {
@@ -1073,7 +1193,7 @@ TEST(ValuesTest, DictionaryIterator) {
for (DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) {
EXPECT_FALSE(seen1);
EXPECT_EQ("key1", it.key());
- EXPECT_TRUE(value1.Equals(&it.value()));
+ EXPECT_EQ(value1, it.value());
seen1 = true;
}
EXPECT_TRUE(seen1);
@@ -1084,11 +1204,11 @@ TEST(ValuesTest, DictionaryIterator) {
for (DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) {
if (it.key() == "key1") {
EXPECT_FALSE(seen1);
- EXPECT_TRUE(value1.Equals(&it.value()));
+ EXPECT_EQ(value1, it.value());
seen1 = true;
} else if (it.key() == "key2") {
EXPECT_FALSE(seen2);
- EXPECT_TRUE(value2.Equals(&it.value()));
+ EXPECT_EQ(value2, it.value());
seen2 = true;
} else {
ADD_FAILURE();
« no previous file with comments | « base/values.cc ('k') | chrome/browser/ui/webui/options/preferences_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698