blob: 98c1a302b6303a6a9bc0148b0b839ea328778cbc [file] [log] [blame]
#ifndef GOOGLE_PROTOBUF_CONFORMANCE_NAMING_H__
#define GOOGLE_PROTOBUF_CONFORMANCE_NAMING_H__
#include <string>
#include "google/protobuf/descriptor.pb.h"
#include "absl/log/absl_log.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/string_view.h"
#include "conformance/conformance.pb.h"
#include "google/protobuf/descriptor.h"
#include "google/protobuf/descriptor_legacy.h"
// This file contains functions for generating test names and other identifiers
// for conformance tests.
namespace google {
namespace protobuf {
namespace conformance {
// Returns the edition identifier for the given message. This is used to
// generate test names from parameterized descriptors.
inline std::string GetEditionIdentifier(const Descriptor& message) {
switch (FileDescriptorLegacy(message.file()).edition()) {
case Edition::EDITION_PROTO3:
return "Proto3";
case Edition::EDITION_PROTO2:
return "Proto2";
default: {
std::string id = "Editions";
if (message.name() == "TestAllTypesProto2") {
absl::StrAppend(&id, "_Proto2");
} else if (message.name() == "TestAllTypesProto3") {
absl::StrAppend(&id, "_Proto3");
}
return id;
}
}
}
// Returns the format identifier for the given wire format. This is used to
// generate test names from parameterized wire formats.
inline absl::string_view GetFormatIdentifier(::conformance::WireFormat format) {
switch (format) {
case ::conformance::PROTOBUF:
return "Protobuf";
case ::conformance::JSON:
return "Json";
case ::conformance::TEXT_FORMAT:
return "TextFormat";
default:
ABSL_LOG(FATAL) << "Unknown wire format";
}
return "";
}
} // namespace conformance
} // namespace protobuf
} // namespace google
#endif // GOOGLE_PROTOBUF_CONFORMANCE_NAMING_H__