diff options
-rw-r--r-- | src/gobang.go | 8 | ||||
-rw-r--r-- | tests/gobang.go | 27 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/gobang.go b/src/gobang.go index a5f529a..73f42c5 100644 --- a/src/gobang.go +++ b/src/gobang.go @@ -65,6 +65,14 @@ var ( +func Must[T any](x T, err error) T { + if err != nil { + panic(err) + } + + return x +} + func Clamp[T cmp.Ordered](n T, minimum T, maximum T) T { return min(maximum, max(minimum, n)) } diff --git a/tests/gobang.go b/tests/gobang.go index b6039af..c1286cd 100644 --- a/tests/gobang.go +++ b/tests/gobang.go @@ -15,6 +15,32 @@ import ( +func test_Must() { + TestStart("Must()") + + myErr := errors.New("test error") + f := func(shouldError bool) (string, error) { + if shouldError { + return "UNSEEN", myErr + } + + return "no error", nil + } + + + Testing("value when error is nil", func() { + TAssertEqual(Must(f(false)), "no error") + }) + + Testing("panic when we have an error", func() { + defer func() { + TAssertEqual(recover(), myErr) + }() + Must(f(true)) + TErrorNil(nil) + }) +} + func test_Clamp() { TestStart("Clamp()") @@ -1307,6 +1333,7 @@ func test_setHostname() { func MainTest() { Init() + test_Must() test_Clamp() test_ValidateSQLTablePrefix() test_WrapErrors() |