| 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 | 
 | option csharp_namespace = "UnitTest.Issues.TestProtos"; | 
 |  | 
 | package unittest_issues; | 
 |  | 
 | // 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 { | 
 | } | 
 |  | 
 | enum DeprecatedEnum { | 
 |     DEPRECATED_ZERO = 0; | 
 |     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; | 
 |   } | 
 | } |