1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
package errutil
import (
"errors"
"reflect"
"testing"
)
type errcloser struct {
err error
}
func (e errcloser) Close() error { return e.err }
func TestCheckClose(t *testing.T) {
a := errors.New("a")
b := errors.New("b")
cases := []struct {
Previous error
CloseError error
Expect error
}{
{Previous: nil, CloseError: nil, Expect: nil},
{Previous: a, CloseError: nil, Expect: a},
{Previous: nil, CloseError: b, Expect: b},
{Previous: a, CloseError: b, Expect: a},
}
for _, c := range cases {
err := c.Previous
closer := errcloser{err: c.CloseError}
CheckClose(&err, closer)
if !reflect.DeepEqual(err, c.Expect) {
t.Fatalf("CheckErr() got %v expected %v", err, c.Expect)
}
}
}
|