summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Ryde <user42@zip.com.au>2004-04-05 23:05:37 +0000
committerKevin Ryde <user42@zip.com.au>2004-04-05 23:05:37 +0000
commitad22fe7cf87998a79234f9ca96f8c871333ef98e (patch)
tree890c374116d1f2470941bda63c18a26ed2048e1a
parentc3110a30453d0f3103174737f915aa017a6a7153 (diff)
downloadguile-ad22fe7cf87998a79234f9ca96f8c871333ef98e.tar.gz
(quotient, remainder): Exercise inum/big at and
near special case inum == fixnum-min, big == -fixnum-min.
-rw-r--r--test-suite/tests/numbers.test24
1 files changed, 22 insertions, 2 deletions
diff --git a/test-suite/tests/numbers.test b/test-suite/tests/numbers.test
index ab70a590a..72776631c 100644
--- a/test-suite/tests/numbers.test
+++ b/test-suite/tests/numbers.test
@@ -324,7 +324,17 @@
(eqv? 1 (quotient fixnum-min fixnum-min)))
(pass-if "n = fixnum-min - 1"
- (eqv? 0 (quotient fixnum-min (- fixnum-min 1)))))
+ (eqv? 0 (quotient fixnum-min (- fixnum-min 1))))
+
+ (pass-if "n = - fixnum-min - 1"
+ (eqv? -1 (quotient fixnum-min (1- (- fixnum-min)))))
+
+ ;; special case, normally inum/big is zero
+ (pass-if "n = - fixnum-min"
+ (eqv? -1 (quotient fixnum-min (- fixnum-min))))
+
+ (pass-if "n = - fixnum-min + 1"
+ (eqv? 0 (quotient fixnum-min (1+ (- fixnum-min))))))
(with-test-prefix "(fixnum-min - 1) / n"
@@ -512,7 +522,17 @@
(eqv? 0 (remainder fixnum-min fixnum-min)))
(pass-if "n = fixnum-min - 1"
- (eqv? fixnum-min (remainder fixnum-min (- fixnum-min 1)))))
+ (eqv? fixnum-min (remainder fixnum-min (- fixnum-min 1))))
+
+ (pass-if "n = - fixnum-min - 1"
+ (eqv? -1 (remainder fixnum-min (1- (- fixnum-min)))))
+
+ ;; special case, normally inum%big is the inum
+ (pass-if "n = - fixnum-min"
+ (eqv? 0 (remainder fixnum-min (- fixnum-min))))
+
+ (pass-if "n = - fixnum-min + 1"
+ (eqv? fixnum-min (remainder fixnum-min (1+ (- fixnum-min))))))
(with-test-prefix "(fixnum-min - 1) / n"