diff options
author | Joshua Haberman <jhaberman@gmail.com> | 2018-09-02 14:18:04 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-02 14:18:04 -0700 |
commit | 41379a7064b6488099f203521fb69ceea0f6cc15 (patch) | |
tree | 93311b60a38cbc15171bccc5072eaaaafbd63086 /tests/conformance_upb.c | |
parent | 6c4469e1895298f0965777b2f9597a82a480cebd (diff) | |
parent | b6a92a93c619e012b2f57640495cc48809e89860 (diff) |
Merge pull request #120 from haberman/cmake
More work on CMake.
Diffstat (limited to 'tests/conformance_upb.c')
-rw-r--r-- | tests/conformance_upb.c | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/tests/conformance_upb.c b/tests/conformance_upb.c index 70ea300..ea5365c 100644 --- a/tests/conformance_upb.c +++ b/tests/conformance_upb.c @@ -39,17 +39,34 @@ void CheckedWrite(int fd, const void *buf, size_t len) { } } +bool stringview_eql(upb_stringview view, const char *str) { + return view.size == strlen(str) && memcmp(view.data, str, view.size) == 0; +} + +static const char *proto3_msg = + "protobuf_test_messages.proto3.TestAllTypesProto3"; + void DoTest( const conformance_ConformanceRequest* request, conformance_ConformanceResponse *response, upb_env *env) { - conformance_ConformanceResponse_new(env); - protobuf_test_messages_proto3_TestAllTypes *test_message; + upb_stringview message_type = + conformance_ConformanceRequest_message_type(request); + if (!stringview_eql(message_type, proto3_msg)) { + static const char msg[] = "Only proto3 for now."; + conformance_ConformanceResponse_set_skipped( + response, upb_stringview_make(msg, sizeof(msg))); + return; + } + + protobuf_test_messages_proto3_TestAllTypesProto3 *test_message; switch (conformance_ConformanceRequest_payload_case(request)) { - case conformance_ConformanceRequest_payload_protobuf_payload: - test_message = protobuf_test_messages_proto3_TestAllTypes_parsenew( - conformance_ConformanceRequest_protobuf_payload(request), env); + case conformance_ConformanceRequest_payload_protobuf_payload: { + upb_stringview payload = + conformance_ConformanceRequest_protobuf_payload(request); + test_message = protobuf_test_messages_proto3_TestAllTypesProto3_parsenew( + payload, env); if (!test_message) { /* TODO(haberman): return details. */ @@ -59,6 +76,7 @@ void DoTest( return; } break; + } case conformance_ConformanceRequest_payload_json_payload: { static const char msg[] = "JSON support not yet implemented."; @@ -79,8 +97,9 @@ void DoTest( case conformance_PROTOBUF: { size_t serialized_len; - char *serialized = protobuf_test_messages_proto3_TestAllTypes_serialize( - test_message, env, &serialized_len); + char *serialized = + protobuf_test_messages_proto3_TestAllTypesProto3_serialize( + test_message, env, &serialized_len); if (!serialized) { static const char msg[] = "Error serializing."; conformance_ConformanceResponse_set_serialize_error( |