Chromium Code Reviews| Index: base/pickle_unittest.cc |
| diff --git a/base/pickle_unittest.cc b/base/pickle_unittest.cc |
| index f58e7eceaf45c9bee7c1729f0913b197c0fa3c47..5dada198f9bb36d5386f65ad718c6a9f13955e2e 100644 |
| --- a/base/pickle_unittest.cc |
| +++ b/base/pickle_unittest.cc |
| @@ -524,4 +524,52 @@ TEST(PickleTest, DeepCopyResize) { |
| EXPECT_EQ(pickle.capacity_after_header(), pickle2.capacity_after_header()); |
| } |
| +namespace { |
| + |
| +// Publicly exposes the ClaimBytes interface for testing. |
| +class TestingPickle : public base::Pickle { |
|
Lei Zhang
2015/12/16 01:46:15
no need for base:: because you are already in name
Ken Rockot(use gerrit already)
2015/12/16 01:53:41
done
|
| + public: |
| + TestingPickle() {} |
| + |
| + void* ClaimBytes(size_t num_bytes) { |
| + return base::Pickle::ClaimBytes(num_bytes); |
| + } |
| +}; |
| + |
| +} // namespace |
| + |
| +// Checks that claimed bytes are zero-initialized. |
| +TEST(PickleTest, ClaimBytesInitialization) { |
| + static const int kChunkSize = 64; |
| + TestingPickle pickle; |
| + void* bytes = pickle.ClaimBytes(kChunkSize); |
|
Lei Zhang
2015/12/16 01:46:15
You can also just static_cast here instead of in t
Ken Rockot(use gerrit already)
2015/12/16 01:53:41
Done
|
| + for (size_t i = 0; i < kChunkSize; ++i) { |
| + EXPECT_EQ(0, static_cast<char*>(bytes)[i]); |
| + } |
| +} |
| + |
| +// Checks that ClaimBytes properly advances the write offset. |
| +TEST(PickleTest, ClaimBytes) { |
| + std::string data("Hello, world!"); |
| + |
| + TestingPickle pickle; |
| + pickle.WriteSizeT(data.size()); |
| + void* bytes = pickle.ClaimBytes(data.size()); |
| + pickle.WriteInt(42); |
| + memcpy(bytes, data.data(), data.size()); |
| + |
| + PickleIterator iter(pickle); |
| + size_t out_data_length; |
| + EXPECT_TRUE(iter.ReadSizeT(&out_data_length)); |
| + EXPECT_EQ(data.size(), out_data_length); |
| + |
| + const char* out_data = nullptr; |
| + EXPECT_TRUE(iter.ReadBytes(&out_data, out_data_length)); |
| + EXPECT_EQ(data, std::string(out_data, out_data_length)); |
| + |
| + int out_value; |
| + EXPECT_TRUE(iter.ReadInt(&out_value)); |
| + EXPECT_EQ(42, out_value); |
| +} |
| + |
| } // namespace base |