option cpp_opmessage = true;
option cpp_defines = "SELFTEST";

// This tests that the order for constructor and Construct() methods are
// correct when using a mixture of required and optional fields.
message TestOrder
{
    required int32 size = 1 [default=5];
    required bytes data = 2;
    optional string name = 3;
    required string orderType = 4;
    required string kind = 5;
}

// This tests that the order for constructor and Construct() methods are
// correct when using a mixture of required and optional fields.
message TestOpStringOrder
{
    required int32 size = 1 [default=5];
    required bytes data = 2;
    optional string name = 3;
    required string orderType = 4 [cpp_datatype = OpString];
    required string kind = 5 [cpp_datatype = OpString];
}
