aboutsummaryrefslogtreecommitdiff
path: root/pw_rpc/nanopb/client_reader_writer_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'pw_rpc/nanopb/client_reader_writer_test.cc')
-rw-r--r--pw_rpc/nanopb/client_reader_writer_test.cc78
1 files changed, 74 insertions, 4 deletions
diff --git a/pw_rpc/nanopb/client_reader_writer_test.cc b/pw_rpc/nanopb/client_reader_writer_test.cc
index 2e8b8fccf..66da9ce43 100644
--- a/pw_rpc/nanopb/client_reader_writer_test.cc
+++ b/pw_rpc/nanopb/client_reader_writer_test.cc
@@ -59,7 +59,7 @@ TEST(NanopbClientWriter, DefaultConstructed) {
EXPECT_EQ(Status::FailedPrecondition(), call.Write({}));
EXPECT_EQ(Status::FailedPrecondition(), call.Cancel());
- EXPECT_EQ(Status::FailedPrecondition(), call.CloseClientStream());
+ EXPECT_EQ(Status::FailedPrecondition(), call.RequestCompletion());
call.set_on_completed([](const pw_rpc_test_TestStreamResponse&, Status) {});
call.set_on_error([](Status) {});
@@ -72,6 +72,7 @@ TEST(NanopbClientReader, DefaultConstructed) {
EXPECT_EQ(call.channel_id(), Channel::kUnassignedChannelId);
EXPECT_EQ(Status::FailedPrecondition(), call.Cancel());
+ EXPECT_EQ(Status::FailedPrecondition(), call.RequestCompletion());
call.set_on_completed([](Status) {});
call.set_on_next([](const pw_rpc_test_TestStreamResponse&) {});
@@ -88,7 +89,75 @@ TEST(NanopbClientReaderWriter, DefaultConstructed) {
EXPECT_EQ(Status::FailedPrecondition(), call.Write({}));
EXPECT_EQ(Status::FailedPrecondition(), call.Cancel());
- EXPECT_EQ(Status::FailedPrecondition(), call.CloseClientStream());
+ EXPECT_EQ(Status::FailedPrecondition(), call.RequestCompletion());
+
+ call.set_on_completed([](Status) {});
+ call.set_on_next([](const pw_rpc_test_TestStreamResponse&) {});
+ call.set_on_error([](Status) {});
+}
+
+TEST(NanopbClientWriter, RequestCompletion) {
+ NanopbClientTestContext ctx;
+ NanopbClientWriter<pw_rpc_test_TestRequest, pw_rpc_test_TestStreamResponse>
+ call = TestService::TestClientStreamRpc(
+ ctx.client(),
+ ctx.channel().id(),
+ FailIfOnCompletedCalled<pw_rpc_test_TestStreamResponse>,
+ FailIfCalled);
+ ASSERT_EQ(OkStatus(), call.RequestCompletion());
+
+ ASSERT_TRUE(call.active());
+ EXPECT_EQ(call.channel_id(), ctx.channel().id());
+
+ EXPECT_EQ(OkStatus(), call.Write({}));
+ EXPECT_EQ(OkStatus(), call.RequestCompletion());
+ EXPECT_EQ(OkStatus(), call.Cancel());
+
+ call.set_on_completed([](const pw_rpc_test_TestStreamResponse&, Status) {});
+ call.set_on_error([](Status) {});
+}
+
+TEST(NanopbClientReader, RequestCompletion) {
+ NanopbClientTestContext ctx;
+ NanopbClientReader<pw_rpc_test_TestStreamResponse> call =
+ TestService::TestServerStreamRpc(
+ ctx.client(),
+ ctx.channel().id(),
+ {},
+ FailIfOnNextCalled<pw_rpc_test_TestStreamResponse>,
+ FailIfCalled,
+ FailIfCalled);
+ ASSERT_EQ(OkStatus(), call.RequestCompletion());
+
+ ASSERT_TRUE(call.active());
+ EXPECT_EQ(call.channel_id(), ctx.channel().id());
+
+ EXPECT_EQ(OkStatus(), call.RequestCompletion());
+ EXPECT_EQ(OkStatus(), call.Cancel());
+
+ call.set_on_completed([](Status) {});
+ call.set_on_next([](const pw_rpc_test_TestStreamResponse&) {});
+ call.set_on_error([](Status) {});
+}
+
+TEST(NanopbClientReaderWriter, RequestCompletion) {
+ NanopbClientTestContext ctx;
+ NanopbClientReaderWriter<pw_rpc_test_TestRequest,
+ pw_rpc_test_TestStreamResponse>
+ call = TestService::TestBidirectionalStreamRpc(
+ ctx.client(),
+ ctx.channel().id(),
+ FailIfOnNextCalled<pw_rpc_test_TestStreamResponse>,
+ FailIfCalled,
+ FailIfCalled);
+ ASSERT_EQ(OkStatus(), call.RequestCompletion());
+
+ ASSERT_TRUE(call.active());
+ EXPECT_EQ(call.channel_id(), ctx.channel().id());
+
+ EXPECT_EQ(OkStatus(), call.Write({}));
+ EXPECT_EQ(OkStatus(), call.RequestCompletion());
+ EXPECT_EQ(OkStatus(), call.Cancel());
call.set_on_completed([](Status) {});
call.set_on_next([](const pw_rpc_test_TestStreamResponse&) {});
@@ -130,7 +199,7 @@ TEST(NanopbClientWriter, Closed) {
EXPECT_EQ(Status::FailedPrecondition(), call.Write({}));
EXPECT_EQ(Status::FailedPrecondition(), call.Cancel());
- EXPECT_EQ(Status::FailedPrecondition(), call.CloseClientStream());
+ EXPECT_EQ(Status::FailedPrecondition(), call.RequestCompletion());
call.set_on_completed([](const pw_rpc_test_TestStreamResponse&, Status) {});
call.set_on_error([](Status) {});
@@ -152,6 +221,7 @@ TEST(NanopbClientReader, Closed) {
EXPECT_EQ(call.channel_id(), Channel::kUnassignedChannelId);
EXPECT_EQ(Status::FailedPrecondition(), call.Cancel());
+ EXPECT_EQ(Status::FailedPrecondition(), call.RequestCompletion());
call.set_on_completed([](Status) {});
call.set_on_next([](const pw_rpc_test_TestStreamResponse&) {});
@@ -175,7 +245,7 @@ TEST(NanopbClientReaderWriter, Closed) {
EXPECT_EQ(Status::FailedPrecondition(), call.Write({}));
EXPECT_EQ(Status::FailedPrecondition(), call.Cancel());
- EXPECT_EQ(Status::FailedPrecondition(), call.CloseClientStream());
+ EXPECT_EQ(Status::FailedPrecondition(), call.RequestCompletion());
call.set_on_completed([](Status) {});
call.set_on_next([](const pw_rpc_test_TestStreamResponse&) {});