diff options
author | Sree Kuchibhotla <sreek@google.com> | 2015-12-07 13:26:00 -0800 |
---|---|---|
committer | Sree Kuchibhotla <sreek@google.com> | 2015-12-07 13:26:45 -0800 |
commit | 7bf082faf8fefaa0282098edd0ee116cd1988e85 (patch) | |
tree | ec30301ae30faaec474edb2372ae32423a69faf5 /test | |
parent | 6baa023e8639d4a993778615baa97182f6138ded (diff) |
Improve test coverage from slice_buffer
Diffstat (limited to 'test')
-rw-r--r-- | test/core/support/slice_buffer_test.c | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/test/core/support/slice_buffer_test.c b/test/core/support/slice_buffer_test.c index a48278434f..078d89dfbe 100644 --- a/test/core/support/slice_buffer_test.c +++ b/test/core/support/slice_buffer_test.c @@ -35,13 +35,12 @@ #include <grpc/support/slice_buffer.h> #include "test/core/util/test_config.h" -int main(int argc, char **argv) { +void test_slice_buffer_add() { gpr_slice_buffer buf; gpr_slice aaa = gpr_slice_from_copied_string("aaa"); gpr_slice bb = gpr_slice_from_copied_string("bb"); size_t i; - grpc_test_init(argc, argv); gpr_slice_buffer_init(&buf); for (i = 0; i < 10; i++) { gpr_slice_ref(aaa); @@ -70,6 +69,61 @@ int main(int argc, char **argv) { GPR_ASSERT(buf.count == 0); GPR_ASSERT(buf.length == 0); gpr_slice_buffer_destroy(&buf); +} + +void test_slice_buffer_move_first() { + gpr_slice slices[3]; + gpr_slice_buffer src; + gpr_slice_buffer dst; + int idx = 0; + size_t src_len = 0; + size_t dst_len = 0; + + slices[0] = gpr_slice_from_copied_string("aaa"); + slices[1] = gpr_slice_from_copied_string("bbbb"); + slices[2] = gpr_slice_from_copied_string("ccc"); + + gpr_slice_buffer_init(&src); + gpr_slice_buffer_init(&dst); + for (idx = 0; idx < 3; idx++) { + gpr_slice_ref(slices[idx]); + /* For this test, it is important that we add each slice at a new + slice index */ + gpr_slice_buffer_add_indexed(&src, slices[idx]); + gpr_slice_buffer_add_indexed(&dst, slices[idx]); + } + + /* Case 1: Move more than the first slice's length from src to dst */ + src_len = src.length; + dst_len = dst.length; + gpr_slice_buffer_move_first(&src, 4, &dst); + src_len -= 4; + dst_len += 4; + GPR_ASSERT(src.length == src_len); + GPR_ASSERT(dst.length == dst_len); + + /* src now has two slices ["bb"] and ["cccc"] */ + /* Case 2: Move the first slice from src to dst */ + gpr_slice_buffer_move_first(&src, 3, &dst); + src_len -= 3; + dst_len += 3; + GPR_ASSERT(src.length == src_len); + GPR_ASSERT(dst.length == dst_len); + + /* src now has one slice ["ccc"] */ + /* Case 3: Move less than the first slice's length from src to dst*/ + gpr_slice_buffer_move_first(&src, 2, &dst); + src_len -= 2; + dst_len += 2; + GPR_ASSERT(src.length == src.length); + GPR_ASSERT(dst.length == dst.length); +} + +int main(int argc, char **argv) { + grpc_test_init(argc, argv); + + test_slice_buffer_add(); + test_slice_buffer_move_first(); return 0; } |