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