Commit 6d4bf2ce authored by Tom Tromey's avatar Tom Tromey
Browse files

Add some bignum tests

* test/src/data-tests.el (data-tests-bignum, data-tests-+)
(data-tests-/, data-tests-number-predicates): New tests.
* test/src/fns-tests (test-bignum-eql): New test.
* test/src/lread-tests (lread-long-hex-integer): Expect bignum.
* test/src/print-tests (print-bignum): New test.
parent 5875fbaa
......@@ -515,4 +515,63 @@ comparing the subr with a much slower lisp implementation."
(bound-and-true-p data-tests-foo2)
(bound-and-true-p data-tests-foo3)))))))
(ert-deftest data-tests-bignum ()
(should (bignump (+ most-positive-fixnum 1)))
(let ((f0 (+ (float most-positive-fixnum) 1))
(f-1 (- (float most-negative-fixnum) 1))
(b0 (+ most-positive-fixnum 1))
(b-1 (- most-negative-fixnum 1)))
(should (> b0 -1))
(should (> b0 f-1))
(should (> b0 b-1))
(should (>= b0 -1))
(should (>= b0 f-1))
(should (>= b0 b-1))
(should (>= b-1 b-1))
(should (< -1 b0))
(should (< f-1 b0))
(should (< b-1 b0))
(should (<= -1 b0))
(should (<= f-1 b0))
(should (<= b-1 b0))
(should (<= b-1 b-1))
(should (= b0 f0))
(should (= b0 b0))
(should (/= b0 f-1))
(should (/= b0 b-1))))
(ert-deftest data-tests-+ ()
(should-not (fixnump (+ most-positive-fixnum most-positive-fixnum)))
(should (> (+ most-positive-fixnum most-positive-fixnum) most-positive-fixnum))
(should (eq (- (+ most-positive-fixnum most-positive-fixnum)
(+ most-positive-fixnum most-positive-fixnum))
0)))
(ert-deftest data-tests-/ ()
(let* ((x (* most-positive-fixnum 8))
(y (* most-negative-fixnum 8))
(z (- y)))
(should (= most-positive-fixnum (/ x 8)))
(should (= most-negative-fixnum (/ y 8)))
(should (= -1 (/ y z)))
(should (= -1 (/ z y)))
(should (= 0 (/ x (* 2 x))))
(should (= 0 (/ y (* 2 y))))
(should (= 0 (/ z (* 2 z))))))
(ert-deftest data-tests-number-predicates ()
(should (fixnump 0))
(should (fixnump most-negative-fixnum))
(should (fixnump most-positive-fixnum))
(should (integerp (+ most-positive-fixnum 1)))
(should (integer-or-marker-p (+ most-positive-fixnum 1)))
(should (numberp (+ most-positive-fixnum 1)))
(should (number-or-marker-p (+ most-positive-fixnum 1)))
(should (natnump (+ most-positive-fixnum 1)))
(should-not (fixnump (+ most-positive-fixnum 1)))
(should (bignump (+ most-positive-fixnum 1))))
;;; data-tests.el ends here
......@@ -593,4 +593,12 @@
(should (equal 1 (string-distance "ab" "a我b")))
(should (equal 1 (string-distance "我" "她"))))
(ert-deftest test-bignum-eql ()
"Test that `eql' works for bignums."
(let ((x (+ most-positive-fixnum 1))
(y (+ most-positive-fixnum 1)))
(should (eq x x))
(should (eql x y))
(should (equal x y))))
(provide 'fns-tests)
......@@ -195,9 +195,7 @@ literals (Bug#20852)."
(should (eq x (cdr x)))))
(ert-deftest lread-long-hex-integer ()
(should-error
(read "#xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
:type 'overflow-error))
(should (bignump (read "#xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"))))
(ert-deftest lread-test-bug-31186 ()
(with-temp-buffer
......
......@@ -98,5 +98,11 @@ otherwise, use a different charset."
(let ((sym '\’bar))
(should (eq (read (prin1-to-string sym)) sym))))
(ert-deftest print-bignum ()
(let* ((str "999999999999999999999999999999999")
(val (read str)))
(should (> val most-positive-fixnum))
(should (equal (prin1-to-string val) str))))
(provide 'print-tests)
;;; print-tests.el ends here
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment