Index: base/values_unittest.cc |
diff --git a/base/values_unittest.cc b/base/values_unittest.cc |
index 9f2d9d62a25045171db8389e125c7ce351d34c31..e62b6e579b134f5bd92291b1b796618c689f239a 100644 |
--- a/base/values_unittest.cc |
+++ b/base/values_unittest.cc |
@@ -9,6 +9,7 @@ |
#include <limits> |
#include <memory> |
#include <utility> |
+#include <vector> |
#include "base/memory/ptr_util.h" |
#include "base/strings/string16.h" |
@@ -82,6 +83,12 @@ TEST(ValuesTest, ConstructStringFromStringPiece) { |
EXPECT_EQ("foobar", value.GetString()); |
} |
+TEST(ValuesTest, ConstructBinary) { |
+ BinaryValue value(std::vector<char>({0xF, 0x0, 0x0, 0xB, 0xA, 0x2})); |
+ EXPECT_EQ(Value::Type::BINARY, value.type()); |
+ EXPECT_EQ(std::vector<char>({0xF, 0x0, 0x0, 0xB, 0xA, 0x2}), value.GetBlob()); |
+} |
+ |
// 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. |
@@ -146,6 +153,19 @@ TEST(ValuesTest, CopyString) { |
EXPECT_EQ(value.GetString(), blank.GetString()); |
} |
+TEST(ValuesTest, CopyBinary) { |
+ BinaryValue value(std::vector<char>({0xF, 0x0, 0x0, 0xB, 0xA, 0x2})); |
+ BinaryValue copied_value(value); |
+ EXPECT_EQ(value.type(), copied_value.type()); |
+ EXPECT_EQ(value.GetBlob(), copied_value.GetBlob()); |
+ |
+ Value blank; |
+ |
+ blank = value; |
+ EXPECT_EQ(value.type(), blank.type()); |
+ EXPECT_EQ(value.GetBlob(), blank.GetBlob()); |
+} |
+ |
// Group of tests for the move constructors and move-assigmnent. |
TEST(ValuesTest, MoveBool) { |
FundamentalValue true_value(true); |
@@ -208,6 +228,20 @@ TEST(ValuesTest, MoveString) { |
EXPECT_EQ("foobar", blank.GetString()); |
} |
+TEST(ValuesTest, MoveBinary) { |
+ const std::vector<char> buffer = {0xF, 0x0, 0x0, 0xB, 0xA, 0x2}; |
+ BinaryValue value(buffer); |
+ BinaryValue moved_value(std::move(value)); |
+ EXPECT_EQ(Value::Type::BINARY, moved_value.type()); |
+ EXPECT_EQ(buffer, moved_value.GetBlob()); |
+ |
+ Value blank; |
+ |
+ blank = BinaryValue(buffer); |
+ EXPECT_EQ(Value::Type::BINARY, blank.type()); |
+ EXPECT_EQ(buffer, blank.GetBlob()); |
+} |
+ |
TEST(ValuesTest, Basic) { |
// Test basic dictionary getting/setting |
DictionaryValue settings; |
@@ -301,16 +335,15 @@ TEST(ValuesTest, List) { |
} |
TEST(ValuesTest, BinaryValue) { |
- // Default constructor creates a BinaryValue with a null buffer and size 0. |
- std::unique_ptr<BinaryValue> binary(new BinaryValue()); |
+ // Default constructor creates a BinaryValue with a buffer of size 0. |
+ auto binary = MakeUnique<Value>(Value::Type::BINARY); |
ASSERT_TRUE(binary.get()); |
- ASSERT_EQ(NULL, binary->GetBuffer()); |
ASSERT_EQ(0U, binary->GetSize()); |
// Test the common case of a non-empty buffer |
- std::unique_ptr<char[]> buffer(new char[15]); |
- char* original_buffer = buffer.get(); |
- binary.reset(new BinaryValue(std::move(buffer), 15)); |
+ std::vector<char> buffer(15); |
+ char* original_buffer = buffer.data(); |
+ binary.reset(new BinaryValue(std::move(buffer))); |
ASSERT_TRUE(binary.get()); |
ASSERT_TRUE(binary->GetBuffer()); |
ASSERT_EQ(original_buffer, binary->GetBuffer()); |
@@ -608,10 +641,9 @@ TEST(ValuesTest, DeepCopy) { |
StringValue* original_string16 = scoped_string16.get(); |
original_dict.Set("string16", std::move(scoped_string16)); |
- std::unique_ptr<char[]> original_buffer(new char[42]); |
- memset(original_buffer.get(), '!', 42); |
+ std::vector<char> original_buffer(42, '!'); |
std::unique_ptr<BinaryValue> scoped_binary( |
- new BinaryValue(std::move(original_buffer), 42)); |
+ new BinaryValue(std::move(original_buffer))); |
BinaryValue* original_binary = scoped_binary.get(); |
original_dict.Set("binary", std::move(scoped_binary)); |
@@ -697,13 +729,10 @@ TEST(ValuesTest, DeepCopy) { |
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())); |
+ ASSERT_NE(original_binary->GetBuffer(), copy_binary->GetBuffer()); |
+ ASSERT_EQ(original_binary->GetSize(), copy_binary->GetSize()); |
+ ASSERT_EQ(0, memcmp(original_binary->GetBuffer(), copy_binary->GetBuffer(), |
+ original_binary->GetSize())); |
Value* copy_value = NULL; |
ASSERT_TRUE(copy_dict->Get("list", ©_value)); |
@@ -829,10 +858,9 @@ TEST(ValuesTest, DeepCopyCovariantReturnTypes) { |
Value* original_string16 = scoped_string16.get(); |
original_dict.Set("string16", std::move(scoped_string16)); |
- std::unique_ptr<char[]> original_buffer(new char[42]); |
- memset(original_buffer.get(), '!', 42); |
+ std::vector<char> original_buffer(42, '!'); |
std::unique_ptr<BinaryValue> scoped_binary( |
- new BinaryValue(std::move(original_buffer), 42)); |
+ new BinaryValue(std::move(original_buffer))); |
Value* original_binary = scoped_binary.get(); |
original_dict.Set("binary", std::move(scoped_binary)); |
@@ -1069,7 +1097,7 @@ TEST(ValuesTest, GetWithNullOutValue) { |
FundamentalValue int_value(1234); |
FundamentalValue double_value(12.34567); |
StringValue string_value("foo"); |
- BinaryValue binary_value; |
+ BinaryValue binary_value(Value::Type::BINARY); |
DictionaryValue dict_value; |
ListValue list_value; |