mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-25 21:52:21 +00:00
73 lines
3.7 KiB
Protocol Buffer
Executable File
73 lines
3.7 KiB
Protocol Buffer
Executable File
// Copyright 2016 Michal Witkowski. All Rights Reserved.
|
|
// See LICENSE for licensing terms.
|
|
|
|
syntax = "proto3";
|
|
package validatortest;
|
|
|
|
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
|
|
import "github.com/mwitkow/go-proto-validators/validator.proto";
|
|
|
|
message ValidatorMessage3 {
|
|
// Embedded message test structure.
|
|
message Embedded {
|
|
string Identifier = 1 [(validator.field) = {regex: "^[a-z]{2,5}$"}];
|
|
int64 SomeValue = 2 [(validator.field) = {int_gt: 0, int_lt: 100}];
|
|
}
|
|
|
|
// String regex constraint tests.
|
|
string SomeString = 1 [(validator.field) = {regex: "^.{2,5}$"}];
|
|
repeated string SomeStringRep = 2 [(validator.field) = {regex: "^.{2,5}$"}];
|
|
string SomeStringNoQuotes = 3 [(validator.field) = {regex: "^[^\"]{2,5}$"}];
|
|
string SomeStringUnescaped = 4 [(validator.field) = {regex: "[\\p{L}\\p{N}]({\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?."}];
|
|
|
|
// Strict integer inequality constraint tests.
|
|
uint32 SomeInt = 6 [(validator.field) = {int_gt: 10}];
|
|
repeated uint32 SomeIntRep = 7 [(validator.field) = {int_gt: 10}];
|
|
repeated uint32 SomeIntRepNonNull = 8 [(validator.field) = {int_gt: 10}];
|
|
|
|
// Embedded message existence and recursive constraint tests.
|
|
Embedded someEmbedded = 10;
|
|
Embedded someEmbeddedNonNullable = 11 [(gogoproto.nullable) = false];
|
|
Embedded someEmbeddedExists = 12 [(validator.field) = {msg_exists : true}];
|
|
repeated Embedded someEmbeddedRep = 14;
|
|
repeated Embedded someEmbeddedRepNonNullable = 15 [(gogoproto.nullable) = false];
|
|
|
|
// Custom error tests.
|
|
int32 CustomErrorInt = 16 [(validator.field) = {int_lt: 10, human_error: "My Custom Error"}];
|
|
|
|
// Strict floating-point inequality constraint tests.
|
|
// With this epsilon value, the limits become
|
|
// SomeFloat+0.05 > 0.35
|
|
// SomeFloat-0.05 < 0.65
|
|
double StrictSomeDouble = 17 [(validator.field) = {float_gt: 0.35, float_lt: 0.65, float_epsilon: 0.05}];
|
|
repeated double StrictSomeDoubleRep = 19 [(validator.field) = {float_gt: 0.35, float_lt: 0.65, float_epsilon: 0.05}];
|
|
repeated double StrictSomeDoubleRepNonNull = 20 [(validator.field) = {float_gt: 0.35, float_lt: 0.65, float_epsilon: 0.05}];
|
|
float StrictSomeFloat = 21 [(validator.field) = {float_gt: 0.35, float_lt: 0.65, float_epsilon: 0.05}];
|
|
repeated float StrictSomeFloatRep = 22 [(validator.field) = {float_gt: 0.35, float_lt: 0.65, float_epsilon: 0.05}];
|
|
repeated float StrictSomeFloatRepNonNull = 23 [(validator.field) = {float_gt: 0.35, float_lt: 0.65, float_epsilon: 0.05}];
|
|
|
|
// Non-strict floating-point inequality constraint tests.
|
|
double SomeDouble = 24 [(validator.field) = {float_gte: 0.25, float_lte: 0.75}];
|
|
repeated double SomeDoubleRep = 25 [(validator.field) = {float_gte: 0.25, float_lte: 0.75}];
|
|
repeated double SomeDoubleRepNonNull = 26 [(validator.field) = {float_gte: 0.25, float_lte: 0.75}];
|
|
float SomeFloat = 27 [(validator.field) = {float_gte: 0.25, float_lte: 0.75}];
|
|
repeated float SomeFloatRep = 28 [(validator.field) = {float_gte: 0.25, float_lte: 0.75}];
|
|
repeated float SomeFloatRepNonNull = 30 [(validator.field) = {float_gte: 0.25, float_lte: 0.75}];
|
|
|
|
// String not-empty constraint tests.
|
|
string SomeNonEmptyString = 31 [(validator.field) = {string_not_empty: true}];
|
|
|
|
// Repeated base-type without constraint tests.
|
|
repeated int32 RepeatedBaseType = 32;
|
|
|
|
// Repeated element count constraint tests.
|
|
repeated int32 Repeated = 33 [(validator.field) = {repeated_count_min: 2, repeated_count_max: 5}];
|
|
string SomeStringLtReq = 36 [(validator.field) = {length_gt: 2}];
|
|
string SomeStringGtReq = 37 [(validator.field) = {length_lt: 12}];
|
|
string SomeStringEqReq = 38 [(validator.field) = {length_eq: 10}];
|
|
|
|
bytes SomeBytesLtReq = 39 [(validator.field) = {length_gt: 5}];
|
|
bytes SomeBytesGtReq = 40 [(validator.field) = {length_lt: 20}];
|
|
bytes SomeBytesEqReq = 41 [(validator.field) = {length_eq: 12}];
|
|
}
|