github.com/mgoltzsche/ctnr@v0.7.1-alpha/pkg/errors/append_test.go (about) 1 package errors 2 3 import ( 4 "testing" 5 6 orgerrors "github.com/pkg/errors" 7 ) 8 9 func TestAppend(t *testing.T) { 10 a := orgerrors.New("a") 11 b := orgerrors.New("b") 12 c := orgerrors.Wrap(b, "c") 13 d := &multiError{a, []error{c}} 14 e := orgerrors.Wrap(d, "e") 15 for _, c := range []struct { 16 a error 17 b error 18 expected error 19 cause error 20 }{ 21 {nil, nil, nil, nil}, 22 {a, nil, a, a}, 23 {nil, b, b, b}, 24 {c, nil, c, b}, 25 {nil, c, c, b}, 26 {a, c, d, a}, 27 {d, b, &multiError{a, []error{c, b}}, a}, 28 {e, b, &multiError{e, []error{b}}, a}, 29 } { 30 actual := Append(c.a, c.b) 31 if actual == nil && c.expected != nil || actual != nil && c.expected == nil || actual != nil && actual.Error() != c.expected.Error() { 32 t.Errorf("Append(%q, %q) != %q but %q", c.a, c.b, c.expected, actual) 33 } 34 if cause := orgerrors.Cause(actual); cause != c.cause { 35 t.Errorf("cause not preserved for Append(%q, %q): expected %q but was %q", c.a, c.b, c.cause, cause) 36 } 37 if c.a != nil && c.b != nil { 38 if len(actual.(*multiError).Additional()) == 0 { 39 t.Errorf("Append(%q, %q).Additional() did return 0 entries", c.a, c.b) 40 } 41 } 42 } 43 }