blob: 7a06fa33010018702c9bc2899816b7779a0cba3e [file]
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. 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
syntax = "proto3";
// These proto descriptors have at one time been reported as an issue or defect.
// They are kept here to replicate the issue, and continue to verify the fix.
// Issue: Non-"Google.Protobuffers" namespace will ensure that protobuffer
// library types are qualified
package unittest_issues;
import "google/protobuf/struct.proto";
option csharp_namespace = "UnitTest.Issues.TestProtos";
// Issue 307: when generating doubly-nested types, any references
// should be of the form A.Types.B.Types.C.
message Issue307 {
message NestedOnce {
message NestedTwice {}
}
}
// Old issue 13:
// http://code.google.com/p/protobuf-csharp-port/issues/detail?id=13 New issue
// 309: https://github.com/protocolbuffers/protobuf/issues/309
// message A {
// optional int32 _A = 1;
// }
// message B {
// optional int32 B_ = 1;
// }
// message AB {
// optional int32 a_b = 1;
// }
// Similar issue with numeric names
// Java code failed too, so probably best for this to be a restriction.
// See https://github.com/protocolbuffers/protobuf/issues/308
// message NumberField {
// optional int32 _01 = 1;
// }
// issue 19 - negative enum values
enum NegativeEnum {
NEGATIVE_ENUM_ZERO = 0;
FiveBelow = -5;
MinusOne = -1;
}
message NegativeEnumMessage {
NegativeEnum value = 1;
repeated NegativeEnum values = 2 [packed = false];
repeated NegativeEnum packed_values = 3 [packed = true];
}
// Issue 21: http://code.google.com/p/protobuf-csharp-port/issues/detail?id=21
// Decorate fields with [deprecated=true] as [System.Obsolete]
message DeprecatedChild {
option deprecated = true;
}
enum DeprecatedEnum {
option deprecated = true;
DEPRECATED_ZERO = 0 [deprecated = true];
one = 1;
}
message DeprecatedFieldsMessage {
int32 PrimitiveValue = 1 [deprecated = true];
repeated int32 PrimitiveArray = 2 [deprecated = true];
DeprecatedChild MessageValue = 3 [deprecated = true];
repeated DeprecatedChild MessageArray = 4 [deprecated = true];
DeprecatedEnum EnumValue = 5 [deprecated = true];
repeated DeprecatedEnum EnumArray = 6 [deprecated = true];
}
// Issue 45: http://code.google.com/p/protobuf-csharp-port/issues/detail?id=45
message ItemField {
int32 item = 1;
}
message ReservedNames {
// Force a nested type called Types
message SomeNestedType {}
int32 types = 1;
int32 descriptor = 2;
}
message TestJsonFieldOrdering {
// These fields are deliberately not declared in numeric
// order, and the oneof fields aren't contiguous either.
// This allows for reasonably robust tests of JSON output
// ordering.
// TestFieldOrderings in unittest_proto3.proto is similar,
// but doesn't include oneofs.
// TODO: Consider adding oneofs to TestFieldOrderings, although
// that will require fixing other tests in multiple platforms.
// Alternatively, consider just adding this to
// unittest_proto3.proto if multiple platforms want it.
int32 plain_int32 = 4;
oneof o1 {
string o1_string = 2;
int32 o1_int32 = 5;
}
string plain_string = 1;
oneof o2 {
int32 o2_int32 = 6;
string o2_string = 3;
}
}
message TestJsonName {
// Message for testing the effects for of the json_name option
string name = 1;
string description = 2 [json_name = "desc"];
string guid = 3 [json_name = "exid"];
}
// Issue 3200: When merging two messages which use the same
// oneof case, which is itself a message type, the submessages should
// be merged.
message OneofMerging {
message Nested {
int32 x = 1;
int32 y = 2;
}
oneof value {
string text = 1;
Nested nested = 2;
}
}
message NullValueOutsideStruct {
oneof value {
string string_value = 1;
google.protobuf.NullValue null_value = 2;
}
}
message NullValueNotInOneof {
google.protobuf.NullValue null_value = 2;
}
message MixedRegularAndOptional {
string regular_field = 1;
optional string optional_field = 2;
}
message OneofWithNoneField {
oneof test {
string x = 1;
string none = 2;
}
}
message OneofWithNoneName {
oneof none {
string x = 1;
string y = 2;
}
}
// Issue 8810
message DisambiguateCommonMembers {
int32 disambiguate_common_members = 1;
int32 types = 2;
int32 descriptor = 3;
int32 equals = 4;
int32 to_string = 5;
int32 get_hash_code = 6;
int32 write_to = 7;
int32 clone = 8;
int32 calculate_size = 9;
int32 merge_from = 10;
int32 on_construction = 11;
int32 parser = 12;
}
message Issue11987Message {
int32 a = 1 [json_name = 'b'];
int32 b = 2 [json_name = 'a'];
int32 c = 3 [json_name = 'd'];
}
// Issue 26391
message TestPresenceBits {
optional int32 field1 = 1;
optional int32 field2 = 2;
optional int32 field3 = 3;
optional int32 field4 = 4;
optional int32 field5 = 5;
optional int32 field6 = 6;
optional int32 field7 = 7;
optional int32 field8 = 8;
optional int32 field9 = 9;
optional int32 field10 = 10;
optional int32 field11 = 11;
optional int32 field12 = 12;
optional int32 field13 = 13;
optional int32 field14 = 14;
optional int32 field15 = 15;
optional int32 field16 = 16;
optional int32 field17 = 17;
optional int32 field18 = 18;
optional int32 field19 = 19;
optional int32 field20 = 20;
optional int32 field21 = 21;
optional int32 field22 = 22;
optional int32 field23 = 23;
optional int32 field24 = 24;
optional int32 field25 = 25;
optional int32 field26 = 26;
optional int32 field27 = 27;
optional int32 field28 = 28;
optional int32 field29 = 29;
optional int32 field30 = 30;
optional int32 field31 = 31;
optional int32 field32 = 32;
}