mirror of
https://github.com/asticode/go-astikit.git
synced 2025-12-24 11:50:53 +08:00
67 lines
1.3 KiB
Go
67 lines
1.3 KiB
Go
package astikit
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strconv"
|
|
"testing"
|
|
)
|
|
|
|
func TestErrors(t *testing.T) {
|
|
errs := NewErrors()
|
|
if !errs.IsNil() {
|
|
t.Fatal("expected true, got false")
|
|
}
|
|
errs = NewErrors(errors.New("1"))
|
|
if e, g := "1", errs.Error(); g != e {
|
|
t.Fatalf("expected %+v, got %+v", e, g)
|
|
}
|
|
errs.Add(errors.New("2"))
|
|
if e, g := "1 && 2", errs.Error(); g != e {
|
|
t.Fatalf("expected %+v, got %+v", e, g)
|
|
}
|
|
errs.Loop(func(idx int, err error) bool {
|
|
if e, g := strconv.Itoa(idx+1), err.Error(); g != e {
|
|
t.Fatalf("expected %v, got %v", e, g)
|
|
}
|
|
return false
|
|
})
|
|
err1 := errors.New("1")
|
|
err2 := errors.New("2")
|
|
err3 := errors.New("3")
|
|
errs = NewErrors(err1, err3)
|
|
for _, v := range []struct {
|
|
err error
|
|
expected bool
|
|
}{
|
|
{
|
|
err: err1,
|
|
expected: true,
|
|
},
|
|
{
|
|
err: err2,
|
|
expected: false,
|
|
},
|
|
{
|
|
err: err3,
|
|
expected: true,
|
|
},
|
|
} {
|
|
if g := errors.Is(errs, v.err); g != v.expected {
|
|
t.Fatalf("expected %v, got %v", v.expected, g)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestErrorCause(t *testing.T) {
|
|
err1 := errors.New("test 1")
|
|
err2 := fmt.Errorf("test 2 failed: %w", err1)
|
|
if e, g := err1, ErrorCause(err2); !errors.Is(g, e) {
|
|
t.Fatalf("expected %+v, got %+v", e, g)
|
|
}
|
|
err3 := fmt.Errorf("test 3 failed: %w", err2)
|
|
if e, g := err1, ErrorCause(err3); !errors.Is(g, e) {
|
|
t.Fatalf("expected %+v, got %+v", e, g)
|
|
}
|
|
}
|