Mercurial > hg > xemacs-beta
changeset 5188:000287f8053b
Be more careful about parentheses and number features, #'equalp tests
2010-04-03 Aidan Kehoe <kehoea@parhasard.net>
* automated/lisp-tests.el:
Correct the parentheses in the equalp tests, so they get run more
often.
Within them, only attempt to read a bignum if the bignum
feature is present; actually evaluate (/ 3/2 0.2), (/ 3/2 0.7) if
the ratio feature is present.
Construct the (Assert ...) calls at
macroexpansion time, so the output in the *Test-Log* buffer is
more informative.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sat, 03 Apr 2010 16:27:07 +0100 |
parents | b51c2079ec8e |
children | 1c1d8843de5e |
files | tests/ChangeLog tests/automated/lisp-tests.el |
diffstat | 2 files changed, 58 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/ChangeLog Sat Apr 03 15:27:32 2010 +0100 +++ b/tests/ChangeLog Sat Apr 03 16:27:07 2010 +0100 @@ -1,3 +1,15 @@ +2010-04-03 Aidan Kehoe <kehoea@parhasard.net> + + * automated/lisp-tests.el: + Correct the parentheses in the equalp tests, so they get run more + often. + Within them, only attempt to read a bignum if the bignum + feature is present; actually evaluate (/ 3/2 0.2), (/ 3/2 0.7) if + the ratio feature is present. + Construct the (Assert ...) calls at + macroexpansion time, so the output in the *Test-Log* buffer is + more informative. + 2010-03-18 Ben Wing <ben@xemacs.org> * automated/c-tests.el:
--- a/tests/automated/lisp-tests.el Sat Apr 03 15:27:32 2010 +0100 +++ b/tests/automated/lisp-tests.el Sat Apr 03 16:27:07 2010 +0100 @@ -2138,35 +2138,52 @@ for char being each element in-ref res do (setf char (int-to-char int-char)) finally return res))) - (let ((equal-lists - '((111111111111111111111111111111111111111111111111111 - 111111111111111111111111111111111111111111111111111.0) - (0 0.0 0.000 -0 -0.0 -0.000 #b0 0/5 -0/5) - (21845 #b101010101010101 #x5555) - (1.5 1.500000000000000000000000000000000000000000000000000000000 - 3/2) - (-55 -110/2) - ;; Can't use this, these values aren't `='. - ;;(-12345678901234567890123457890123457890123457890123457890123457890 - ;; -12345678901234567890123457890123457890123457890123457890123457890.0) - ))) - (loop for li in equal-lists do - (loop for (x . tail) on li do - (loop for y in tail do - (Assert (equalp x y)) - (Assert (equalp y x)))))) - (let ((diff-list - `(0 1 2 3 1000 5000000000 5555555555555555555555555555555555555 - -1 -2 -3 -1000 -5000000000 -5555555555555555555555555555555555555 - 1/2 1/3 2/3 8/2 355/113 (/ 3/2 0.2) (/ 3/2 0.7) - 55555555555555555555555555555555555555555/2718281828459045 - 0.111111111111111111111111111111111111111111111111111111111111111 - 1e+300 1e+301 -1e+300 -1e+301))) - (loop for (x . tail) on diff-list do - (loop for y in tail do - (Assert (not (equalp x y))) - (Assert (not (equalp y x)))))) + (macrolet + ((equalp-equal-list-tests (equal-list) + (let (res) + (setq equal-lists (eval equal-list)) + (loop for li in equal-lists do + (loop for (x . tail) on li do + (loop for y in tail do + (push `(Assert (equalp ,(quote-maybe x) + ,(quote-maybe y))) res) + (push `(Assert (equalp ,(quote-maybe y) + ,(quote-maybe x))) res)))) + (cons 'progn (nreverse res)))) + (equalp-diff-list-tests (diff-list) + (let (res) + (setq diff-list (eval diff-list)) + (loop for (x . tail) on diff-list do + (loop for y in tail do + (push `(Assert (not (equalp ,(quote-maybe x) + ,(quote-maybe y)))) res) + (push `(Assert (not (equalp ,(quote-maybe y) + ,(quote-maybe x)))) res))) + (cons 'progn (nreverse res))))) + (equalp-equal-list-tests + `(,@(when (featurep 'bignum) + (read "((111111111111111111111111111111111111111111111111111 + 111111111111111111111111111111111111111111111111111.0))")) + (0 0.0 0.000 -0 -0.0 -0.000 #b0 ,@(when (featurep 'ratio) '(0/5 -0/5))) + (21845 #b101010101010101 #x5555) + (1.5 1.500000000000000000000000000000000000000000000000000000000 + ,@(when (featurep 'ratio) '(3/2))) + ;; Can't use this, these values aren't `='. + ;;(-12345678901234567890123457890123457890123457890123457890123457890 + ;; -12345678901234567890123457890123457890123457890123457890123457890.0) + (-55 -55.000 ,@(when (featurep 'ratio) '(-110/2))))) + (equalp-diff-list-tests + `(0 1 2 3 1000 5000000000 + ,@(when (featurep 'bignum) + (read "(5555555555555555555555555555555555555 + -5555555555555555555555555555555555555)")) + -1 -2 -3 -1000 -5000000000 + 1/2 1/3 2/3 8/2 355/113 + ,@(when (featurep 'ratio) (mapcar* #'/ '(3/2 3/2) '(0.2 0.7))) + 55555555555555555555555555555555555555555/2718281828459045 + 0.111111111111111111111111111111111111111111111111111111111111111 + 1e+300 1e+301 -1e+300 -1e+301))) (Assert (equalp "hi there" "Hi There") "checking equalp isn't case-sensitive") @@ -2231,7 +2248,7 @@ (let ((aragh (make-char-table 'generic))) (put-char-table ?\u0080 "hi there" aragh) aragh))) - "checking #'equalp fails correctly, char-tables") + "checking #'equalp fails correctly, char-tables")) ;; There are more tests available for equalp here: ;;