github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/helper/pointer/pointer_test.go (about)

     1  package pointer
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/hashicorp/nomad/ci"
     8  	"github.com/shoenig/test/must"
     9  )
    10  
    11  func Test_Of(t *testing.T) {
    12  	ci.Parallel(t)
    13  
    14  	s := "hello"
    15  	sPtr := Of(s)
    16  
    17  	must.Eq(t, s, *sPtr)
    18  
    19  	b := "bye"
    20  	sPtr = &b
    21  	must.NotEq(t, s, *sPtr)
    22  }
    23  
    24  func Test_Copy(t *testing.T) {
    25  	ci.Parallel(t)
    26  
    27  	orig := Of(1)
    28  	dup := Copy(orig)
    29  	orig = Of(7)
    30  	must.EqOp(t, 7, *orig)
    31  	must.EqOp(t, 1, *dup)
    32  }
    33  
    34  func Test_Compare(t *testing.T) {
    35  	ci.Parallel(t)
    36  
    37  	t.Run("int", func(t *testing.T) {
    38  		a := 1
    39  		b := 2
    40  		c := 1
    41  		var n *int // nil
    42  		must.False(t, Eq(&a, &b))
    43  		must.True(t, Eq(&a, &c))
    44  		must.False(t, Eq(nil, &a))
    45  		must.False(t, Eq(n, &a))
    46  		must.True(t, Eq(n, nil))
    47  	})
    48  
    49  	t.Run("string", func(t *testing.T) {
    50  		a := "cat"
    51  		b := "dog"
    52  		c := "cat"
    53  		var n *string
    54  
    55  		must.False(t, Eq(&a, &b))
    56  		must.True(t, Eq(&a, &c))
    57  		must.False(t, Eq(nil, &a))
    58  		must.False(t, Eq(n, &a))
    59  		must.True(t, Eq(n, nil))
    60  	})
    61  
    62  	t.Run("duration", func(t *testing.T) {
    63  		a := time.Duration(1)
    64  		b := time.Duration(2)
    65  		c := time.Duration(1)
    66  		var n *time.Duration
    67  
    68  		must.False(t, Eq(&a, &b))
    69  		must.True(t, Eq(&a, &c))
    70  		must.False(t, Eq(nil, &a))
    71  		must.False(t, Eq(n, &a))
    72  		must.True(t, Eq(n, nil))
    73  	})
    74  }
    75  
    76  func Test_Merge(t *testing.T) {
    77  	ci.Parallel(t)
    78  	
    79  	a := 1
    80  	b := 2
    81  
    82  	ptrA := &a
    83  	ptrB := &b
    84  
    85  	t.Run("exists", func(t *testing.T) {
    86  		result := Merge(ptrA, ptrB)
    87  		must.Eq(t, 2, *result)
    88  	})
    89  
    90  	t.Run("nil", func(t *testing.T) {
    91  		result := Merge(ptrA, nil)
    92  		must.Eq(t, 1, *result)
    93  	})
    94  }