syntax = "proto3";


message Test1 {
  int32 a = 1;
}
message Test2 {
  string b = 2;
}
message Test3 {
  Test1 c = 3;
}

message Test4 {
  string d = 4;
  repeated int32 e = 5;
}

message MyTestDouble {
  double a = 1;
  double b = 2;
  double c = 3;
}

message MyTestFloat {
  float a = 1;
  float b = 2;
  float c = 3;
  float d = 4;
  float e = 5;
}

message MyTestInt32 {
  int32 a = 1;
  repeated int32 b = 2;
}
message MyTestInt64 {
  int64 a = 1;
  repeated int64 b = 2;
}
message MyTestUint32 {
  uint32 a = 1;
  repeated uint32 b = 2;
}
message MyTestUint64 {
  uint64 a = 1;
  repeated uint64 b = 2;
}
message MyTestEnum {
  enum Color {
    Red = 0;
    Green = 1;
    Blue = 2;
    Enum127 = 127;
    Enum128 = 128;
  }
  Color color = 6;
}

message MyTestRepeatedMessage {
  repeated MyTestFloat fs = 1;
}

message MyTestSint32 {
  sint32 a = 1;
}
message MyTestSint64 {
  sint64 b = 2;
}
message MyTestMap {
  map<string, int32> e = 3;
}
message MyTestFixed32 {
  fixed32 a = 1;
  repeated fixed32 b = 2;
}
message MyTestFixed64 {
  fixed64 a = 1;
  repeated fixed64 b = 2;
}
message MyTestSfixed32 {
  sfixed32 a = 1;
  repeated sfixed32 b = 2;
}
message MyTestSfixed64 {
  sfixed64 a = 1;
  repeated sfixed64 b = 2;
}

message MyTestFieldNumberRandom {
  int32 a = 6;
  sint64 b = 3;
  string c = 4;
  double d = 5;
  float e = 1;
  repeated fixed32 f = 128;
}

message MyTestAll {
  double a = 1;
  float b = 2;
  int32 c = 3;
  int64 d = 4;
  uint32 e = 5;
  uint64 f = 6;
  sint32 g = 7;
  sint64 h = 8;
  fixed32 i = 9;
  fixed64 j = 10;
  sfixed32 k = 11;
  sfixed64 l = 12;
  bool m = 13;
  string n = 14;
  bytes o = 15;
}
message SubMessageForOneof {
  bool ok = 1;
}
message SampleMessageOneof {
  oneof test_oneof {
    int32 b = 10;
    int32 a = 8;

    string name = 4;
    SubMessageForOneof sub_message = 9;
  }
}