// 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

syntax = "proto2";

package objc.protobuf.tests.options;

option objc_class_prefix = "GPBTEST";

// Verify that enum types and values get the prefix.
message TestObjcProtoPrefixMessage {
}

// Verify that messages that don't already have the prefix get a prefix.
enum TestObjcProtoPrefixEnum {
  value = 1;
}

// Verify that messages that already have a prefix aren't prefixed twice.
message GPBTESTTestHasAPrefixMessage {
}

// Verify that enums that already have a prefix aren't prefixed twice.
enum GPBTESTTestHasAPrefixEnum {
  valueB = 1;
}

// Verify that classes that have the prefix followed by a lowercase
// letter DO get the prefix.
message GPBTESTshouldGetAPrefixMessage {
}

// Verify that classes named the same as prefixes are prefixed.
message GPBTEST {
}

// Tests that lookup deals with prefix.
message PrefixedParentMessage {
  message Child {
  }
}
