// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc.  All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd

edition = "2023";

package proto3_preserve_unknown_enum_unittest;

// Treat all fields as implicit present by default (proto3 behavior).
option features.field_presence = IMPLICIT;
option objc_class_prefix = "UnknownEnums";
option csharp_namespace = "Google.Protobuf.TestProtos";

enum MyEnum {
  FOO = 0;
  BAR = 1;
  BAZ = 2;
}

enum MyEnumPlusExtra {
  E_FOO = 0;
  E_BAR = 1;
  E_BAZ = 2;
  E_EXTRA = 3;
}

message MyMessage {
  MyEnum e = 1;
  repeated MyEnum repeated_e = 2;
  repeated MyEnum repeated_packed_e = 3;
  repeated MyEnumPlusExtra repeated_packed_unexpected_e = 4;  // not packed
  oneof o {
    MyEnum oneof_e_1 = 5;
    MyEnum oneof_e_2 = 6;
  }
}

message MyMessagePlusExtra {
  MyEnumPlusExtra e = 1;
  repeated MyEnumPlusExtra repeated_e = 2;
  repeated MyEnumPlusExtra repeated_packed_e = 3;
  repeated MyEnumPlusExtra repeated_packed_unexpected_e = 4;
  oneof o {
    MyEnumPlusExtra oneof_e_1 = 5;
    MyEnumPlusExtra oneof_e_2 = 6;
  }
}
