github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/piperutils/pointer_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package piperutils
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestSafeDereferenceString(t *testing.T) {
    13  	type testCase[T any] struct {
    14  		name string
    15  		p    *T
    16  		want T
    17  	}
    18  	str := "test"
    19  	tests := []testCase[string]{
    20  		{
    21  			name: "nil",
    22  			p:    nil,
    23  			want: "",
    24  		},
    25  		{
    26  			name: "non-nil",
    27  			p:    &str,
    28  			want: "test",
    29  		},
    30  	}
    31  	for _, tt := range tests {
    32  		t.Run(tt.name, func(t *testing.T) {
    33  			assert.Equalf(t, tt.want, SafeDereference(tt.p), "SafeDereference(%v)", tt.p)
    34  		})
    35  	}
    36  }
    37  
    38  func TestSafeDereferenceInt64(t *testing.T) {
    39  	type testCase[T any] struct {
    40  		name string
    41  		p    *T
    42  		want T
    43  	}
    44  	i64 := int64(111)
    45  	tests := []testCase[int64]{
    46  		{
    47  			name: "nil",
    48  			p:    nil,
    49  			want: 0,
    50  		},
    51  		{
    52  			name: "non-nil",
    53  			p:    &i64,
    54  			want: 111,
    55  		},
    56  	}
    57  	for _, tt := range tests {
    58  		t.Run(tt.name, func(t *testing.T) {
    59  			assert.Equalf(t, tt.want, SafeDereference(tt.p), "SafeDereference(%v)", tt.p)
    60  		})
    61  	}
    62  }