syntax = "proto3";

package tests.harness.cases;
option go_package = "github.com/envoyproxy/protoc-gen-validate/tests/harness/cases/go;cases";
import "validate/validate.proto";

message BytesNone        { bytes val = 1; }
message BytesConst       { bytes val = 1 [(validate.rules).bytes.const = "foo"]; }
message BytesIn          { bytes val = 1 [(validate.rules).bytes = {in: ["bar", "baz"]}]; }
message BytesNotIn       { bytes val = 1 [(validate.rules).bytes = {not_in: ["fizz", "buzz"]}]; }
message BytesLen         { bytes val = 1 [(validate.rules).bytes.len = 3]; }
message BytesMinLen      { bytes val = 1 [(validate.rules).bytes.min_len = 3]; }
message BytesMaxLen      { bytes val = 1 [(validate.rules).bytes.max_len = 5]; }
message BytesMinMaxLen   { bytes val = 1 [(validate.rules).bytes = {min_len: 3, max_len: 5}]; }
message BytesEqualMinMaxLen   { bytes val = 1 [(validate.rules).bytes = {min_len: 5, max_len: 5}]; }
message BytesPattern     { bytes val = 1 [(validate.rules).bytes.pattern = "^[\x00-\x7F]+$"]; }
message BytesPrefix      { bytes val = 1 [(validate.rules).bytes.prefix = "\x99"]; }
message BytesContains    { bytes val = 1 [(validate.rules).bytes.contains = "bar"]; }
message BytesSuffix      { bytes val = 1 [(validate.rules).bytes.suffix = "buz\x7a"]; }
message BytesIP          { bytes val = 1 [(validate.rules).bytes.ip = true]; }
message BytesIPv4        { bytes val = 1 [(validate.rules).bytes.ipv4 = true]; }
message BytesIPv6        { bytes val = 1 [(validate.rules).bytes.ipv6 = true]; }
message BytesIPv6Ignore  { bytes val = 1 [(validate.rules).bytes = {ipv6: true, ignore_empty: true}]; }
