# HG changeset patch
# User Arun Giridhar <arungiridhar@gmail.com>
# Date 1638139280 18000
#      Sun Nov 28 17:41:20 2021 -0500
# Node ID 16739e052a20ea8a728a0a221e7c5ad25c14f64d
# Parent  e1d5df076b7c1ad9a75e277fdf0580e461ebb1be
range.tst: Check that integer ranges do not exceed limits (bug #61300)

diff -r e1d5df076b7c -r 16739e052a20 test/range.tst
--- a/test/range.tst	Sun Nov 28 21:04:00 2021 +0100
+++ b/test/range.tst	Sun Nov 28 17:41:20 2021 -0500
@@ -511,3 +511,88 @@
 %!   assert (numel (rlo), n+1);
 %!   assert (numel (rhi), n+1);
 %! endfor
+
+## Make sure that the range does not exceed the limit for integer types
+%!test <*61300>
+##
+## Ascending ranges, signed
+##
+%!assert ((int8(0) : 6 : 100)(end), int8(96))
+%!assert ((int8(1) : 6 : 100)(end), int8(97))
+%!assert ((int8(2) : 6 : 100)(end), int8(98))
+%!assert ((int8(3) : 6 : 100)(end), int8(99))
+%!assert ((int8(4) : 6 : 100)(end), int8(100))
+%!assert ((int8(5) : 6 : 100)(end), int8(95))
+%!assert ((int16(0) : 6 : 100)(end), int16(96))
+%!assert ((int16(1) : 6 : 100)(end), int16(97))
+%!assert ((int16(2) : 6 : 100)(end), int16(98))
+%!assert ((int16(3) : 6 : 100)(end), int16(99))
+%!assert ((int16(4) : 6 : 100)(end), int16(100))
+%!assert ((int16(5) : 6 : 100)(end), int16(95))
+%!assert ((int32(0) : 6 : 100)(end), int32(96))
+%!assert ((int32(1) : 6 : 100)(end), int32(97))
+%!assert ((int32(2) : 6 : 100)(end), int32(98))
+%!assert ((int32(3) : 6 : 100)(end), int32(99))
+%!assert ((int32(4) : 6 : 100)(end), int32(100))
+%!assert ((int32(5) : 6 : 100)(end), int32(95))
+%!assert ((int64(0) : 6 : 100)(end), int64(96))
+%!assert ((int64(1) : 6 : 100)(end), int64(97))
+%!assert ((int64(2) : 6 : 100)(end), int64(98))
+%!assert ((int64(3) : 6 : 100)(end), int64(99))
+%!assert ((int64(4) : 6 : 100)(end), int64(100))
+%!assert ((int64(5) : 6 : 100)(end), int64(95))
+##
+## Ascending ranges, unsigned
+##
+%!assert ((uint8(0) : 6 : 100)(end), uint8(96))
+%!assert ((uint8(1) : 6 : 100)(end), uint8(97))
+%!assert ((uint8(2) : 6 : 100)(end), uint8(98))
+%!assert ((uint8(3) : 6 : 100)(end), uint8(99))
+%!assert ((uint8(4) : 6 : 100)(end), uint8(100))
+%!assert ((uint8(5) : 6 : 100)(end), uint8(95))
+%!assert ((uint16(0) : 6 : 100)(end), uint16(96))
+%!assert ((uint16(1) : 6 : 100)(end), uint16(97))
+%!assert ((uint16(2) : 6 : 100)(end), uint16(98))
+%!assert ((uint16(3) : 6 : 100)(end), uint16(99))
+%!assert ((uint16(4) : 6 : 100)(end), uint16(100))
+%!assert ((uint16(5) : 6 : 100)(end), uint16(95))
+%!assert ((uint32(0) : 6 : 100)(end), uint32(96))
+%!assert ((uint32(1) : 6 : 100)(end), uint32(97))
+%!assert ((uint32(2) : 6 : 100)(end), uint32(98))
+%!assert ((uint32(3) : 6 : 100)(end), uint32(99))
+%!assert ((uint32(4) : 6 : 100)(end), uint32(100))
+%!assert ((uint32(5) : 6 : 100)(end), uint32(95))
+%!assert ((uint64(0) : 6 : 100)(end), uint64(96))
+%!assert ((uint64(1) : 6 : 100)(end), uint64(97))
+%!assert ((uint64(2) : 6 : 100)(end), uint64(98))
+%!assert ((uint64(3) : 6 : 100)(end), uint64(99))
+%!assert ((uint64(4) : 6 : 100)(end), uint64(100))
+%!assert ((uint64(5) : 6 : 100)(end), uint64(95))
+##
+## Descending ranges, signed
+##
+%!assert ((int8(100) : -6 : 0)(end), int8(4))
+%!assert ((int8(99) : -6 : 0)(end), int8(3))
+%!assert ((int8(98) : -6 : 0)(end), int8(2))
+%!assert ((int8(97) : -6 : 0)(end), int8(1))
+%!assert ((int8(96) : -6 : 0)(end), int8(0))
+%!assert ((int8(95) : -6 : 0)(end), int8(5))
+%!assert ((int16(100) : -6 : 0)(end), int16(4))
+%!assert ((int16(99) : -6 : 0)(end), int16(3))
+%!assert ((int16(98) : -6 : 0)(end), int16(2))
+%!assert ((int16(97) : -6 : 0)(end), int16(1))
+%!assert ((int16(96) : -6 : 0)(end), int16(0))
+%!assert ((int16(95) : -6 : 0)(end), int16(5))
+%!assert ((int32(100) : -6 : 0)(end), int32(4))
+%!assert ((int32(99) : -6 : 0)(end), int32(3))
+%!assert ((int32(98) : -6 : 0)(end), int32(2))
+%!assert ((int32(97) : -6 : 0)(end), int32(1))
+%!assert ((int32(96) : -6 : 0)(end), int32(0))
+%!assert ((int32(95) : -6 : 0)(end), int32(5))
+%!assert ((int64(100) : -6 : 0)(end), int64(4))
+%!assert ((int64(99) : -6 : 0)(end), int64(3))
+%!assert ((int64(98) : -6 : 0)(end), int64(2))
+%!assert ((int64(97) : -6 : 0)(end), int64(1))
+%!assert ((int64(96) : -6 : 0)(end), int64(0))
+%!assert ((int64(95) : -6 : 0)(end), int64(5))
+
