github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/validate/validatetpl/slice_test.go (about) 1 package validatetpl 2 3 import ( 4 "fmt" 5 "testing" 6 ) 7 8 func TestValidateSlice(t *testing.T) { 9 type args struct { 10 min uint64 11 max uint64 12 elemMin uint64 13 elemMax uint64 14 v interface{} 15 } 16 tests := []struct { 17 name string 18 args args 19 want bool 20 want1 string 21 }{ 22 { 23 name: "normal", 24 args: args{ 25 min: 0, 26 max: 0, 27 elemMin: 0, 28 elemMax: 10, 29 v: []uint64{ 30 1, 31 2, 32 3, 33 4, 34 }, 35 }, 36 want: true, 37 want1: "", 38 }, 39 { 40 name: "notSLice", 41 args: args{ 42 min: 0, 43 max: 0, 44 elemMin: 0, 45 elemMax: 10, 46 v: 1, 47 }, 48 want: false, 49 want1: TYPE_NOT_SLICE, 50 }, 51 { 52 name: "elemLtRequire", 53 args: args{ 54 min: 5, 55 max: 10, 56 elemMin: 0, 57 elemMax: 10, 58 v: []uint64{ 59 1, 60 2, 61 3, 62 4, 63 }, 64 }, 65 want: false, 66 want1: fmt.Sprintf(SLICE_ELEM_NUM_NOT_IN_RANGE, 5, 10, 4), 67 }, 68 { 69 name: "elemGtRequire", 70 args: args{ 71 min: 1, 72 max: 3, 73 elemMin: 0, 74 elemMax: 10, 75 v: []uint64{ 76 1, 77 2, 78 3, 79 4, 80 }, 81 }, 82 want: false, 83 want1: fmt.Sprintf(SLICE_ELEM_NUM_NOT_IN_RANGE, 1, 3, 4), 84 }, 85 { 86 name: "elemValueTypeInvalid", 87 args: args{ 88 min: 0, 89 max: 0, 90 elemMin: 0, 91 elemMax: 10, 92 v: []int64{ 93 1, 94 2, 95 3, 96 4, 97 }, 98 }, 99 want: false, 100 want1: fmt.Sprintf(SLICE_ELEM_INVALID, TYPE_NOT_UINT64), 101 }, 102 { 103 name: "elemValueNotInRange", 104 args: args{ 105 min: 0, 106 max: 0, 107 elemMin: 0, 108 elemMax: 10, 109 v: []uint64{ 110 11, 111 }, 112 }, 113 want: false, 114 want1: fmt.Sprintf(SLICE_ELEM_INVALID, fmt.Sprintf(INT_VALUE_NOT_IN_RANGE, "[", 0, 10, "]", 11)), 115 }, 116 } 117 for _, tt := range tests { 118 itemValidateFunc := NewRangeValidateUint64(tt.args.elemMin, tt.args.elemMax, false, false) 119 sliceValidateFunc := NewValidateSlice(tt.args.min, tt.args.max, itemValidateFunc) 120 got, got1 := sliceValidateFunc(tt.args.v) 121 if got != tt.want { 122 t.Errorf("%q. ValidateSlice() got = %v, want %v", tt.name, got, tt.want) 123 } 124 if got1 != tt.want1 { 125 t.Errorf("%q. ValidateSlice() got1 = %v, want %v", tt.name, got1, tt.want1) 126 } 127 } 128 }