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 }