github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/rtutils/ptr/ptr_test.go (about)

     1  package ptr
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestTo(t *testing.T) {
    11  	stringV := "stringV"
    12  	stringP := To(stringV)
    13  	assert.Equal(t, "stringV", *stringP)
    14  	assert.True(t, reflect.ValueOf(stringP).Kind() == reflect.Ptr, "Expected result to be a pointer")
    15  
    16  	intV := 999
    17  	intP := To(intV)
    18  	assert.Equal(t, 999, *intP)
    19  	assert.True(t, reflect.ValueOf(intP).Kind() == reflect.Ptr, "Expected result to be a pointer")
    20  }
    21  
    22  func TestFrom(t *testing.T) {
    23  	stringP := To("stringP")
    24  	assert.Equal(t, "stringP", From(stringP, ""))
    25  
    26  	var stringPNil *string
    27  	assert.Equal(t, "fallback", From(stringPNil, "fallback"))
    28  
    29  	intP := To(999)
    30  	assert.Equal(t, 999, From(intP, -1))
    31  
    32  	var intPNil *int
    33  	assert.Equal(t, -1, From(intPNil, -1))
    34  }
    35  
    36  func TestClone(t *testing.T) {
    37  	stringP := To("stringP")
    38  	cloneStringP := Clone(stringP)
    39  	assert.Equal(t, "stringP", *cloneStringP)
    40  	assert.NotSame(t, stringP, cloneStringP)
    41  
    42  	var stringPNil *string
    43  	cloneStringPNil := Clone(stringPNil)
    44  	assert.Nil(t, cloneStringPNil)
    45  
    46  	intP := To(999)
    47  	cloneIntP := Clone(intP)
    48  	assert.Equal(t, 999, *cloneIntP)
    49  	assert.NotSame(t, intP, cloneIntP)
    50  }