syntax = "proto3";

package A.B.C;

message TestMessage {
  int32 optional_int32 = 1;
  int64 optional_int64 = 2;
  uint32 optional_uint32 = 3;
  uint64 optional_uint64 = 4;
  bool optional_bool = 5;
  double optional_double = 6;
  float optional_float = 7;
  string optional_string = 8;
  bytes optional_bytes = 9;
  TestEnum optional_enum = 10;
  TestMessage optional_msg = 11;

  repeated int32 repeated_int32 = 21;
  repeated int64 repeated_int64 = 22;
  repeated uint32 repeated_uint32 = 23;
  repeated uint64 repeated_uint64 = 24;
  repeated bool repeated_bool = 25;
  repeated double repeated_double = 26;
  repeated float repeated_float = 27;
  repeated string repeated_string = 28;
  repeated bytes repeated_bytes = 29;
  repeated TestEnum repeated_enum = 30;
  repeated TestMessage repeated_msg = 31;

  oneof my_oneof {
    int32 oneof_int32 = 41;
    int64 oneof_int64 = 42;
    uint32 oneof_uint32 = 43;
    uint64 oneof_uint64 = 44;
    bool oneof_bool = 45;
    double oneof_double = 46;
    float oneof_float = 47;
    string oneof_string = 48;
    bytes oneof_bytes = 49;
    TestEnum oneof_enum = 50;
    TestMessage oneof_msg = 51;
  }

  map<int32, string> map_int32_string = 61;
  map<int64, string> map_int64_string = 62;
  map<uint32, string> map_uint32_string = 63;
  map<uint64, string> map_uint64_string = 64;
  map<bool, string> map_bool_string = 65;
  map<string, string> map_string_string = 66;
  map<string, TestMessage> map_string_msg = 67;
  map<string, TestEnum> map_string_enum = 68;
  map<string, int32> map_string_int32 = 69;
  map<string, bool> map_string_bool = 70;

  message NestedMessage {
    int32 foo = 1;
  }

  NestedMessage nested_message = 80;
}

enum TestEnum {
  Default = 0;
  A = 1;
  B = 2;
  C = 3;
}
