github.com/qiniu/go-sdk/v7@v7.27.0/pili/validate_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package pili 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestValidator_Validate(t *testing.T) { 13 ast := assert.New(t) 14 15 type Foo struct { 16 Num int `validate:"gt=0,lte=10"` 17 String string `validate:"required"` 18 } 19 20 // struct 21 struct1 := Foo{} 22 struct2 := Foo{Num: 1, String: "bar"} 23 err := defaultValidator.Validate(struct1) 24 ast.NotNil(err) 25 err = defaultValidator.Validate(struct2) 26 ast.Nil(err) 27 28 // struct ptr 29 err = defaultValidator.Validate(&struct1) 30 ast.NotNil(err) 31 err = defaultValidator.Validate(&struct2) 32 ast.Nil(err) 33 34 // slice/array struct 35 slice1 := []Foo{{}, {}} 36 slice2 := []Foo{{Num: 1, String: "bar"}, {Num: 2, String: "bar2"}} 37 err = defaultValidator.Validate(slice1) 38 ast.NotNil(err) 39 err = defaultValidator.Validate(slice2) 40 ast.Nil(err) 41 42 // not dive 43 type NotDive struct { 44 Foos []Foo 45 } 46 notDive := NotDive{Foos: []Foo{{}, {}}} 47 err = defaultValidator.Validate(notDive) 48 ast.Nil(err) 49 50 // dive 51 type Dive struct { 52 Foos []Foo `validate:"dive"` 53 } 54 dive1 := Dive{Foos: []Foo{{}, {}}} 55 dive2 := Dive{Foos: []Foo{{Num: 1, String: "bar"}, {Num: 2, String: "bar2"}}} 56 err = defaultValidator.Validate(dive1) 57 ast.NotNil(err) 58 err = defaultValidator.Validate(dive2) 59 ast.Nil(err) 60 }