From 5abcb9646fe1e79b8b82c09b795845cc1ba7130e Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Sun, 4 May 2025 18:56:00 -0300 Subject: src/gobang.go: Add ExitIf() --- src/gobang.go | 7 +++++++ tests/gobang.go | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) 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() -- cgit v1.2.3