#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/slice/slice_internal.h"
TEST(SliceBufferByteStream, Basic) {
grpc_core::ExecCtx exec_ctx;
TEST(SliceBufferByteStream, Basic) {
grpc_core::ExecCtx exec_ctx;
for (size_t i = 0; i < GPR_ARRAY_SIZE(input); ++i) {
ASSERT_TRUE(stream.Next(~(size_t)0, &closure));
grpc_slice output;
for (size_t i = 0; i < GPR_ARRAY_SIZE(input); ++i) {
ASSERT_TRUE(stream.Next(~(size_t)0, &closure));
grpc_slice output;
EXPECT_TRUE(error == GRPC_ERROR_NONE);
EXPECT_TRUE(grpc_slice_eq(input[i], output));
grpc_slice_unref_internal(output);
EXPECT_TRUE(error == GRPC_ERROR_NONE);
EXPECT_TRUE(grpc_slice_eq(input[i], output));
grpc_slice_unref_internal(output);
EXPECT_TRUE(error == GRPC_ERROR_NONE);
EXPECT_TRUE(grpc_slice_eq(input[0], output));
grpc_slice_unref_internal(output);
// Now shutdown.
EXPECT_TRUE(error == GRPC_ERROR_NONE);
EXPECT_TRUE(grpc_slice_eq(input[0], output));
grpc_slice_unref_internal(output);
// Now shutdown.
GRPC_ERROR_CREATE_FROM_STATIC_STRING("shutdown error");
stream.Shutdown(GRPC_ERROR_REF(shutdown_error));
// After shutdown, the next pull() should return the error.
GRPC_ERROR_CREATE_FROM_STATIC_STRING("shutdown error");
stream.Shutdown(GRPC_ERROR_REF(shutdown_error));
// After shutdown, the next pull() should return the error.
for (size_t i = 0; i < GPR_ARRAY_SIZE(input); ++i) {
ASSERT_TRUE(stream.Next(~(size_t)0, &closure));
grpc_slice output;
for (size_t i = 0; i < GPR_ARRAY_SIZE(input); ++i) {
ASSERT_TRUE(stream.Next(~(size_t)0, &closure));
grpc_slice output;
EXPECT_TRUE(error == GRPC_ERROR_NONE);
EXPECT_TRUE(grpc_slice_eq(input[i], output));
grpc_slice_unref_internal(output);
EXPECT_TRUE(error == GRPC_ERROR_NONE);
EXPECT_TRUE(grpc_slice_eq(input[i], output));
grpc_slice_unref_internal(output);
EXPECT_TRUE(error == GRPC_ERROR_NONE);
EXPECT_TRUE(grpc_slice_eq(input[0], output));
grpc_slice_unref_internal(output);
EXPECT_TRUE(error == GRPC_ERROR_NONE);
EXPECT_TRUE(grpc_slice_eq(input[0], output));
grpc_slice_unref_internal(output);
// Read one slice from stream1.
EXPECT_TRUE(stream1.Next(~(size_t)0, &closure));
grpc_slice output;
// Read one slice from stream1.
EXPECT_TRUE(stream1.Next(~(size_t)0, &closure));
grpc_slice output;
EXPECT_TRUE(error == GRPC_ERROR_NONE);
EXPECT_TRUE(grpc_slice_eq(input[0], output));
grpc_slice_unref_internal(output);
EXPECT_TRUE(error == GRPC_ERROR_NONE);
EXPECT_TRUE(grpc_slice_eq(input[0], output));
grpc_slice_unref_internal(output);
grpc::testing::TestEnvironment env(argc, argv);
::testing::InitGoogleTest(&argc, argv);
grpc::testing::TestEnvironment env(argc, argv);
::testing::InitGoogleTest(&argc, argv);