# HG changeset patch # User Stephen J. Turnbull # Date 1356325971 -32400 # Node ID 37479d8416810831c38fdf352b5935e29bedf108 # Parent a95c89dc96957f050fd77bd1670674a0da2b3dbe 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. diff -r a95c89dc9695 -r 37479d841681 src/ChangeLog --- 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 + + 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 * fontcolor-xlike-inc.c (xft_find_charset_font): diff -r a95c89dc9695 -r 37479d841681 src/sequence.c --- 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) { diff -r a95c89dc9695 -r 37479d841681 tests/ChangeLog --- 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 + + * automated/lisp-tests.el: Add tests of #'subsetp. + Thanks Steven and Benson Mitchell . + 2012-12-14 Mats Lidell * automated/register-tests.el: New. Test for register.el. Test diff -r a95c89dc9695 -r 37479d841681 tests/automated/lisp-tests.el --- 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