1syntax = "proto2"; 2 3package protos_generator.test; 4 5import "protos_generator/tests/child_model.proto"; 6 7message TestModelContainer { 8 repeated TestModel models = 1; 9 optional ChildModel3 proto_3_child = 2; 10} 11 12message TestModel { 13 optional int32 value = 1; 14 repeated int32 value_array = 2; // _UPB_MODE_ARRAY 15 repeated int32 value_packed_array = 3 16 [packed = true]; // _UPB_MODE_ARRAY | _UPB_MODE_IS_PACKED 17 repeated int32 value_deprec = 4 [deprecated = true]; 18 optional string str1 = 115; 19 optional bool b1 = 9; 20 optional bool b2 = 10; 21 optional string str2 = 50; 22 optional string str3 = 11; 23 optional float optional_float = 14; 24 optional double optional_double = 15; 25 optional int64 optional_int64 = 16; 26 optional uint32 optional_uint32 = 17; 27 optional uint64 optional_uint64 = 18; 28 optional sint32 optional_sint32 = 19; 29 optional sint64 optional_sint64 = 20; 30 optional fixed32 optional_fixed32 = 21; 31 optional fixed64 optional_fixed64 = 22; 32 optional sfixed32 optional_sfixed32 = 23; 33 optional sfixed64 optional_sfixed64 = 24; 34 repeated int64 repeated_int64 = 25; 35 repeated uint64 repeated_uint64 = 26; 36 repeated fixed64 repeated_fixed64 = 27; 37 repeated sfixed64 repeated_sfixed64 = 28; 38 repeated bool repeated_bool = 29; 39 repeated string repeated_string = 35; 40 optional bytes optional_bytes = 36; 41 message NestedChild { 42 optional string nested_child_name = 211; 43 } 44 optional NestedChild nested_child_1 = 212; 45 optional ChildModel1 child_model_1 = 222; 46 repeated ChildModel1 child_model_2 = 223; 47 optional ChildModel1 bar = 224; 48 oneof child_oneof1 { 49 string oneof_member1 = 98; 50 bool oneof_member2 = 99; 51 } 52 optional int32 int_value_with_default = 31 53 [default = 65]; // Not supported yet 54 optional string string_value_with_default = 32 55 [default = "hello"]; // Not supported yet 56 optional float float_value_with_default = 33 [default = inf]; 57 optional float double_value_with_default = 34 [default = -inf]; 58 59 map<int32, ChildModel1> child_map = 225; 60 optional TestModel recursive_child = 226; 61 map<string, ChildModel1> child_str_map = 227; 62 map<string, int32> str_to_int_map = 228; 63 map<string, string> str_to_str_map = 229; 64 65 extend TestAnnotation { 66 optional OtherExtension in_message_ext = 15000; 67 } 68 69 enum Category { 70 IMAGES = 5; 71 NEWS = 6; 72 VIDEO = 7; 73 RADIO = 8 [deprecated = true]; 74 } 75 optional Category category = 37; 76 77 // keyword collisions (double, template, ...) 78 oneof type { 79 string string = 230; 80 int64 int64 = 231; 81 double double = 232; 82 } 83 optional string template = 233; 84 optional string msg = 234; 85 optional string arena = 235; 86 87 // Tests publicly imported enum. 88 optional TestEnum imported_enum = 238; 89 90 optional string phase = 239; 91 optional bool clear_phase = 240; 92 93 optional string doc_id = 241; 94 optional bool set_doc_id = 242; 95 96 extensions 10000 to max; 97} 98 99// Old version with fewer fields to test backward/forward compatibility. 100message TestModelContainerV1 { 101 repeated TestModelV1 models = 1; 102} 103 104message TestModelV1 { 105 optional int32 value = 1; 106 repeated int32 value2 = 2; 107 repeated int32 value3 = 3 [packed = true]; 108 repeated int32 value4 = 4 [deprecated = true]; 109 optional bool b1 = 9; 110 optional bool b2 = 10; 111 optional string str2 = 50; 112} 113 114enum PrimaryColors { 115 RED = 1; 116 GREEN = 2; 117 BLUE = 3; 118} 119 120// TestModel extension. 121message ThemeExtension { 122 extend TestModel { 123 optional ThemeExtension theme_extension = 12003; 124 } 125 optional string ext_name = 1; 126 optional bool ext_bool = 2; 127} 128 129extend TestModel { 130 optional ThemeExtension theme = 12001; 131} 132 133message OtherExtension { 134 optional string ext2_name = 1; 135} 136 137extend TestModel { 138 optional OtherExtension other_ext = 12002; 139} 140 141message TestAnnotation { 142 extensions 10000 to max; 143} 144 145message TestMessageHasEnum { 146 optional EnumDeclaredAfterMessage enum_declared_after_message = 1; 147} 148 149enum EnumDeclaredAfterMessage { 150 ZERO = 0; 151 ONE = 1; 152 TWO = 2; 153 THREE = 3; 154} 155