diff --git a/max.go b/max.go index fdbe585..4cabf4e 100644 --- a/max.go +++ b/max.go @@ -1,8 +1,22 @@ package validator +const ( + // Max represents the rule name which will be used to find the default error message. + Max = "max" + // MaxMsg is the default error message format for len rule. + MaxMsg = "%s should less than %v" +) + // MaxInt checks i to be less than max value func (v *Validator) MaxInt(i, max int, field, msg string) *Validator { - v.Check(i <= max, field, msg) + v.Check(i <= max, field, v.msg(Max, msg, field, max)) + + return v +} + +// MaxFloat64 checks i to be less than max value +func (v *Validator) MaxFloat64(i, max float64, field, msg string) *Validator { + v.Check(i <= max, field, v.msg(Max, msg, field, max)) return v } diff --git a/max_test.go b/max_test.go index e74d56c..09930af 100644 --- a/max_test.go +++ b/max_test.go @@ -27,17 +27,17 @@ func TestValidator_MaxInt(t *testing.T) { field: "t1", value: 1, max: 0, - message: "t1 must be less than 0", + message: "", isPassed: false, - expectedMsg: "t1 must be less than 0", + expectedMsg: "t1 should less than 0", }, { field: "t2", value: 122, max: 20, - message: "t1 must be less than 20", + message: "t2 must be less than 20", isPassed: false, - expectedMsg: "t1 must be less than 20", + expectedMsg: "t2 must be less than 20", }, } @@ -53,3 +53,51 @@ func TestValidator_MaxInt(t *testing.T) { } } } + +func TestValidator_MaxFloat64(t *testing.T) { + tests := []struct { + field string + value float64 + max float64 + message string + isPassed bool + expectedMsg string + }{ + { + field: "t0", + value: 10.1, + max: 10.8, + message: "", + isPassed: true, + expectedMsg: "", + }, + { + field: "t1", + value: 0.1, + max: 0.01, + message: "", + isPassed: false, + expectedMsg: "t1 should less than 0.01", + }, + { + field: "t2", + value: 122, + max: 20, + message: "t2 must be less than 20", + isPassed: false, + expectedMsg: "t2 must be less than 20", + }, + } + + v := New() + + for _, test := range tests { + v.MaxFloat64(test.value, test.max, test.field, test.message) + + assert.Equal(t, test.isPassed, v.IsPassed()) + + if !test.isPassed { + assert.Equal(t, test.expectedMsg, v.Errors()[test.field]) + } + } +} diff --git a/validator.go b/validator.go index a33830f..77419ce 100644 --- a/validator.go +++ b/validator.go @@ -22,6 +22,7 @@ var ( methodToErrorMessage = map[string]string{ Required: RequiredMsg, Len: LenMsg, + Max: MaxMsg, Min: MinMsg, Between: BetweenMsg, }