Added assertion to clamp (#17248)

Co-authored-by: flywind <xzsflywind@gmail.com>
This commit is contained in:
Jason Beetham
2021-03-04 18:27:02 -07:00
committed by GitHub
parent 81889fb84c
commit f28dc2c61e
2 changed files with 7 additions and 2 deletions

View File

@@ -1190,6 +1190,8 @@ func clamp*[T](val: T, bounds: Slice[T]): T {.since: (1, 5), inline.} =
type A = enum a0, a1, a2, a3, a4, a5
assert a1.clamp(a2..a4) == a2
assert clamp((3, 0), (1, 0) .. (2, 9)) == (2, 9)
doAssertRaises(AssertionDefect): discard clamp(1, 3..2) # invalid bounds
assert bounds.a <= bounds.b, $(bounds.a, bounds.b)
clamp(val, bounds.a, bounds.b)
func lcm*[T](x: openArray[T]): T {.since: (1, 1).} =

View File

@@ -251,9 +251,12 @@ proc max*[T](x: openArray[T]): T =
proc clamp*[T](x, a, b: T): T =
## Limits the value `x` within the interval [a, b].
## This proc is equivalent to but fatser than `max(a, min(b, x))`.
## This proc is equivalent to but faster than `max(a, min(b, x))`.
##
## **Note:** `a <= b` is assumed and will not be checked.
## .. warning:: `a <= b` is assumed and will not be checked (currently).
##
## **See also:**
## `math.clamp` for a version that takes a `Slice[T]` instead.
runnableExamples:
assert (1.4).clamp(0.0, 1.0) == 1.0
assert (0.5).clamp(0.0, 1.0) == 0.5