144 lines
2.7 KiB
Go
144 lines
2.7 KiB
Go
package langext
|
|
|
|
import (
|
|
"git.blackforestbytes.com/BlackForestBytes/goext/tst"
|
|
"testing"
|
|
)
|
|
|
|
func TestPtr(t *testing.T) {
|
|
p := Ptr(42)
|
|
if p == nil {
|
|
t.Fatalf("expected non-nil")
|
|
}
|
|
tst.AssertEqual(t, *p, 42)
|
|
}
|
|
|
|
func TestPtrString(t *testing.T) {
|
|
p := Ptr("hi")
|
|
tst.AssertEqual(t, *p, "hi")
|
|
}
|
|
|
|
func TestPTrue(t *testing.T) {
|
|
if PTrue == nil || *PTrue != true {
|
|
t.Errorf("PTrue should point to true")
|
|
}
|
|
}
|
|
|
|
func TestPFalse(t *testing.T) {
|
|
if PFalse == nil || *PFalse != false {
|
|
t.Errorf("PFalse should point to false")
|
|
}
|
|
}
|
|
|
|
func TestDblPtr(t *testing.T) {
|
|
pp := DblPtr(7)
|
|
if pp == nil || *pp == nil {
|
|
t.Fatalf("expected non-nil double pointer")
|
|
}
|
|
tst.AssertEqual(t, **pp, 7)
|
|
}
|
|
|
|
func TestDblPtrIfNotNilWithValue(t *testing.T) {
|
|
v := 5
|
|
pp := DblPtrIfNotNil(&v)
|
|
if pp == nil {
|
|
t.Fatalf("expected non-nil double pointer")
|
|
}
|
|
tst.AssertEqual(t, **pp, 5)
|
|
}
|
|
|
|
func TestDblPtrIfNotNilNil(t *testing.T) {
|
|
pp := DblPtrIfNotNil[int](nil)
|
|
if pp != nil {
|
|
t.Errorf("expected nil for nil input")
|
|
}
|
|
}
|
|
|
|
func TestDblPtrNil(t *testing.T) {
|
|
pp := DblPtrNil[int]()
|
|
if pp == nil {
|
|
t.Fatalf("expected non-nil outer pointer")
|
|
}
|
|
if *pp != nil {
|
|
t.Errorf("expected inner pointer to be nil")
|
|
}
|
|
}
|
|
|
|
func TestArrPtr(t *testing.T) {
|
|
p := ArrPtr(1, 2, 3)
|
|
if p == nil {
|
|
t.Fatalf("expected non-nil pointer")
|
|
}
|
|
tst.AssertArrayEqual(t, *p, []int{1, 2, 3})
|
|
}
|
|
|
|
func TestPtrInt32(t *testing.T) {
|
|
p := PtrInt32(7)
|
|
tst.AssertEqual(t, *p, int32(7))
|
|
}
|
|
|
|
func TestPtrInt64(t *testing.T) {
|
|
p := PtrInt64(7)
|
|
tst.AssertEqual(t, *p, int64(7))
|
|
}
|
|
|
|
func TestPtrFloat32(t *testing.T) {
|
|
p := PtrFloat32(1.5)
|
|
tst.AssertEqual(t, *p, float32(1.5))
|
|
}
|
|
|
|
func TestPtrFloat64(t *testing.T) {
|
|
p := PtrFloat64(2.5)
|
|
tst.AssertEqual(t, *p, 2.5)
|
|
}
|
|
|
|
func TestIsNilTrue(t *testing.T) {
|
|
tst.AssertEqual(t, IsNil(nil), true)
|
|
|
|
var p *int
|
|
tst.AssertEqual(t, IsNil(p), true)
|
|
|
|
var m map[string]int
|
|
tst.AssertEqual(t, IsNil(m), true)
|
|
|
|
var s []int
|
|
tst.AssertEqual(t, IsNil(s), true)
|
|
|
|
var c chan int
|
|
tst.AssertEqual(t, IsNil(c), true)
|
|
|
|
var f func()
|
|
tst.AssertEqual(t, IsNil(f), true)
|
|
}
|
|
|
|
func TestIsNilFalse(t *testing.T) {
|
|
v := 5
|
|
tst.AssertEqual(t, IsNil(&v), false)
|
|
tst.AssertEqual(t, IsNil(5), false)
|
|
tst.AssertEqual(t, IsNil("hi"), false)
|
|
tst.AssertEqual(t, IsNil(map[string]int{}), false)
|
|
tst.AssertEqual(t, IsNil([]int{}), false)
|
|
}
|
|
|
|
func TestPtrEqualsBothNil(t *testing.T) {
|
|
tst.AssertEqual(t, PtrEquals[int](nil, nil), true)
|
|
}
|
|
|
|
func TestPtrEqualsBothEqual(t *testing.T) {
|
|
a := 5
|
|
b := 5
|
|
tst.AssertEqual(t, PtrEquals(&a, &b), true)
|
|
}
|
|
|
|
func TestPtrEqualsBothDifferent(t *testing.T) {
|
|
a := 5
|
|
b := 6
|
|
tst.AssertEqual(t, PtrEquals(&a, &b), false)
|
|
}
|
|
|
|
func TestPtrEqualsOneNil(t *testing.T) {
|
|
a := 5
|
|
tst.AssertEqual(t, PtrEquals(&a, nil), false)
|
|
tst.AssertEqual(t, PtrEquals[int](nil, &a), false)
|
|
}
|