Clean up conformance tests warnings and formatting.

PiperOrigin-RevId: 574304654
pull/14421/head
Mike Kruskal 1 year ago committed by Copybara-Service
parent cb86ad6d81
commit 39752aaea3
  1. 1347
      conformance/binary_json_conformance_suite.cc
  2. 1
      conformance/binary_json_conformance_suite.h
  3. 64
      conformance/conformance_test.cc
  4. 10
      conformance/conformance_test.h
  5. 53
      conformance/text_format_conformance_suite.cc
  6. 3
      conformance/text_format_conformance_suite.h

File diff suppressed because it is too large Load Diff

@ -8,6 +8,7 @@
#ifndef CONFORMANCE_BINARY_JSON_CONFORMANCE_SUITE_H #ifndef CONFORMANCE_BINARY_JSON_CONFORMANCE_SUITE_H
#define CONFORMANCE_BINARY_JSON_CONFORMANCE_SUITE_H #define CONFORMANCE_BINARY_JSON_CONFORMANCE_SUITE_H
#include <functional>
#include <memory> #include <memory>
#include <string> #include <string>
#include <utility> #include <utility>

@ -9,12 +9,15 @@
#include <stdarg.h> #include <stdarg.h>
#include <cstddef>
#include <cstdint>
#include <fstream> #include <fstream>
#include <memory>
#include <string> #include <string>
#include "google/protobuf/util/field_comparator.h" #include "google/protobuf/util/field_comparator.h"
#include "google/protobuf/util/json_util.h"
#include "google/protobuf/util/message_differencer.h" #include "google/protobuf/util/message_differencer.h"
#include "absl/log/absl_check.h"
#include "absl/log/absl_log.h" #include "absl/log/absl_log.h"
#include "absl/strings/str_cat.h" #include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h" #include "absl/strings/str_format.h"
@ -28,15 +31,14 @@
using conformance::ConformanceRequest; using conformance::ConformanceRequest;
using conformance::ConformanceResponse; using conformance::ConformanceResponse;
using conformance::WireFormat; using conformance::WireFormat;
using google::protobuf::TextFormat;
using google::protobuf::util::DefaultFieldComparator; using google::protobuf::util::DefaultFieldComparator;
using google::protobuf::util::MessageDifferencer; using google::protobuf::util::MessageDifferencer;
using std::string; using std::string;
namespace { namespace {
static string ToOctString(const string& binary_string) { static std::string ToOctString(const std::string& binary_string) {
string oct_string; std::string oct_string;
for (size_t i = 0; i < binary_string.size(); i++) { for (size_t i = 0; i < binary_string.size(); i++) {
uint8_t c = binary_string.at(i); uint8_t c = binary_string.at(i);
uint8_t high = c / 64; uint8_t high = c / 64;
@ -96,7 +98,7 @@ ConformanceTestSuite::ConformanceRequestSetting::ConformanceRequestSetting(
ConformanceLevel level, conformance::WireFormat input_format, ConformanceLevel level, conformance::WireFormat input_format,
conformance::WireFormat output_format, conformance::WireFormat output_format,
conformance::TestCategory test_category, const Message& prototype_message, conformance::TestCategory test_category, const Message& prototype_message,
const string& test_name, const string& input) const std::string& test_name, const std::string& input)
: level_(level), : level_(level),
input_format_(input_format), input_format_(input_format),
output_format_(output_format), output_format_(output_format),
@ -139,8 +141,9 @@ ConformanceTestSuite::ConformanceRequestSetting::NewTestMessage() const {
return std::unique_ptr<Message>(prototype_message_for_compare_->New()); return std::unique_ptr<Message>(prototype_message_for_compare_->New());
} }
string ConformanceTestSuite::ConformanceRequestSetting::GetTestName() const { std::string ConformanceTestSuite::ConformanceRequestSetting::GetTestName()
string rname; const {
std::string rname;
switch (FileDescriptorLegacy(prototype_message_.GetDescriptor()->file()) switch (FileDescriptorLegacy(prototype_message_.GetDescriptor()->file())
.syntax()) { .syntax()) {
case FileDescriptorLegacy::Syntax::SYNTAX_PROTO3: case FileDescriptorLegacy::Syntax::SYNTAX_PROTO3:
@ -158,7 +161,7 @@ string ConformanceTestSuite::ConformanceRequestSetting::GetTestName() const {
OutputFormatString(output_format_)); OutputFormatString(output_format_));
} }
string std::string
ConformanceTestSuite::ConformanceRequestSetting::ConformanceLevelToString( ConformanceTestSuite::ConformanceRequestSetting::ConformanceLevelToString(
ConformanceLevel level) const { ConformanceLevel level) const {
switch (level) { switch (level) {
@ -171,7 +174,7 @@ ConformanceTestSuite::ConformanceRequestSetting::ConformanceLevelToString(
return ""; return "";
} }
string ConformanceTestSuite::ConformanceRequestSetting::InputFormatString( std::string ConformanceTestSuite::ConformanceRequestSetting::InputFormatString(
conformance::WireFormat format) const { conformance::WireFormat format) const {
switch (format) { switch (format) {
case conformance::PROTOBUF: case conformance::PROTOBUF:
@ -186,7 +189,7 @@ string ConformanceTestSuite::ConformanceRequestSetting::InputFormatString(
return ""; return "";
} }
string ConformanceTestSuite::ConformanceRequestSetting::OutputFormatString( std::string ConformanceTestSuite::ConformanceRequestSetting::OutputFormatString(
conformance::WireFormat format) const { conformance::WireFormat format) const {
switch (format) { switch (format) {
case conformance::PROTOBUF: case conformance::PROTOBUF:
@ -208,7 +211,7 @@ void ConformanceTestSuite::TruncateDebugPayload(string* payload) {
} }
} }
const ConformanceRequest ConformanceTestSuite::TruncateRequest( ConformanceRequest ConformanceTestSuite::TruncateRequest(
const ConformanceRequest& request) { const ConformanceRequest& request) {
ConformanceRequest debug_request(request); ConformanceRequest debug_request(request);
switch (debug_request.payload_case()) { switch (debug_request.payload_case()) {
@ -231,7 +234,7 @@ const ConformanceRequest ConformanceTestSuite::TruncateRequest(
return debug_request; return debug_request;
} }
const ConformanceResponse ConformanceTestSuite::TruncateResponse( ConformanceResponse ConformanceTestSuite::TruncateResponse(
const ConformanceResponse& response) { const ConformanceResponse& response) {
ConformanceResponse debug_response(response); ConformanceResponse debug_response(response);
switch (debug_response.result_case()) { switch (debug_response.result_case()) {
@ -254,7 +257,7 @@ const ConformanceResponse ConformanceTestSuite::TruncateResponse(
return debug_response; return debug_response;
} }
void ConformanceTestSuite::ReportSuccess(const string& test_name) { void ConformanceTestSuite::ReportSuccess(const std::string& test_name) {
if (expected_to_fail_.erase(test_name) != 0) { if (expected_to_fail_.erase(test_name) != 0) {
absl::StrAppendFormat( absl::StrAppendFormat(
&output_, &output_,
@ -266,7 +269,7 @@ void ConformanceTestSuite::ReportSuccess(const string& test_name) {
successes_++; successes_++;
} }
void ConformanceTestSuite::ReportFailure(const string& test_name, void ConformanceTestSuite::ReportFailure(const std::string& test_name,
ConformanceLevel level, ConformanceLevel level,
const ConformanceRequest& request, const ConformanceRequest& request,
const ConformanceResponse& response, const ConformanceResponse& response,
@ -286,7 +289,7 @@ void ConformanceTestSuite::ReportFailure(const string& test_name,
TruncateResponse(response).ShortDebugString()); TruncateResponse(response).ShortDebugString());
} }
void ConformanceTestSuite::ReportSkip(const string& test_name, void ConformanceTestSuite::ReportSkip(const std::string& test_name,
const ConformanceRequest& request, const ConformanceRequest& request,
const ConformanceResponse& response) { const ConformanceResponse& response) {
if (verbose_) { if (verbose_) {
@ -299,19 +302,20 @@ void ConformanceTestSuite::ReportSkip(const string& test_name,
void ConformanceTestSuite::RunValidInputTest( void ConformanceTestSuite::RunValidInputTest(
const ConformanceRequestSetting& setting, const ConformanceRequestSetting& setting,
const string& equivalent_text_format) { const std::string& equivalent_text_format) {
std::unique_ptr<Message> reference_message(setting.NewTestMessage()); std::unique_ptr<Message> reference_message(setting.NewTestMessage());
ABSL_CHECK(TextFormat::ParseFromString(equivalent_text_format, ABSL_CHECK(TextFormat::ParseFromString(equivalent_text_format,
reference_message.get())) reference_message.get()))
<< "Failed to parse data for test case: " << setting.GetTestName() << "Failed to parse data for test case: " << setting.GetTestName()
<< ", data: " << equivalent_text_format; << ", data: " << equivalent_text_format;
const string equivalent_wire_format = reference_message->SerializeAsString(); const std::string equivalent_wire_format =
reference_message->SerializeAsString();
RunValidBinaryInputTest(setting, equivalent_wire_format); RunValidBinaryInputTest(setting, equivalent_wire_format);
} }
void ConformanceTestSuite::RunValidBinaryInputTest( void ConformanceTestSuite::RunValidBinaryInputTest(
const ConformanceRequestSetting& setting, const ConformanceRequestSetting& setting,
const string& equivalent_wire_format, bool require_same_wire_format) { const std::string& equivalent_wire_format, bool require_same_wire_format) {
const ConformanceRequest& request = setting.GetRequest(); const ConformanceRequest& request = setting.GetRequest();
ConformanceResponse response; ConformanceResponse response;
RunTest(setting.GetTestName(), request, &response); RunTest(setting.GetTestName(), request, &response);
@ -321,11 +325,12 @@ void ConformanceTestSuite::RunValidBinaryInputTest(
void ConformanceTestSuite::VerifyResponse( void ConformanceTestSuite::VerifyResponse(
const ConformanceRequestSetting& setting, const ConformanceRequestSetting& setting,
const string& equivalent_wire_format, const ConformanceResponse& response, const std::string& equivalent_wire_format,
bool need_report_success, bool require_same_wire_format) { const ConformanceResponse& response, bool need_report_success,
bool require_same_wire_format) {
std::unique_ptr<Message> test_message(setting.NewTestMessage()); std::unique_ptr<Message> test_message(setting.NewTestMessage());
const ConformanceRequest& request = setting.GetRequest(); const ConformanceRequest& request = setting.GetRequest();
const string& test_name = setting.GetTestName(); const std::string& test_name = setting.GetTestName();
ConformanceLevel level = setting.GetLevel(); ConformanceLevel level = setting.GetLevel();
std::unique_ptr<Message> reference_message = setting.NewTestMessage(); std::unique_ptr<Message> reference_message = setting.NewTestMessage();
@ -358,7 +363,7 @@ void ConformanceTestSuite::VerifyResponse(
DefaultFieldComparator field_comparator; DefaultFieldComparator field_comparator;
field_comparator.set_treat_nan_as_equal(true); field_comparator.set_treat_nan_as_equal(true);
differencer.set_field_comparator(&field_comparator); differencer.set_field_comparator(&field_comparator);
string differences; std::string differences;
differencer.ReportDifferencesToString(&differences); differencer.ReportDifferencesToString(&differences);
bool check = false; bool check = false;
@ -366,7 +371,7 @@ void ConformanceTestSuite::VerifyResponse(
if (require_same_wire_format) { if (require_same_wire_format) {
ABSL_DCHECK_EQ(response.result_case(), ABSL_DCHECK_EQ(response.result_case(),
ConformanceResponse::kProtobufPayload); ConformanceResponse::kProtobufPayload);
const string& protobuf_payload = response.protobuf_payload(); const std::string& protobuf_payload = response.protobuf_payload();
check = equivalent_wire_format == protobuf_payload; check = equivalent_wire_format == protobuf_payload;
differences = absl::StrCat("Expect: ", ToOctString(equivalent_wire_format), differences = absl::StrCat("Expect: ", ToOctString(equivalent_wire_format),
", but got: ", ToOctString(protobuf_payload)); ", but got: ", ToOctString(protobuf_payload));
@ -386,15 +391,15 @@ void ConformanceTestSuite::VerifyResponse(
} }
} }
void ConformanceTestSuite::RunTest(const string& test_name, void ConformanceTestSuite::RunTest(const std::string& test_name,
const ConformanceRequest& request, const ConformanceRequest& request,
ConformanceResponse* response) { ConformanceResponse* response) {
if (test_names_.insert(test_name).second == false) { if (test_names_.insert(test_name).second == false) {
ABSL_LOG(FATAL) << "Duplicated test name: " << test_name; ABSL_LOG(FATAL) << "Duplicated test name: " << test_name;
} }
string serialized_request; std::string serialized_request;
string serialized_response; std::string serialized_response;
request.SerializeToString(&serialized_request); request.SerializeToString(&serialized_request);
runner_->RunTest(test_name, serialized_request, &serialized_response); runner_->RunTest(test_name, serialized_request, &serialized_response);
@ -412,7 +417,7 @@ void ConformanceTestSuite::RunTest(const string& test_name,
} }
} }
string ConformanceTestSuite::WireFormatToString(WireFormat wire_format) { std::string ConformanceTestSuite::WireFormatToString(WireFormat wire_format) {
switch (wire_format) { switch (wire_format) {
case conformance::PROTOBUF: case conformance::PROTOBUF:
return "PROTOBUF"; return "PROTOBUF";
@ -435,7 +440,8 @@ void ConformanceTestSuite::AddExpectedFailedTest(const std::string& test_name) {
} }
bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner, bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
std::string* output, const string& filename, std::string* output,
const std::string& filename,
conformance::FailureSet* failure_list) { conformance::FailureSet* failure_list) {
runner_ = runner; runner_ = runner;
successes_ = 0; successes_ = 0;
@ -449,7 +455,7 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
failure_list_filename_ = filename; failure_list_filename_ = filename;
expected_to_fail_.clear(); expected_to_fail_.clear();
for (const string& failure : failure_list->failure()) { for (const std::string& failure : failure_list->failure()) {
AddExpectedFailedTest(failure); AddExpectedFailedTest(failure);
} }
RunSuiteImpl(); RunSuiteImpl();

@ -14,13 +14,15 @@
#ifndef CONFORMANCE_CONFORMANCE_TEST_H #ifndef CONFORMANCE_CONFORMANCE_TEST_H
#define CONFORMANCE_CONFORMANCE_TEST_H #define CONFORMANCE_CONFORMANCE_TEST_H
#include <functional> #include <cstddef>
#include <memory>
#include <string> #include <string>
#include <vector> #include <vector>
#include "google/protobuf/util/type_resolver.h" #include "google/protobuf/util/type_resolver.h"
#include "absl/container/btree_set.h" #include "absl/container/btree_set.h"
#include "absl/container/flat_hash_set.h" #include "absl/container/flat_hash_set.h"
#include "absl/strings/string_view.h"
#include "conformance/conformance.pb.h" #include "conformance/conformance.pb.h"
#include "google/protobuf/descriptor.h" #include "google/protobuf/descriptor.h"
#include "google/protobuf/wire_format_lite.h" #include "google/protobuf/wire_format_lite.h"
@ -204,7 +206,7 @@ class ConformanceTestSuite {
return request_; return request_;
} }
const ConformanceLevel GetLevel() const { return level_; } ConformanceLevel GetLevel() const { return level_; }
std::string ConformanceLevelToString(ConformanceLevel level) const; std::string ConformanceLevelToString(ConformanceLevel level) const;
@ -245,9 +247,9 @@ class ConformanceTestSuite {
bool need_report_success, bool require_same_wire_format); bool need_report_success, bool require_same_wire_format);
void TruncateDebugPayload(std::string* payload); void TruncateDebugPayload(std::string* payload);
const conformance::ConformanceRequest TruncateRequest( conformance::ConformanceRequest TruncateRequest(
const conformance::ConformanceRequest& request); const conformance::ConformanceRequest& request);
const conformance::ConformanceResponse TruncateResponse( conformance::ConformanceResponse TruncateResponse(
const conformance::ConformanceResponse& response); const conformance::ConformanceResponse& response);
void ReportSuccess(const std::string& test_name); void ReportSuccess(const std::string& test_name);

@ -7,7 +7,10 @@
#include "text_format_conformance_suite.h" #include "text_format_conformance_suite.h"
#include "google/protobuf/any.pb.h" #include <cstddef>
#include <string>
#include <vector>
#include "absl/log/absl_log.h" #include "absl/log/absl_log.h"
#include "absl/strings/str_cat.h" #include "absl/strings/str_cat.h"
#include "conformance_test.h" #include "conformance_test.h"
@ -20,12 +23,9 @@ namespace proto2_messages = protobuf_test_messages::proto2;
using conformance::ConformanceRequest; using conformance::ConformanceRequest;
using conformance::ConformanceResponse; using conformance::ConformanceResponse;
using conformance::WireFormat; using conformance::WireFormat;
using google::protobuf::Message;
using google::protobuf::TextFormat;
using proto2_messages::TestAllTypesProto2; using proto2_messages::TestAllTypesProto2;
using proto2_messages::UnknownToTestAllTypes; using proto2_messages::UnknownToTestAllTypes;
using protobuf_test_messages::proto3::TestAllTypesProto3; using protobuf_test_messages::proto3::TestAllTypesProto3;
using std::string;
namespace google { namespace google {
namespace protobuf { namespace protobuf {
@ -61,7 +61,7 @@ bool TextFormatConformanceTestSuite::ParseResponse(
const ConformanceRequestSetting& setting, Message* test_message) { const ConformanceRequestSetting& setting, Message* test_message) {
const ConformanceRequest& request = setting.GetRequest(); const ConformanceRequest& request = setting.GetRequest();
WireFormat requested_output = request.requested_output_format(); WireFormat requested_output = request.requested_output_format();
const string& test_name = setting.GetTestName(); const std::string& test_name = setting.GetTestName();
ConformanceLevel level = setting.GetLevel(); ConformanceLevel level = setting.GetLevel();
switch (response.result_case()) { switch (response.result_case()) {
@ -111,9 +111,9 @@ bool TextFormatConformanceTestSuite::ParseResponse(
return true; return true;
} }
void TextFormatConformanceTestSuite::ExpectParseFailure(const string& test_name, void TextFormatConformanceTestSuite::ExpectParseFailure(
ConformanceLevel level, const std::string& test_name, ConformanceLevel level,
const string& input) { const std::string& input) {
TestAllTypesProto3 prototype; TestAllTypesProto3 prototype;
// We don't expect output, but if the program erroneously accepts the protobuf // We don't expect output, but if the program erroneously accepts the protobuf
// we let it send its response as this. We must not leave it unspecified. // we let it send its response as this. We must not leave it unspecified.
@ -122,7 +122,7 @@ void TextFormatConformanceTestSuite::ExpectParseFailure(const string& test_name,
conformance::TEXT_FORMAT_TEST, prototype, test_name, input); conformance::TEXT_FORMAT_TEST, prototype, test_name, input);
const ConformanceRequest& request = setting.GetRequest(); const ConformanceRequest& request = setting.GetRequest();
ConformanceResponse response; ConformanceResponse response;
string effective_test_name = std::string effective_test_name =
absl::StrCat(setting.ConformanceLevelToString(level), absl::StrCat(setting.ConformanceLevelToString(level),
".Proto3.TextFormatInput.", test_name); ".Proto3.TextFormatInput.", test_name);
@ -138,36 +138,38 @@ void TextFormatConformanceTestSuite::ExpectParseFailure(const string& test_name,
} }
void TextFormatConformanceTestSuite::RunValidTextFormatTest( void TextFormatConformanceTestSuite::RunValidTextFormatTest(
const string& test_name, ConformanceLevel level, const string& input_text) { const std::string& test_name, ConformanceLevel level,
const std::string& input_text) {
TestAllTypesProto3 prototype; TestAllTypesProto3 prototype;
RunValidTextFormatTestWithMessage(test_name, level, input_text, prototype); RunValidTextFormatTestWithMessage(test_name, level, input_text, prototype);
} }
void TextFormatConformanceTestSuite::RunValidTextFormatTestProto2( void TextFormatConformanceTestSuite::RunValidTextFormatTestProto2(
const string& test_name, ConformanceLevel level, const string& input_text) { const std::string& test_name, ConformanceLevel level,
const std::string& input_text) {
TestAllTypesProto2 prototype; TestAllTypesProto2 prototype;
RunValidTextFormatTestWithMessage(test_name, level, input_text, prototype); RunValidTextFormatTestWithMessage(test_name, level, input_text, prototype);
} }
void TextFormatConformanceTestSuite::RunValidTextFormatTestWithExpected( void TextFormatConformanceTestSuite::RunValidTextFormatTestWithExpected(
const string& test_name, ConformanceLevel level, const string& input_text, const std::string& test_name, ConformanceLevel level,
const string& expected_text) { const std::string& input_text, const std::string& expected_text) {
TestAllTypesProto3 prototype; TestAllTypesProto3 prototype;
RunValidTextFormatTestWithMessage(test_name, level, input_text, expected_text, RunValidTextFormatTestWithMessage(test_name, level, input_text, expected_text,
prototype); prototype);
} }
void TextFormatConformanceTestSuite::RunValidTextFormatTestProto2WithExpected( void TextFormatConformanceTestSuite::RunValidTextFormatTestProto2WithExpected(
const string& test_name, ConformanceLevel level, const string& input_text, const std::string& test_name, ConformanceLevel level,
const string& expected_text) { const std::string& input_text, const std::string& expected_text) {
TestAllTypesProto2 prototype; TestAllTypesProto2 prototype;
RunValidTextFormatTestWithMessage(test_name, level, input_text, expected_text, RunValidTextFormatTestWithMessage(test_name, level, input_text, expected_text,
prototype); prototype);
} }
void TextFormatConformanceTestSuite::RunValidTextFormatTestWithMessage( void TextFormatConformanceTestSuite::RunValidTextFormatTestWithMessage(
const string& test_name, ConformanceLevel level, const string& input_text, const std::string& test_name, ConformanceLevel level,
const Message& prototype) { const std::string& input_text, const Message& prototype) {
ConformanceRequestSetting setting1( ConformanceRequestSetting setting1(
level, conformance::TEXT_FORMAT, conformance::PROTOBUF, level, conformance::TEXT_FORMAT, conformance::PROTOBUF,
conformance::TEXT_FORMAT_TEST, prototype, test_name, input_text); conformance::TEXT_FORMAT_TEST, prototype, test_name, input_text);
@ -179,8 +181,9 @@ void TextFormatConformanceTestSuite::RunValidTextFormatTestWithMessage(
} }
void TextFormatConformanceTestSuite::RunValidTextFormatTestWithMessage( void TextFormatConformanceTestSuite::RunValidTextFormatTestWithMessage(
const string& test_name, ConformanceLevel level, const string& input_text, const std::string& test_name, ConformanceLevel level,
const string& expected_text, const Message& prototype) { const std::string& input_text, const std::string& expected_text,
const Message& prototype) {
ConformanceRequestSetting setting1( ConformanceRequestSetting setting1(
level, conformance::TEXT_FORMAT, conformance::PROTOBUF, level, conformance::TEXT_FORMAT, conformance::PROTOBUF,
conformance::TEXT_FORMAT_TEST, prototype, test_name, input_text); conformance::TEXT_FORMAT_TEST, prototype, test_name, input_text);
@ -192,8 +195,8 @@ void TextFormatConformanceTestSuite::RunValidTextFormatTestWithMessage(
} }
void TextFormatConformanceTestSuite::RunValidUnknownTextFormatTest( void TextFormatConformanceTestSuite::RunValidUnknownTextFormatTest(
const string& test_name, const Message& message) { const std::string& test_name, const Message& message) {
string serialized_input; std::string serialized_input;
message.SerializeToString(&serialized_input); message.SerializeToString(&serialized_input);
TestAllTypesProto3 prototype; TestAllTypesProto3 prototype;
ConformanceRequestSetting setting1( ConformanceRequestSetting setting1(
@ -509,16 +512,16 @@ void TextFormatConformanceTestSuite::RunTextFormatPerformanceTests() {
// This is currently considered valid input by some languages but not others // This is currently considered valid input by some languages but not others
void TextFormatConformanceTestSuite:: void TextFormatConformanceTestSuite::
TestTextFormatPerformanceMergeMessageWithRepeatedField( TestTextFormatPerformanceMergeMessageWithRepeatedField(
const string& test_type_name, const string& message_field) { const std::string& test_type_name, const std::string& message_field) {
string recursive_message = std::string recursive_message =
absl::StrCat("recursive_message { ", message_field, " }"); absl::StrCat("recursive_message { ", message_field, " }");
string input; std::string input;
for (size_t i = 0; i < kPerformanceRepeatCount; i++) { for (size_t i = 0; i < kPerformanceRepeatCount; i++) {
absl::StrAppend(&input, recursive_message); absl::StrAppend(&input, recursive_message);
} }
string expected = "recursive_message { "; std::string expected = "recursive_message { ";
for (size_t i = 0; i < kPerformanceRepeatCount; i++) { for (size_t i = 0; i < kPerformanceRepeatCount; i++) {
absl::StrAppend(&expected, message_field, " "); absl::StrAppend(&expected, message_field, " ");
} }

@ -8,7 +8,10 @@
#ifndef TEXT_FORMAT_CONFORMANCE_SUITE_H_ #ifndef TEXT_FORMAT_CONFORMANCE_SUITE_H_
#define TEXT_FORMAT_CONFORMANCE_SUITE_H_ #define TEXT_FORMAT_CONFORMANCE_SUITE_H_
#include <string>
#include "conformance_test.h" #include "conformance_test.h"
#include "google/protobuf/message.h"
namespace google { namespace google {
namespace protobuf { namespace protobuf {

Loading…
Cancel
Save