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  }