94 lines
1.7 KiB
Go
94 lines
1.7 KiB
Go
|
package exerr
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"gogs.mikescher.com/BlackForestBytes/goext/tst"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
type golangErr struct {
|
||
|
Message string
|
||
|
}
|
||
|
|
||
|
func (g golangErr) Error() string {
|
||
|
return g.Message
|
||
|
}
|
||
|
|
||
|
type golangErr2 struct {
|
||
|
Message string
|
||
|
}
|
||
|
|
||
|
func (g golangErr2) Error() string {
|
||
|
return g.Message
|
||
|
}
|
||
|
|
||
|
type simpleError struct {
|
||
|
}
|
||
|
|
||
|
func (g simpleError) Error() string {
|
||
|
return "Something simple went wroong"
|
||
|
}
|
||
|
|
||
|
type simpleError2 struct {
|
||
|
}
|
||
|
|
||
|
func (g simpleError2) Error() string {
|
||
|
return "Something simple went wroong"
|
||
|
}
|
||
|
|
||
|
func TestExErrIs1(t *testing.T) {
|
||
|
e0 := simpleError{}
|
||
|
|
||
|
wrap := Wrap(e0, "something went wrong").Str("test", "123").Build()
|
||
|
|
||
|
tst.AssertTrue(t, errors.Is(wrap, simpleError{}))
|
||
|
tst.AssertFalse(t, errors.Is(wrap, golangErr{}))
|
||
|
tst.AssertFalse(t, errors.Is(wrap, golangErr{"error1"}))
|
||
|
}
|
||
|
|
||
|
func TestExErrIs2(t *testing.T) {
|
||
|
e0 := golangErr{"error1"}
|
||
|
|
||
|
wrap := Wrap(e0, "something went wrong").Str("test", "123").Build()
|
||
|
|
||
|
tst.AssertTrue(t, errors.Is(wrap, e0))
|
||
|
tst.AssertTrue(t, errors.Is(wrap, golangErr{"error1"}))
|
||
|
tst.AssertFalse(t, errors.Is(wrap, golangErr{"error2"}))
|
||
|
tst.AssertFalse(t, errors.Is(wrap, simpleError{}))
|
||
|
}
|
||
|
|
||
|
func TestExErrAs(t *testing.T) {
|
||
|
|
||
|
e0 := golangErr{"error1"}
|
||
|
|
||
|
w0 := Wrap(e0, "something went wrong").Str("test", "123").Build()
|
||
|
|
||
|
{
|
||
|
out := golangErr{}
|
||
|
ok := errors.As(w0, &out)
|
||
|
tst.AssertTrue(t, ok)
|
||
|
tst.AssertEqual(t, out.Message, "error1")
|
||
|
}
|
||
|
|
||
|
w1 := Wrap(w0, "outher error").Build()
|
||
|
|
||
|
{
|
||
|
out := golangErr{}
|
||
|
ok := errors.As(w1, &out)
|
||
|
tst.AssertTrue(t, ok)
|
||
|
tst.AssertEqual(t, out.Message, "error1")
|
||
|
}
|
||
|
|
||
|
{
|
||
|
out := golangErr2{}
|
||
|
ok := errors.As(w1, &out)
|
||
|
tst.AssertFalse(t, ok)
|
||
|
}
|
||
|
|
||
|
{
|
||
|
out := simpleError2{}
|
||
|
ok := errors.As(w1, &out)
|
||
|
tst.AssertFalse(t, ok)
|
||
|
}
|
||
|
}
|