Mercurial > hg > xemacs-beta
changeset 5700:37479d841681
Fix subsetp based on patch by Benson and Steven Mitchell.
Add appropriate short-circuits for null set arguments.
Add tests (mostly from Steven Mitchell) to test suite.
author | Stephen J. Turnbull <stephen@xemacs.org> |
---|---|
date | Mon, 24 Dec 2012 14:12:51 +0900 |
parents | a95c89dc9695 |
children | ad35a0cd95f5 |
files | src/ChangeLog src/sequence.c tests/ChangeLog tests/automated/lisp-tests.el |
diffstat | 4 files changed, 44 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Mon Dec 24 04:16:31 2012 +0900 +++ b/src/ChangeLog Mon Dec 24 14:12:51 2012 +0900 @@ -1,3 +1,11 @@ +2012-12-24 Stephen J. Turnbull <stephen@xemacs.org> + + Based on patch by Benson and Steven Mitchell on XEmacs Beta + <50D16FF7.4090708@bnin.net>. + + * sequence.c (venn): Fix bug in handling null arguments. + Add null set short circuits, conditional on caller is `subsetp'. + 2012-10-18 Stephen J. Turnbull <stephen@xemacs.org> * fontcolor-xlike-inc.c (xft_find_charset_font):
--- a/src/sequence.c Mon Dec 24 04:16:31 2012 +0900 +++ b/src/sequence.c Mon Dec 24 14:12:51 2012 +0900 @@ -7606,6 +7606,20 @@ CHECK_LIST (liszt2); CHECK_KEY_ARGUMENT (key); + + /* #### Consider refactoring these tests into callers, and/or optimizing + tests. */ + if (EQ (caller, Qsubsetp)) + { + if (NILP (liszt1)) + { + return Qt; + } + if (NILP (liszt2)) + { + return Qnil; + } + } if (NILP (liszt1) && intersectionp) {
--- a/tests/ChangeLog Mon Dec 24 04:16:31 2012 +0900 +++ b/tests/ChangeLog Mon Dec 24 14:12:51 2012 +0900 @@ -1,3 +1,8 @@ +2012-12-19 Stephen J. Turnbull <stephen@xemacs.org> + + * automated/lisp-tests.el: Add tests of #'subsetp. + Thanks Steven and Benson Mitchell <smitchell@bnin.net>. + 2012-12-14 Mats Lidell <matsl@xemacs.org> * automated/register-tests.el: New. Test for register.el. Test
--- a/tests/automated/lisp-tests.el Mon Dec 24 04:16:31 2012 +0900 +++ b/tests/automated/lisp-tests.el Mon Dec 24 14:12:51 2012 +0900 @@ -2435,6 +2435,23 @@ (gethash hashed-bignum hashing)) "checking hashing works correctly with #'eql tests and bignums")))) +;; #'subsetp tests. +;; Return non-nil if every element of LIST1 also appears in LIST2. +;; A couple of non-nondegenerate false cases. +(Assert (not (subsetp (list ?a ?b) (list ?c ?d)))) +(Assert (not (subsetp (list ?a ?b) (list ?b ?c ?d)))) +;; Next five thanks to Steven and Benson Mitchell on XEmacs Beta +;; <50D16FF7.4090708@bnin.net>. +;; Two non-degenerate true cases. +(Assert (subsetp (list ?a) (list ?a ?b ?c ?d))) +(Assert (subsetp (list ?a ?b) (list ?a ?b ?c ?d))) +;; The three degenerate cases involving nil. +(Assert (not (subsetp (list ?a) nil))) +(Assert (subsetp nil (list ?a ?b ?c ?d))) +(Assert (subsetp nil nil)) +;; #### We should also test the keywords. +;; #### We should also test the error conditions. + ;; (when (decode-char 'ucs #x0192) (Check-Error