// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc.  All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

// LINT: ALLOW_GROUPS

syntax = "proto2";


package jspb.test;

// These types are borrowed from `unittest.proto` in the protobuf tree. We want
// to ensure that the binary-format support will handle all field types
// properly.
message TestAllTypes {
  optional    int32 optional_int32    =  1;
  optional    int64 optional_int64    =  2;
  optional   uint32 optional_uint32   =  3;
  optional   uint64 optional_uint64   =  4;
  optional   sint32 optional_sint32   =  5;
  optional   sint64 optional_sint64   =  6;
  optional  fixed32 optional_fixed32  =  7;
  optional  fixed64 optional_fixed64  =  8;
  optional sfixed32 optional_sfixed32 =  9;
  optional sfixed64 optional_sfixed64 = 10;
  optional    float optional_float    = 11;
  optional   double optional_double   = 12;
  optional     bool optional_bool     = 13;
  optional   string optional_string   = 14;
  optional    bytes optional_bytes    = 15;
  optional group OptionalGroup = 16 {
    optional int32 a = 17;
  }

  optional ForeignMessage                       optional_foreign_message = 19;
  optional ForeignEnum                          optional_foreign_enum    = 22;

  // Repeated
  repeated    int32 repeated_int32    = 31;
  repeated    int64 repeated_int64    = 32;
  repeated   uint32 repeated_uint32   = 33;
  repeated   uint64 repeated_uint64   = 34;
  repeated   sint32 repeated_sint32   = 35;
  repeated   sint64 repeated_sint64   = 36;
  repeated  fixed32 repeated_fixed32  = 37;
  repeated  fixed64 repeated_fixed64  = 38;
  repeated sfixed32 repeated_sfixed32 = 39;
  repeated sfixed64 repeated_sfixed64 = 40;
  repeated    float repeated_float    = 41;
  repeated   double repeated_double   = 42;
  repeated     bool repeated_bool     = 43;
  repeated   string repeated_string   = 44;
  repeated    bytes repeated_bytes    = 45;

  repeated group RepeatedGroup = 46 {
    optional int32 a = 47;
  }

  repeated ForeignMessage                       repeated_foreign_message = 49;
  repeated ForeignEnum                          repeated_foreign_enum    = 52;

  // Packed repeated
  repeated    int32 packed_repeated_int32    = 61 [packed=true];
  repeated    int64 packed_repeated_int64    = 62 [packed=true];
  repeated   uint32 packed_repeated_uint32   = 63 [packed=true];
  repeated   uint64 packed_repeated_uint64   = 64 [packed=true];
  repeated   sint32 packed_repeated_sint32   = 65 [packed=true];
  repeated   sint64 packed_repeated_sint64   = 66 [packed=true];
  repeated  fixed32 packed_repeated_fixed32  = 67 [packed=true];
  repeated  fixed64 packed_repeated_fixed64  = 68 [packed=true];
  repeated sfixed32 packed_repeated_sfixed32 = 69 [packed=true];
  repeated sfixed64 packed_repeated_sfixed64 = 70 [packed=true];
  repeated    float packed_repeated_float    = 71 [packed=true];
  repeated   double packed_repeated_double   = 72 [packed=true];
  repeated     bool packed_repeated_bool     = 73 [packed=true];

  oneof oneof_field {
    uint32 oneof_uint32 = 111;
    ForeignMessage oneof_foreign_message = 112;
    string oneof_string = 113;
    bytes oneof_bytes = 114;
  }

}

message ForeignMessage {
  optional int32 c = 1;
}

enum ForeignEnum {
  FOREIGN_FOO = 4;
  FOREIGN_BAR = 5;
  FOREIGN_BAZ = 6;
}

message TestExtendable {
  extensions 1 to max;
}

message ExtendsWithMessage {
  extend TestExtendable {
    optional ExtendsWithMessage optional_extension = 19;
    repeated ExtendsWithMessage repeated_extension = 49;
  }
  optional int32 foo = 1;
}

extend TestExtendable {
  optional    int32 extend_optional_int32    =  1;
  optional    int64 extend_optional_int64    =  2;
  optional   uint32 extend_optional_uint32   =  3;
  optional   uint64 extend_optional_uint64   =  4;
  optional   sint32 extend_optional_sint32   =  5;
  optional   sint64 extend_optional_sint64   =  6;
  optional  fixed32 extend_optional_fixed32  =  7;
  optional  fixed64 extend_optional_fixed64  =  8;
  optional sfixed32 extend_optional_sfixed32 =  9;
  optional sfixed64 extend_optional_sfixed64 = 10;
  optional    float extend_optional_float    = 11;
  optional   double extend_optional_double   = 12;
  optional     bool extend_optional_bool     = 13;
  optional   string extend_optional_string   = 14;
  optional    bytes extend_optional_bytes    = 15;
  optional ForeignEnum extend_optional_foreign_enum    = 22;

  repeated    int32 extend_repeated_int32    = 31;
  repeated    int64 extend_repeated_int64    = 32;
  repeated   uint32 extend_repeated_uint32   = 33;
  repeated   uint64 extend_repeated_uint64   = 34;
  repeated   sint32 extend_repeated_sint32   = 35;
  repeated   sint64 extend_repeated_sint64   = 36;
  repeated  fixed32 extend_repeated_fixed32  = 37;
  repeated  fixed64 extend_repeated_fixed64  = 38;
  repeated sfixed32 extend_repeated_sfixed32 = 39;
  repeated sfixed64 extend_repeated_sfixed64 = 40;
  repeated    float extend_repeated_float    = 41;
  repeated   double extend_repeated_double   = 42;
  repeated     bool extend_repeated_bool     = 43;
  repeated   string extend_repeated_string   = 44;
  repeated    bytes extend_repeated_bytes    = 45;
  repeated ForeignEnum extend_repeated_foreign_enum    = 52;

  repeated    int32 extend_packed_repeated_int32    = 61 [packed=true];
  repeated    int64 extend_packed_repeated_int64    = 62 [packed=true];
  repeated   uint32 extend_packed_repeated_uint32   = 63 [packed=true];
  repeated   uint64 extend_packed_repeated_uint64   = 64 [packed=true];
  repeated   sint32 extend_packed_repeated_sint32   = 65 [packed=true];
  repeated   sint64 extend_packed_repeated_sint64   = 66 [packed=true];
  repeated  fixed32 extend_packed_repeated_fixed32  = 67 [packed=true];
  repeated  fixed64 extend_packed_repeated_fixed64  = 68 [packed=true];
  repeated sfixed32 extend_packed_repeated_sfixed32 = 69 [packed=true];
  repeated sfixed64 extend_packed_repeated_sfixed64 = 70 [packed=true];
  repeated    float extend_packed_repeated_float    = 71 [packed=true];
  repeated   double extend_packed_repeated_double   = 72 [packed=true];
  repeated     bool extend_packed_repeated_bool     = 73 [packed=true];
  repeated ForeignEnum extend_packed_repeated_foreign_enum    = 82
      [packed=true];

}

message TestMapFields {
  map<string, string> map_string_string = 1;
  map<string, int32> map_string_int32 = 2;
  map<string, int64> map_string_int64 = 3;
  map<string, bool> map_string_bool = 4;
  map<string, double> map_string_double = 5;
  map<string, MapValueEnum> map_string_enum = 6;
  map<string, MapValueMessage> map_string_msg = 7;

  map<int32, string> map_int32_string = 8;
  map<int64, string> map_int64_string = 9;
  map<bool, string> map_bool_string = 10;

  optional TestMapFields test_map_fields = 11;
  map<string, TestMapFields> map_string_testmapfields = 12;
}

enum MapValueEnum {
  MAP_VALUE_FOO = 0;
  MAP_VALUE_BAR = 1;
  MAP_VALUE_BAZ = 2;
}

message MapValueMessage {
  optional int32 foo = 1;
}
