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