diff tests/automated/lisp-tests.el @ 5912:47ffa085a9ad

Fix a bug when passing a float to truncate and giving a bignum result. src/ChangeLog addition: 2015-05-10 Aidan Kehoe <kehoea@parhasard.net> * floatfns.c (truncate_one_float): Fix a bug here when double_to_integer() (and previously float_to_int()) returned a bignum; this was silently treated as a fixnum, giving consistently incorrect remainders and less consistently-incorrect but still buggy divisors. tests/ChangeLog addition: Check that a bug when supplying #'truncate with one float that rounds to a bignum, has been fixed.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 10 May 2015 23:55:41 +0100
parents 48386fd60fd0
children 1af53d35dd53
line wrap: on
line diff
--- a/tests/automated/lisp-tests.el	Sun May 10 19:07:09 2015 +0100
+++ b/tests/automated/lisp-tests.el	Sun May 10 23:55:41 2015 +0100
@@ -1986,6 +1986,9 @@
   (when (featurep 'bignum)
     (assert (not (evenp most-positive-fixnum)) t
       "In the unlikely event that most-positive-fixnum is even, rewrite this.")
+    (Assert (equal (multiple-value-list (truncate (+ most-positive-fixnum 2.0)))
+                   (list (+ most-positive-fixnum 2) 0.0))
+            "checking a bug in single-argument truncate's remainder fixed")
     (Assert-rounding (1+ most-positive-fixnum) (* 2 most-positive-fixnum)
       :one-floor-result `(,(1+ most-positive-fixnum) 0)
       :two-floor-result `(0 ,(1+ most-positive-fixnum))