summaryrefslogtreecommitdiffstats
path: root/tests/012
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2022-09-15 23:22:28 -0700
committerKaz Kylheku <kaz@kylheku.com>2022-09-15 23:22:28 -0700
commit60fa0cd314d283c99af60a650ba4f6c04ee1870a (patch)
tree4e6e4524b6b26a451a0f0ef9c0347bf113be9122 /tests/012
parentdaa6738f83ec9d31fb62e50e0fe259577a219b8f (diff)
downloadtxr-60fa0cd314d283c99af60a650ba4f6c04ee1870a.tar.gz
txr-60fa0cd314d283c99af60a650ba4f6c04ee1870a.tar.bz2
txr-60fa0cd314d283c99af60a650ba4f6c04ee1870a.zip
seq-iter: bugfix: floating-point ranges.
* lib.c (seq_iter_get_range_bignum): Static function renamed to seq_iter_get_range_number because it in fact generalizes to numbers. (seq_iter_peek_range_bignum): Renamed to seq_iter_peek_range_number. (seq_iter_get_rev_range_bignum): Renamed to seq_iter_get_rev_range_number. (seq_iter_peek_rev_range_bignum): Renamed to seq_iter_peek_rev_range_number. (si_range_bignum_ops): Renamed to si_range_number_ops. (si_rev_range_bignum_ops): Renamed to si_rev_range_number_ops. (seq_iter_init_with_info): Handle ranges where the from value is floating-point. Also, if the from-value is bignum that fits into cnum range, we now try to handle that as a cnum range. * tests/012/iter.tl: New tests.
Diffstat (limited to 'tests/012')
-rw-r--r--tests/012/iter.tl23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/012/iter.tl b/tests/012/iter.tl
index 051368b3..9b1db6f5 100644
--- a/tests/012/iter.tl
+++ b/tests/012/iter.tl
@@ -67,3 +67,26 @@
(let ((big (* fixnum-max 8)))
(test (progn (each ((x big..(+ 10 big))) (sys:gc)) 42) 42))
+
+(mtest
+ (list-seq 0..5) (0 1 2 3 4)
+ (list-seq 5..0) (4 3 2 1 0)
+ (list-seq 0..5.0) (0 1 2 3 4)
+ (list-seq 5..0.0) (4 3 2 1 0)
+ (list-seq 0.0..5.0) (0.0 1.0 2.0 3.0 4.0)
+ (list-seq 5.0..0.0) (4.0 3.0 2.0 1.0 0.0)
+ (list-seq 0.0..5) (0.0 1.0 2.0 3.0 4.0)
+ (list-seq 5.0..0) (4.0 3.0 2.0 1.0 0.0)
+ (list-seq 0.0..5.1) (0.0 1.0 2.0 3.0 4.0 5.0)
+ (list-seq 0.5..5) (0.5 1.5 2.5 3.5 4.5)
+ (list-seq (expt 2 256)..(ssucc (expt 2 256)))
+ (115792089237316195423570985008687907853269984665640564039457584007913129639936
+ 115792089237316195423570985008687907853269984665640564039457584007913129639937)
+ (list-seq (expt 2 256)..(ppred (expt 2 256)))
+ (115792089237316195423570985008687907853269984665640564039457584007913129639935
+ 115792089237316195423570985008687907853269984665640564039457584007913129639934)
+ (take 3 (list-seq (expt 2 256)..0))
+ (115792089237316195423570985008687907853269984665640564039457584007913129639935
+ 115792089237316195423570985008687907853269984665640564039457584007913129639934
+ 115792089237316195423570985008687907853269984665640564039457584007913129639933))
+