diff options
-rw-r--r-- | src/gobang.go | 7 | ||||
-rw-r--r-- | tests/gobang.go | 34 |
2 files changed, 41 insertions, 0 deletions
diff --git a/src/gobang.go b/src/gobang.go index 3da691e..8777247 100644 --- a/src/gobang.go +++ b/src/gobang.go @@ -66,6 +66,7 @@ var ( testOutput io.Writer = os.Stderr testExitFn = os.Exit + exitFn = os.Exit randomReader = rand.Reader SourceInfoSkip = 3 @@ -117,6 +118,12 @@ func Filter[A any](fn func(A) bool, coll []A) []A { return out } +func ExitIf(rc int) { + if rc != 0 { + exitFn(rc) + } +} + func PanicIf(err error) { if err != nil { panic(err) diff --git a/tests/gobang.go b/tests/gobang.go index 16ff0fe..fe47086 100644 --- a/tests/gobang.go +++ b/tests/gobang.go @@ -142,6 +142,39 @@ func test_Filter() { }) } +func test_ExitIf() { + TestStart("ExitIf()") + + n := -1 + myExitFn := func(val int) { + n = val + } + + Testing("noop when value is 0", func() { + savedExitFn := exitFn + exitFn = myExitFn + + ExitIf(0) + + exitFn = savedExitFn + + TAssertEqual(n, -1) + }) + + Testing("exitFn() is called otherwise", func() { + savedExitFn := exitFn + exitFn = myExitFn + + ExitIf(1) + TAssertEqual(n, 1) + + ExitIf(123) + TAssertEqual(n, 123) + + exitFn = savedExitFn + }) +} + func test_PanicIf() { TestStart("PanicIf()") @@ -1528,6 +1561,7 @@ func MainTest() { test_MapIndexed() test_Map() test_Filter() + test_ExitIf() test_PanicIf() test_Must() test_Clamp() |