diff options
author | Vijay Pai <vpai@google.com> | 2017-08-03 13:05:42 -0700 |
---|---|---|
committer | Vijay Pai <vpai@google.com> | 2017-08-04 07:48:48 -0700 |
commit | ce58cf8c44c9d41b50f85a9b87337f0736022e7a (patch) | |
tree | a29cd0a135489af9cbb944bf35bd967b774c8a4b /test/cpp/util/slice_test.cc | |
parent | 3e6df473bfc7cd8c37c88e46298ee9ed40634cfd (diff) |
Add Slice constructors to match all grpc_slice cases
Diffstat (limited to 'test/cpp/util/slice_test.cc')
-rw-r--r-- | test/cpp/util/slice_test.cc | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/cpp/util/slice_test.cc b/test/cpp/util/slice_test.cc index 9e3329fab0..8a8962d7ee 100644 --- a/test/cpp/util/slice_test.cc +++ b/test/cpp/util/slice_test.cc @@ -63,6 +63,42 @@ TEST_F(SliceTest, StaticBuf) { CheckSlice(spp, kContent); } +TEST_F(SliceTest, SliceNew) { + char* x = new char[strlen(kContent) + 1]; + strcpy(x, kContent); + Slice spp(x, strlen(x), [](void* p) { delete[] reinterpret_cast<char*>(p); }); + CheckSlice(spp, kContent); +} + +TEST_F(SliceTest, SliceNewDoNothing) { + Slice spp(const_cast<char*>(kContent), strlen(kContent), [](void* p) {}); + CheckSlice(spp, kContent); +} + +TEST_F(SliceTest, SliceNewWithUserData) { + struct stest { + char* x; + int y; + }; + auto* t = new stest; + t->x = new char[strlen(kContent) + 1]; + strcpy(t->x, kContent); + Slice spp(t->x, strlen(t->x), + [](void* p) { + auto* t = reinterpret_cast<stest*>(p); + delete[] t->x; + delete t; + }, + t); + CheckSlice(spp, kContent); +} + +TEST_F(SliceTest, SliceNewLen) { + Slice spp(const_cast<char*>(kContent), strlen(kContent), + [](void* p, size_t l) { EXPECT_EQ(l, strlen(kContent)); }); + CheckSlice(spp, kContent); +} + TEST_F(SliceTest, Steal) { grpc_slice s = grpc_slice_from_copied_string(kContent); Slice spp(s, Slice::STEAL_REF); |