1// +build go1.13 2 3// Copyright (c) Microsoft Corporation. All rights reserved. 4// Licensed under the MIT License. 5 6package to 7 8import ( 9 "fmt" 10 "reflect" 11 "strconv" 12 "testing" 13 "time" 14) 15 16func TestBoolPtr(t *testing.T) { 17 b := true 18 pb := BoolPtr(b) 19 if pb == nil { 20 t.Fatal("unexpected nil conversion") 21 } 22 if *pb != b { 23 t.Fatalf("got %v, want %v", *pb, b) 24 } 25} 26 27func TestFloat32Ptr(t *testing.T) { 28 f32 := float32(3.1415926) 29 pf32 := Float32Ptr(f32) 30 if pf32 == nil { 31 t.Fatal("unexpected nil conversion") 32 } 33 if *pf32 != f32 { 34 t.Fatalf("got %v, want %v", *pf32, f32) 35 } 36} 37 38func TestFloat64Ptr(t *testing.T) { 39 f64 := float64(2.71828182845904) 40 pf64 := Float64Ptr(f64) 41 if pf64 == nil { 42 t.Fatal("unexpected nil conversion") 43 } 44 if *pf64 != f64 { 45 t.Fatalf("got %v, want %v", *pf64, f64) 46 } 47} 48 49func TestInt32Ptr(t *testing.T) { 50 i32 := int32(123456789) 51 pi32 := Int32Ptr(i32) 52 if pi32 == nil { 53 t.Fatal("unexpected nil conversion") 54 } 55 if *pi32 != i32 { 56 t.Fatalf("got %v, want %v", *pi32, i32) 57 } 58} 59 60func TestInt64Ptr(t *testing.T) { 61 i64 := int64(9876543210) 62 pi64 := Int64Ptr(i64) 63 if pi64 == nil { 64 t.Fatal("unexpected nil conversion") 65 } 66 if *pi64 != i64 { 67 t.Fatalf("got %v, want %v", *pi64, i64) 68 } 69} 70 71func TestStringPtr(t *testing.T) { 72 s := "the string" 73 ps := StringPtr(s) 74 if ps == nil { 75 t.Fatal("unexpected nil conversion") 76 } 77 if *ps != s { 78 t.Fatalf("got %v, want %v", *ps, s) 79 } 80} 81 82func TestTimePtr(t *testing.T) { 83 tt := time.Now() 84 pt := TimePtr(tt) 85 if pt == nil { 86 t.Fatal("unexpected nil conversion") 87 } 88 if *pt != tt { 89 t.Fatalf("got %v, want %v", *pt, tt) 90 } 91} 92 93func TestInt32PtrArray(t *testing.T) { 94 arr := Int32PtrArray() 95 if len(arr) != 0 { 96 t.Fatal("expected zero length") 97 } 98 arr = Int32PtrArray(1, 2, 3, 4, 5) 99 for i, v := range arr { 100 if *v != int32(i+1) { 101 t.Fatal("values don't match") 102 } 103 } 104} 105 106func TestInt64PtrArray(t *testing.T) { 107 arr := Int64PtrArray() 108 if len(arr) != 0 { 109 t.Fatal("expected zero length") 110 } 111 arr = Int64PtrArray(1, 2, 3, 4, 5) 112 for i, v := range arr { 113 if *v != int64(i+1) { 114 t.Fatal("values don't match") 115 } 116 } 117} 118 119func TestFloat32PtrArray(t *testing.T) { 120 arr := Float32PtrArray() 121 if len(arr) != 0 { 122 t.Fatal("expected zero length") 123 } 124 arr = Float32PtrArray(1.1, 2.2, 3.3, 4.4, 5.5) 125 for i, v := range arr { 126 f, err := strconv.ParseFloat(fmt.Sprintf("%d.%d", i+1, i+1), 32) 127 if err != nil { 128 t.Fatal(err) 129 } 130 if *v != float32(f) { 131 t.Fatal("values don't match") 132 } 133 } 134} 135 136func TestFloat64PtrArray(t *testing.T) { 137 arr := Float64PtrArray() 138 if len(arr) != 0 { 139 t.Fatal("expected zero length") 140 } 141 arr = Float64PtrArray(1.1, 2.2, 3.3, 4.4, 5.5) 142 for i, v := range arr { 143 f, err := strconv.ParseFloat(fmt.Sprintf("%d.%d", i+1, i+1), 64) 144 if err != nil { 145 t.Fatal(err) 146 } 147 if *v != f { 148 t.Fatal("values don't match") 149 } 150 } 151} 152 153func TestBoolPtrArray(t *testing.T) { 154 arr := BoolPtrArray() 155 if len(arr) != 0 { 156 t.Fatal("expected zero length") 157 } 158 arr = BoolPtrArray(true, false, true) 159 curr := true 160 for _, v := range arr { 161 if *v != curr { 162 t.Fatal("values don'p match") 163 } 164 curr = !curr 165 } 166} 167 168func TestStringPtrArray(t *testing.T) { 169 arr := StringPtrArray() 170 if len(arr) != 0 { 171 t.Fatal("expected zero length") 172 } 173 arr = StringPtrArray("one", "", "three") 174 if !reflect.DeepEqual(arr, []*string{StringPtr("one"), StringPtr(""), StringPtr("three")}) { 175 t.Fatal("values don't match") 176 } 177} 178 179func TestTimePtrArray(t *testing.T) { 180 arr := TimePtrArray() 181 if len(arr) != 0 { 182 t.Fatal("expected zero length") 183 } 184 t1 := time.Now() 185 t2 := time.Time{} 186 t3 := t1.Add(24 * time.Hour) 187 arr = TimePtrArray(t1, t2, t3) 188 if !reflect.DeepEqual(arr, []*time.Time{&t1, &t2, &t3}) { 189 t.Fatal("values don't match") 190 } 191} 192