diff options
-rw-r--r-- | src/gobang.go | 17 | ||||
-rw-r--r-- | tests/gobang.go | 78 |
2 files changed, 95 insertions, 0 deletions
diff --git a/src/gobang.go b/src/gobang.go index c9e9e01..921597e 100644 --- a/src/gobang.go +++ b/src/gobang.go @@ -58,6 +58,23 @@ var ( +func SomeError(errs []error) error { + for _, err := range errs { + if err != nil { + return err + } + } + return nil +} + +func SomeFnError(fns [](func() error)) error { + errs := make([]error, len(fns)) + for i, fn := range fns { + errs[i] = fn() + } + return SomeError(errs) +} + func Random(length int) []byte { buffer := make([]byte, length) _, err := io.ReadFull(rand.Reader, buffer) diff --git a/tests/gobang.go b/tests/gobang.go index e35f358..e2dd61b 100644 --- a/tests/gobang.go +++ b/tests/gobang.go @@ -13,6 +13,82 @@ import ( +func test_SomeError() { + TestStart("SomeError()") + + Testing("an empty array is nil", func() { + given := []error{} + AssertEqual(SomeError(given), nil) + }) + + Testing("only nil values is nil", func() { + given := []error{ + nil, + nil, + nil, + } + AssertEqual(SomeError(given), nil) + }) + + Testing("we get the first non-nil value", func() { + err1 := errors.New("error 1") + err2 := errors.New("error 2") + given := []error{ + nil, + err1, + err2, + } + AssertEqual(SomeError(given), err1) + }) +} + +func test_SomeFnError() { + TestStart("SomeFnError()") + + Testing("an empty arrays is also nil", func() { + given := [](func() error){} + AssertEqual(SomeFnError(given), nil) + }) + + Testing("all functions are called", func() { + i := 0 + fn := func() error { + i++ + return nil + } + given := [](func() error){ + fn, + fn, + fn, + } + AssertEqual(SomeFnError(given), nil) + AssertEqual(i, 3) + }) + + Testing("we call all functions even if we get an error", func() { + i := 0 + errs := []error{ + nil, + nil, + errors.New("fn error 2"), + errors.New("fn error 3"), + nil, + } + fn := func() error { + i++ + return errs[i] + } + given := [](func() error){ + fn, + fn, + fn, + fn, + } + AssertEqual(SomeFnError(given), errs[2]) + AssertEqual(i, 4) + }) +} + func test_Random() { TestStart("Random()") @@ -788,6 +864,8 @@ func test_setHostname() { func MainTest() { + test_SomeError() + test_SomeFnError() test_Random() test_sourceInfo() test_logArgs() |