aboutsummaryrefslogtreecommitdiff
path: root/pw_rpc/raw/codegen_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'pw_rpc/raw/codegen_test.cc')
-rw-r--r--pw_rpc/raw/codegen_test.cc35
1 files changed, 25 insertions, 10 deletions
diff --git a/pw_rpc/raw/codegen_test.cc b/pw_rpc/raw/codegen_test.cc
index 61940312e..520ae4eea 100644
--- a/pw_rpc/raw/codegen_test.cc
+++ b/pw_rpc/raw/codegen_test.cc
@@ -24,12 +24,15 @@ namespace test {
class TestService final : public generated::TestService<TestService> {
public:
- StatusWithSize TestRpc(ServerContext&,
- ConstByteSpan request,
- ByteSpan response) {
+ static StatusWithSize TestRpc(ServerContext&,
+ ConstByteSpan request,
+ ByteSpan response) {
int64_t integer;
Status status;
- DecodeRequest(request, integer, status);
+
+ if (!DecodeRequest(request, integer, status)) {
+ return StatusWithSize::DataLoss();
+ }
protobuf::NestedEncoder encoder(response);
TestResponse::Encoder test_response(&encoder);
@@ -43,8 +46,8 @@ class TestService final : public generated::TestService<TestService> {
RawServerWriter& writer) {
int64_t integer;
Status status;
- DecodeRequest(request, integer, status);
+ ASSERT_TRUE(DecodeRequest(request, integer, status));
for (int i = 0; i < integer; ++i) {
ByteSpan buffer = writer.PayloadBuffer();
protobuf::NestedEncoder encoder(buffer);
@@ -57,22 +60,34 @@ class TestService final : public generated::TestService<TestService> {
}
private:
- void DecodeRequest(ConstByteSpan request, int64_t& integer, Status& status) {
+ static bool DecodeRequest(ConstByteSpan request,
+ int64_t& integer,
+ Status& status) {
protobuf::Decoder decoder(request);
+ Status decode_status;
+ bool has_integer = false;
+ bool has_status = false;
while (decoder.Next().ok()) {
switch (static_cast<TestRequest::Fields>(decoder.FieldNumber())) {
case TestRequest::Fields::INTEGER:
- decoder.ReadInt64(&integer);
+ decode_status = decoder.ReadInt64(&integer);
+ EXPECT_EQ(OkStatus(), decode_status);
+ has_integer = decode_status.ok();
break;
case TestRequest::Fields::STATUS_CODE: {
uint32_t status_code;
- decoder.ReadUint32(&status_code);
+ decode_status = decoder.ReadUint32(&status_code);
+ EXPECT_EQ(OkStatus(), decode_status);
+ has_status = decode_status.ok();
status = static_cast<Status::Code>(status_code);
break;
}
}
}
+ EXPECT_TRUE(has_integer);
+ EXPECT_TRUE(has_status);
+ return has_integer && has_status;
}
};
@@ -93,10 +108,10 @@ TEST(RawCodegen, Server_InvokeUnaryRpc) {
protobuf::NestedEncoder encoder(buffer);
test::TestRequest::Encoder test_request(&encoder);
test_request.WriteInteger(123);
- test_request.WriteStatusCode(Status::Ok().code());
+ test_request.WriteStatusCode(OkStatus().code());
auto sws = context.call(encoder.Encode().value());
- EXPECT_EQ(Status::Ok(), sws.status());
+ EXPECT_EQ(OkStatus(), sws.status());
protobuf::Decoder decoder(context.response());