@@ -107,66 +107,6 @@ UTEST_F_MT(GrpcBidirectionalStream, BidirectionalStreamTest, 2) {
107107 );
108108}
109109
110- UTEST_F (GrpcBidirectionalStream, PingPongFinishOk) {
111- auto stream = GetClient ().Chat ();
112-
113- ASSERT_TRUE (stream.Write (sample::ugrpc::StreamGreetingRequest ()));
114- sample::ugrpc::StreamGreetingResponse response;
115- ASSERT_TRUE (stream.Read (response));
116-
117- ASSERT_TRUE (ugrpc::client::PingPongFinish (stream));
118-
119- ASSERT_FALSE (stream.Write (sample::ugrpc::StreamGreetingRequest ()));
120- ASSERT_FALSE (stream.WritesDone ());
121- ASSERT_THROW (stream.WriteAndCheck (sample::ugrpc::StreamGreetingRequest ()), ugrpc::client::RpcError);
122- ASSERT_FALSE (stream.Read (response));
123- ASSERT_THROW ([[maybe_unused]] auto _ = stream.ReadAsync (response), ugrpc::client::RpcError);
124- }
125-
126- UTEST_F (GrpcBidirectionalStream, PingPongFinishNoMessages) {
127- auto stream = GetClient ().Chat ();
128-
129- ASSERT_TRUE (ugrpc::client::PingPongFinish (stream));
130-
131- ASSERT_FALSE (stream.Write (sample::ugrpc::StreamGreetingRequest ()));
132- ASSERT_FALSE (stream.WritesDone ());
133- ASSERT_THROW (stream.WriteAndCheck (sample::ugrpc::StreamGreetingRequest ()), ugrpc::client::RpcError);
134- sample::ugrpc::StreamGreetingResponse response;
135- ASSERT_FALSE (stream.Read (response));
136- ASSERT_THROW ([[maybe_unused]] auto _ = stream.ReadAsync (response), ugrpc::client::RpcError);
137- }
138-
139- UTEST_F (GrpcBidirectionalStream, PingPongFinishMoreMessages) {
140- auto stream = GetClient ().Chat ();
141-
142- ASSERT_TRUE (stream.Write (sample::ugrpc::StreamGreetingRequest ()));
143- // No 'Read' here
144-
145- ASSERT_FALSE (ugrpc::client::PingPongFinish (stream));
146-
147- ASSERT_FALSE (stream.Write (sample::ugrpc::StreamGreetingRequest ()));
148- ASSERT_FALSE (stream.WritesDone ());
149- ASSERT_THROW (stream.WriteAndCheck (sample::ugrpc::StreamGreetingRequest ()), ugrpc::client::RpcError);
150- sample::ugrpc::StreamGreetingResponse response;
151- ASSERT_FALSE (stream.Read (response));
152- ASSERT_THROW ([[maybe_unused]] auto _ = stream.ReadAsync (response), ugrpc::client::RpcError);
153- }
154-
155- UTEST_F (GrpcBidirectionalStream, PingPongFinishAfterWritesDone) {
156- auto stream = GetClient ().Chat ();
157-
158- ASSERT_TRUE (stream.WritesDone ());
159-
160- ASSERT_FALSE (ugrpc::client::PingPongFinish (stream));
161-
162- ASSERT_FALSE (stream.Write (sample::ugrpc::StreamGreetingRequest ()));
163- ASSERT_FALSE (stream.WritesDone ());
164- ASSERT_THROW (stream.WriteAndCheck (sample::ugrpc::StreamGreetingRequest ()), ugrpc::client::RpcError);
165- sample::ugrpc::StreamGreetingResponse response;
166- ASSERT_FALSE (stream.Read (response));
167- ASSERT_THROW ([[maybe_unused]] auto _ = stream.ReadAsync (response), ugrpc::client::RpcError);
168- }
169-
170110UTEST_F (GrpcBidirectionalStream, BidirectionalStreamReadRemaining) {
171111 auto stream = GetClient ().Chat ();
172112
@@ -240,6 +180,31 @@ UTEST_F(GrpcBidirectionalStream, BidirectionalStreamDestroy) {
240180 EXPECT_EQ (get_metric (kStatus , {{" grpc_code" , " UNKNOWN" }}), 0 );
241181}
242182
183+ namespace {
184+
185+ class UnitTestServiceChatAutoFinish final : public sample::ugrpc::UnitTestServiceBase {
186+ public:
187+ ChatResult Chat (CallContext& /* context*/ , ChatReaderWriter& stream) override {
188+ stream.Write (sample::ugrpc::StreamGreetingResponse{});
189+ return grpc::Status::OK;
190+ }
191+ };
192+
193+ using GrpcBidirectionalStreamChatAutoFinish =
194+ ugrpc::tests::ServiceWithClientFixture<UnitTestServiceChatAutoFinish, sample::ugrpc::UnitTestServiceClient>;
195+
196+ } // namespace
197+
198+ UTEST_F (GrpcBidirectionalStreamChatAutoFinish, BidirectionalStreamWritesDoneThrowOnClosedStream) {
199+ auto stream = GetClient ().Chat ();
200+
201+ sample::ugrpc::StreamGreetingResponse response;
202+ ASSERT_TRUE (stream.Read (response));
203+ ASSERT_FALSE (stream.Read (response));
204+
205+ UASSERT_NO_THROW (ugrpc::client::ReadRemainingAndFinish (stream));
206+ }
207+
243208UTEST_F (GrpcInputStream, InputStreamDestroy) {
244209 {
245210 const sample::ugrpc::StreamGreetingRequest request;
0 commit comments