Index: base/values_unittest.cc |
diff --git a/base/values_unittest.cc b/base/values_unittest.cc |
index 873b7b7a970cb3ccb8e3571f71c2f2396a5eea6e..c3f2a5269878cefc65d2b17d570e70068171cd26 100644 |
--- a/base/values_unittest.cc |
+++ b/base/values_unittest.cc |
@@ -17,6 +17,141 @@ |
namespace base { |
+// Group of tests for the value constructors. |
+TEST(ValuesTest, ConstructBool) { |
+ FundamentalValue true_value(true); |
+ EXPECT_EQ(Value::Type::BOOLEAN, true_value.type()); |
+ EXPECT_TRUE(true_value.GetBool()); |
+ |
+ FundamentalValue false_value(false); |
+ EXPECT_EQ(Value::Type::BOOLEAN, false_value.type()); |
+ EXPECT_FALSE(false_value.GetBool()); |
+} |
+ |
+TEST(ValuesTest, ConstructInt) { |
+ FundamentalValue value(-37); |
+ EXPECT_EQ(Value::Type::INTEGER, value.type()); |
+ EXPECT_EQ(-37, value.GetInt()); |
+} |
+ |
+TEST(ValuesTest, ConstructDouble) { |
+ FundamentalValue value(-4.655); |
+ EXPECT_EQ(Value::Type::DOUBLE, value.type()); |
+ EXPECT_EQ(-4.655, value.GetDouble()); |
+} |
+ |
+// Group of tests for the copy constructors and copy-assigmnent. For equality |
+// checks comparisons of the interesting fields are done instead of relying on |
+// Equals being correct. |
+TEST(ValuesTest, CopyBool) { |
+ FundamentalValue true_value(true); |
+ FundamentalValue copied_true_value(true_value); |
+ EXPECT_EQ(true_value.type(), copied_true_value.type()); |
+ EXPECT_EQ(true_value.GetBool(), copied_true_value.GetBool()); |
+ |
+ FundamentalValue false_value(false); |
+ FundamentalValue copied_false_value(false_value); |
+ EXPECT_EQ(false_value.type(), copied_false_value.type()); |
+ EXPECT_EQ(false_value.GetBool(), copied_false_value.GetBool()); |
+ |
+ // TODO(crbug.com/646113): Create a Type::NONE value once the assignment |
+ // operator of base::Value is public. |
+ FundamentalValue blank(123); |
+ |
+ blank = true_value; |
+ EXPECT_EQ(true_value.type(), blank.type()); |
+ EXPECT_EQ(true_value.GetBool(), blank.GetBool()); |
+ |
+ blank = false_value; |
+ EXPECT_EQ(false_value.type(), blank.type()); |
+ EXPECT_EQ(false_value.GetBool(), blank.GetBool()); |
+} |
+ |
+TEST(ValuesTest, CopyInt) { |
+ FundamentalValue value(74); |
+ FundamentalValue copied_value(value); |
+ EXPECT_EQ(value.type(), copied_value.type()); |
+ EXPECT_EQ(value.GetInt(), copied_value.GetInt()); |
+ |
+ // TODO(crbug.com/646113): Create a Type::NONE value once the assignment |
+ // operator of base::Value is public. |
+ FundamentalValue blank(false); |
+ |
+ blank = value; |
+ EXPECT_EQ(value.type(), blank.type()); |
+ EXPECT_EQ(value.GetInt(), blank.GetInt()); |
+} |
+ |
+TEST(ValuesTest, CopyDouble) { |
+ FundamentalValue value(74.896); |
+ FundamentalValue copied_value(value); |
+ EXPECT_EQ(value.type(), copied_value.type()); |
+ EXPECT_EQ(value.GetDouble(), copied_value.GetDouble()); |
+ |
+ // TODO(crbug.com/646113): Create a Type::NONE value once the assignment |
+ // operator of base::Value is public. |
+ FundamentalValue blank(false); |
+ |
+ blank = value; |
+ EXPECT_EQ(value.type(), blank.type()); |
+ EXPECT_EQ(value.GetDouble(), blank.GetDouble()); |
+} |
+ |
+// Group of tests for the move constructors and move-assigmnent. |
+TEST(ValuesTest, MoveBool) { |
+ FundamentalValue true_value(true); |
+ FundamentalValue moved_true_value(std::move(true_value)); |
+ EXPECT_EQ(Value::Type::BOOLEAN, moved_true_value.type()); |
+ EXPECT_TRUE(moved_true_value.GetBool()); |
+ |
+ FundamentalValue false_value(false); |
+ FundamentalValue moved_false_value(std::move(false_value)); |
+ EXPECT_EQ(Value::Type::BOOLEAN, moved_false_value.type()); |
+ EXPECT_FALSE(moved_false_value.GetBool()); |
+ |
+ // TODO(crbug.com/646113): Create a Type::NONE value once the assignment |
+ // operator of base::Value is public. |
+ FundamentalValue blank(123); |
+ |
+ blank = FundamentalValue(true); |
+ EXPECT_EQ(Value::Type::BOOLEAN, blank.type()); |
+ EXPECT_TRUE(blank.GetBool()); |
+ |
+ blank = FundamentalValue(false); |
+ EXPECT_EQ(Value::Type::BOOLEAN, blank.type()); |
+ EXPECT_FALSE(blank.GetBool()); |
+} |
+ |
+TEST(ValuesTest, MoveInt) { |
+ FundamentalValue value(74); |
+ FundamentalValue moved_value(std::move(value)); |
+ EXPECT_EQ(Value::Type::INTEGER, moved_value.type()); |
+ EXPECT_EQ(74, moved_value.GetInt()); |
+ |
+ // TODO(crbug.com/646113): Create a Type::NONE value once the assignment |
+ // operator of base::Value is public. |
+ FundamentalValue blank(false); |
+ |
+ blank = FundamentalValue(47); |
+ EXPECT_EQ(Value::Type::INTEGER, blank.type()); |
+ EXPECT_EQ(47, blank.GetInt()); |
+} |
+ |
+TEST(ValuesTest, MoveDouble) { |
+ FundamentalValue value(74.896); |
+ FundamentalValue moved_value(std::move(value)); |
+ EXPECT_EQ(Value::Type::DOUBLE, moved_value.type()); |
+ EXPECT_EQ(74.896, moved_value.GetDouble()); |
+ |
+ // TODO(crbug.com/646113): Create a Type::NONE value once the assignment |
+ // operator of base::Value is public. |
+ FundamentalValue blank(false); |
+ |
+ blank = FundamentalValue(654.38); |
+ EXPECT_EQ(Value::Type::DOUBLE, blank.type()); |
+ EXPECT_EQ(654.38, blank.GetDouble()); |
+} |
+ |
TEST(ValuesTest, Basic) { |
// Test basic dictionary getting/setting |
DictionaryValue settings; |