summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2025-05-04 18:56:00 -0300
committerEuAndreh <eu@euandre.org>2025-05-04 18:56:00 -0300
commit5abcb9646fe1e79b8b82c09b795845cc1ba7130e (patch)
tree3bc479062675b8fe898df8d16cf97bf4ef3e1aed
parentsrc/gobang.go: Properly namespace LogLevel enum values (diff)
downloadgobang-5abcb9646fe1e79b8b82c09b795845cc1ba7130e.tar.gz
gobang-5abcb9646fe1e79b8b82c09b795845cc1ba7130e.tar.xz
src/gobang.go: Add ExitIf()
-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()