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  }