aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/cpp/util/slice_test.cc
diff options
context:
space:
mode:
authorGravatar Vijay Pai <vpai@google.com>2017-08-03 13:05:42 -0700
committerGravatar Vijay Pai <vpai@google.com>2017-08-04 07:48:48 -0700
commitce58cf8c44c9d41b50f85a9b87337f0736022e7a (patch)
treea29cd0a135489af9cbb944bf35bd967b774c8a4b /test/cpp/util/slice_test.cc
parent3e6df473bfc7cd8c37c88e46298ee9ed40634cfd (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.cc36
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);