aboutsummaryrefslogtreecommitdiffhomepage
path: root/conformance/conformance_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'conformance/conformance_test.cc')
-rw-r--r--conformance/conformance_test.cc72
1 files changed, 27 insertions, 45 deletions
diff --git a/conformance/conformance_test.cc b/conformance/conformance_test.cc
index f44fe8a1..7583c88d 100644
--- a/conformance/conformance_test.cc
+++ b/conformance/conformance_test.cc
@@ -276,14 +276,18 @@ void ConformanceTestSuite::RunValidInputTest(
const string& test_name, ConformanceLevel level, const string& input,
WireFormat input_format, const string& equivalent_text_format,
WireFormat requested_output, bool isProto3) {
- TestAllTypes reference_message;
- TestAllTypesProto2 reference_message_proto2;
+ auto newTestMessage = [&isProto3]() {
+ Message* newMessage;
+ if (isProto3) {
+ newMessage = new TestAllTypes;
+ } else {
+ newMessage = new TestAllTypesProto2;
+ }
+ return newMessage;
+ };
+ Message* reference_message = newTestMessage();
GOOGLE_CHECK(
- isProto3 ?
- TextFormat::ParseFromString(equivalent_text_format, &reference_message)
- :
- TextFormat::ParseFromString(equivalent_text_format, &reference_message_proto2)
- )
+ TextFormat::ParseFromString(equivalent_text_format, reference_message))
<< "Failed to parse data for test case: " << test_name
<< ", data: " << equivalent_text_format;
@@ -294,9 +298,9 @@ void ConformanceTestSuite::RunValidInputTest(
case conformance::PROTOBUF: {
request.set_protobuf_payload(input);
if (isProto3) {
- request.set_message_type("proto3");
+ request.set_message_type("protobuf_test_messages.proto3.TestAllTypes");
} else {
- request.set_message_type("proto2");
+ request.set_message_type("protobuf_test_messages.proto2.TestAllTypesProto2");
}
break;
}
@@ -313,8 +317,7 @@ void ConformanceTestSuite::RunValidInputTest(
RunTest(test_name, request, &response);
- TestAllTypes test_message;
- TestAllTypesProto2 test_message_proto2;
+ Message *test_message = newTestMessage();
switch (response.result_case()) {
case ConformanceResponse::RESULT_NOT_SET:
@@ -350,20 +353,11 @@ void ConformanceTestSuite::RunValidInputTest(
return;
}
- if (isProto3) {
- if (!test_message.ParseFromString(binary_protobuf)) {
- ReportFailure(test_name, level, request, response,
- "INTERNAL ERROR: internal JSON->protobuf transcode "
- "yielded unparseable proto.");
- return;
- }
- } else {
- if (!test_message_proto2.ParseFromString(binary_protobuf)) {
- ReportFailure(test_name, level, request, response,
- "INTERNAL ERROR: internal JSON->protobuf transcode "
- "yielded unparseable proto.");
- return;
- }
+ if (!test_message->ParseFromString(binary_protobuf)) {
+ ReportFailure(test_name, level, request, response,
+ "INTERNAL ERROR: internal JSON->protobuf transcode "
+ "yielded unparseable proto.");
+ return;
}
break;
@@ -377,18 +371,10 @@ void ConformanceTestSuite::RunValidInputTest(
return;
}
- if (isProto3) {
- if (!test_message.ParseFromString(response.protobuf_payload())) {
- ReportFailure(test_name, level, request, response,
- "Protobuf output we received from test was unparseable.");
- return;
- }
- } else {
- if (!test_message_proto2.ParseFromString(response.protobuf_payload())) {
- ReportFailure(test_name, level, request, response,
- "Protobuf output we received from test was unparseable.");
- return;
- }
+ if (!test_message->ParseFromString(response.protobuf_payload())) {
+ ReportFailure(test_name, level, request, response,
+ "Protobuf output we received from test was unparseable.");
+ return;
}
break;
@@ -407,11 +393,7 @@ void ConformanceTestSuite::RunValidInputTest(
differencer.ReportDifferencesToString(&differences);
bool check;
- if (isProto3) {
- check = differencer.Compare(reference_message, test_message);
- } else {
- check = differencer.Compare(reference_message_proto2, test_message_proto2);
- }
+ check = differencer.Compare(*reference_message, *test_message);
if (check) {
ReportSuccess(test_name);
} else {
@@ -429,9 +411,9 @@ void ConformanceTestSuite::ExpectParseFailureForProto(
ConformanceResponse response;
request.set_protobuf_payload(proto);
if (isProto3) {
- request.set_message_type("proto3");
+ request.set_message_type("protobuf_test_messages.proto3.TestAllTypes");
} else {
- request.set_message_type("proto2");
+ request.set_message_type("protobuf_test_messages.proto2.TestAllTypesProto2");
}
string effective_test_name = ConformanceLevelToString(level) +
".ProtobufInput." + test_name;
@@ -586,7 +568,7 @@ void ConformanceTestSuite::ExpectSerializeFailureForJson(
ConformanceRequest request;
ConformanceResponse response;
request.set_protobuf_payload(payload_message.SerializeAsString());
- request.set_message_type("proto3");
+ request.set_message_type("protobuf_test_messages.proto3.TestAllTypes");
string effective_test_name =
ConformanceLevelToString(level) + "." + test_name + ".JsonOutput";
request.set_requested_output_format(conformance::JSON);