diff options
-rw-r--r-- | src/gobang.go | 5 | ||||
-rw-r--r-- | tests/gobang.go | 28 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/gobang.go b/src/gobang.go index ed26a04..57a087d 100644 --- a/src/gobang.go +++ b/src/gobang.go @@ -1,6 +1,7 @@ package gobang import ( + "cmp" "crypto/rand" "errors" "fmt" @@ -64,6 +65,10 @@ var ( +func Clamp[T cmp.Ordered](n T, minimum T, maximum T) T { + return min(maximum, max(minimum, n)) +} + var _SQLTablePrefixRE = regexp.MustCompilePOSIX("^[a-zA-Z][_a-zA-z0-9]*$") func ValidateSQLTablePrefix(prefix string) error { if !_SQLTablePrefixRE.MatchString(prefix) { diff --git a/tests/gobang.go b/tests/gobang.go index 64e9eb5..d67b99f 100644 --- a/tests/gobang.go +++ b/tests/gobang.go @@ -14,6 +14,33 @@ import ( +func test_Clamp() { + TestStart("Clamp()") + + Testing("equal values", func() { + TAssertEqual(Clamp(0, 0, 0), 0) + TAssertEqual(Clamp(1, 1, 1), 1) + TAssertEqual(Clamp(1.0, 1.0, 1.0), 1.0) + }) + + Testing("within range", func() { + TAssertEqual(Clamp(5, 0, 10), 5) + TAssertEqual(Clamp(1.1, 1.0, 1.2), 1.1) + TAssertEqual(Clamp(0, 0, 10), 0) + TAssertEqual(Clamp(10, 0, 10), 10) + }) + + Testing("lower than min", func() { + TAssertEqual(Clamp(1, 2, 3), 2) + TAssertEqual(Clamp(1.0, 1.1, 1.2), 1.1) + }) + + Testing("greater than max", func() { + TAssertEqual(Clamp(1, 11, 10), 10) + TAssertEqual(Clamp(1.2, 1.0, 1.1), 1.1) + }) +} + func test_ValidateSQLTablePrefix() { TestStart("ValidateSQLTablePrefix()") @@ -968,6 +995,7 @@ func test_setHostname() { func MainTest() { + test_Clamp() test_ValidateSQLTablePrefix() test_WrapErrors() test_SomeError() |