Files
goext/langext/panic_test.go
T
Mikescher 02d6894ec6
Build Docker and Deploy / Run goext test-suite (push) Successful in 1m34s
[🤖] Add Unit-Tests
2026-04-27 16:31:29 +02:00

122 lines
2.6 KiB
Go

package langext
import (
"errors"
"git.blackforestbytes.com/BlackForestBytes/goext/tst"
"testing"
)
func TestRunPanicSafeNoPanic(t *testing.T) {
called := false
err := RunPanicSafe(func() {
called = true
})
tst.AssertEqual(t, called, true)
if err != nil {
t.Errorf("expected nil err, got %v", err)
}
}
func TestRunPanicSafeRecovers(t *testing.T) {
err := RunPanicSafe(func() {
panic("boom")
})
if err == nil {
t.Fatalf("expected error from panic")
}
pwe, ok := err.(PanicWrappedErr)
if !ok {
t.Fatalf("expected PanicWrappedErr, got %T", err)
}
tst.AssertEqual(t, pwe.RecoveredObj(), "boom")
tst.AssertEqual(t, pwe.Error(), "A panic occured")
}
func TestRunPanicSafeR1NoPanic(t *testing.T) {
expected := errors.New("expected")
err := RunPanicSafeR1(func() error {
return expected
})
if err != expected {
t.Errorf("expected original error, got %v", err)
}
}
func TestRunPanicSafeR1Panics(t *testing.T) {
err := RunPanicSafeR1(func() error {
panic("boom")
})
if err == nil {
t.Fatalf("expected wrapped panic")
}
if _, ok := err.(PanicWrappedErr); !ok {
t.Errorf("expected PanicWrappedErr, got %T", err)
}
}
func TestRunPanicSafeR2NoPanic(t *testing.T) {
v, err := RunPanicSafeR2(func() (int, error) {
return 42, nil
})
tst.AssertEqual(t, v, 42)
if err != nil {
t.Errorf("expected nil err, got %v", err)
}
}
func TestRunPanicSafeR2Panics(t *testing.T) {
v, err := RunPanicSafeR2(func() (int, error) {
panic("boom")
})
tst.AssertEqual(t, v, 0) // zero value
if err == nil {
t.Errorf("expected wrapped panic")
}
}
func TestRunPanicSafeR3NoPanic(t *testing.T) {
a, b, err := RunPanicSafeR3(func() (int, string, error) {
return 1, "two", nil
})
tst.AssertEqual(t, a, 1)
tst.AssertEqual(t, b, "two")
if err != nil {
t.Errorf("expected nil err, got %v", err)
}
}
func TestRunPanicSafeR3Panics(t *testing.T) {
a, b, err := RunPanicSafeR3(func() (int, string, error) {
panic("boom")
})
tst.AssertEqual(t, a, 0)
tst.AssertEqual(t, b, "")
if err == nil {
t.Errorf("expected wrapped panic")
}
}
func TestRunPanicSafeR4NoPanic(t *testing.T) {
a, b, c, err := RunPanicSafeR4(func() (int, string, bool, error) {
return 1, "two", true, nil
})
tst.AssertEqual(t, a, 1)
tst.AssertEqual(t, b, "two")
tst.AssertEqual(t, c, true)
if err != nil {
t.Errorf("expected nil err, got %v", err)
}
}
func TestRunPanicSafeR4Panics(t *testing.T) {
a, b, c, err := RunPanicSafeR4(func() (int, string, bool, error) {
panic("boom")
})
tst.AssertEqual(t, a, 0)
tst.AssertEqual(t, b, "")
tst.AssertEqual(t, c, false)
if err == nil {
t.Errorf("expected wrapped panic")
}
}