|  | 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; | 
|  |  | 
|  | import "google/protobuf/struct.proto"; | 
|  |  | 
|  | // 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; | 
|  | } | 
|  | } | 
|  |  | 
|  | 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; | 
|  | } |