github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/reflectx/set_value_test.go (about) 1 package reflectx 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/go-courier/ptr" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestSetValue(t *testing.T) { 12 tt := assert.New(t) 13 14 { 15 number := 1 16 tt.Nil(SetValue(reflect.ValueOf(&number), reflect.TypeOf(number), 2)) 17 tt.Equal(2, number) 18 } 19 20 { 21 number := ptr.Int(1) 22 tt.Nil(SetValue(reflect.ValueOf(number), reflect.TypeOf(number), 2)) 23 tt.NotNil(number) 24 tt.Equal(2, *number) 25 } 26 27 { 28 s := struct { 29 Int *int 30 }{} 31 tt.Nil(SetValue(reflect.Indirect(reflect.ValueOf(&s)).FieldByName("Int"), reflect.TypeOf(s.Int), 2)) 32 tt.NotNil(s.Int) 33 tt.Equal(2, *s.Int) 34 } 35 }