diff options
-rw-r--r-- | src/gobang.go | 4 | ||||
-rw-r--r-- | tests/gobang.go | 11 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/gobang.go b/src/gobang.go index ea26541..ed26a04 100644 --- a/src/gobang.go +++ b/src/gobang.go @@ -104,7 +104,9 @@ func SomeError(errs ...error) error { func SomeFnError(fns ...func() error) error { errs := make([]error, len(fns)) for i, fn := range fns { - errs[i] = fn() + if fn != nil { + errs[i] = fn() + } } return SomeError(errs...) } diff --git a/tests/gobang.go b/tests/gobang.go index c862e82..64e9eb5 100644 --- a/tests/gobang.go +++ b/tests/gobang.go @@ -126,6 +126,17 @@ func test_SomeFnError() { TAssertEqual(SomeFnError(fn, fn, fn, fn), errs[2]) TAssertEqual(i, 4) }) + + Testing("no error if some function is nil", func() { + myErr := errors.New("the expected result") + TAssertEqual(SomeFnError( + func() error { return nil }, + nil, + func() error { return nil }, + func() error { return myErr }, + func() error { return nil }, + ), myErr) + }) } func test_Random() { |