| // Protocol Buffers - Google's data interchange format | |
| // Copyright 2025 Google LLC. All rights reserved. | |
| // | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file or at | |
| // https://developers.google.com/open-source/licenses/bsd | |
| #ifndef GOOGLE_PROTOBUF_CONFORMANCE_BINARY_TEST_UTIL_H__ | |
| #define GOOGLE_PROTOBUF_CONFORMANCE_BINARY_TEST_UTIL_H__ | |
| #include "absl/types/span.h" | |
| #include "google/protobuf/descriptor.h" | |
| // Helpers shared by the gtest-based binary conformance tests: the field-type | |
| // tables the tests are parameterized over. Deliberately gtest-free. | |
| namespace google { | |
| namespace protobuf { | |
| namespace conformance { | |
| // Every field type except TYPE_GROUP (the 17 types the test messages have | |
| // singular, repeated, packed and unpacked fields of), in the order the legacy | |
| // valid-data tests ran them: DOUBLE, FLOAT, INT64, UINT64, INT32, UINT32, | |
| // FIXED64, FIXED32, SFIXED64, SFIXED32, BOOL, SINT32, SINT64, STRING, BYTES, | |
| // ENUM, MESSAGE. This is the type axis of every test parameterized over "all | |
| // field types" (premature EOF, valid data, ...). | |
| absl::Span<const FieldDescriptor::Type> AllFieldTypesExceptGroup(); | |
| // The subset of AllFieldTypesExceptGroup() that can be packed | |
| // (FieldDescriptor::IsTypePackable(): every numeric type, BOOL and ENUM), in | |
| // the same order. | |
| absl::Span<const FieldDescriptor::Type> PackableFieldTypes(); | |
| // The subset of AllFieldTypesExceptGroup() encoded length-delimited, i.e. the | |
| // non-packable ones: STRING, BYTES, MESSAGE, in the same order. | |
| absl::Span<const FieldDescriptor::Type> LengthDelimitedFieldTypes(); | |
| } // namespace conformance | |
| } // namespace protobuf | |
| } // namespace google | |
| #endif // GOOGLE_PROTOBUF_CONFORMANCE_BINARY_TEST_UTIL_H__ |