github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/courier/transport_http/transform/parameter_map_test.go (about) 1 package transform 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 9 "github.com/johnnyeven/libtools/reflectx" 10 ) 11 12 func TestParameterMap(t *testing.T) { 13 tt := assert.New(t) 14 15 pm := ParameterMap{} 16 17 type SomeReq struct { 18 Query string `name:"query" in:"query" validate:"@string[3,]"` 19 Pointer *string `name:"pointer" in:"query" validate:"@string[3,]"` 20 } 21 22 req := &SomeReq{} 23 tpe := reflectx.IndirectType(reflect.TypeOf(req)) 24 rv := reflect.Indirect(reflect.ValueOf(req)) 25 26 for i := 0; i < tpe.NumField(); i++ { 27 field := tpe.Field(i) 28 fieldValue := rv.Field(i) 29 30 tagIn, _, tagInFlags := GetTagIn(&field) 31 pm.Add(NewParameterMeta(&field, fieldValue, tagIn, tagInFlags)) 32 } 33 34 tt.Equal(2, len(pm.List())) 35 tt.Equal(2, pm.Len()) 36 37 { 38 p, ok := pm.Get("Query") 39 tt.True(ok) 40 tt.Equal("query", p.In) 41 } 42 }