diff options
Diffstat (limited to 'pw_rpc/nanopb/client_reader_writer_test.cc')
-rw-r--r-- | pw_rpc/nanopb/client_reader_writer_test.cc | 78 |
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&) {}); |