summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gobang.go17
-rw-r--r--tests/gobang.go78
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()