2
;;;; Author: Paul Dietz
3
;;;; Created: Wed Apr 1 22:10:54 1998
4
;;;; Contains: Tests of SUBSETP
8
(compile-and-load "cons-aux.lsp")
10
(defvar cons-test-24-var '(78 "z" (8 9)))
13
(subsetp-with-check (copy-tree '(78)) cons-test-24-var)
17
(subsetp-with-check (copy-tree '((8 9))) cons-test-24-var)
21
(subsetp-with-check (copy-tree '((8 9)))
22
cons-test-24-var :test 'equal)
26
(subsetp-with-check (list 78 (copy-seq "Z")) cons-test-24-var
31
(subsetp-with-check (list 1) (list 0 2 3 4)
32
:key #'(lambda (i) (floor (/ i 2))))
36
(subsetp-with-check (list 1 6) (list 0 2 3 4)
37
:key #'(lambda (i) (floor (/ i 2))))
41
(subsetp-with-check (list '(a . 10) '(b . 20) '(c . 30))
42
(list '(z . c) '(a . y) '(b . 100) '(e . f)
48
(subsetp-with-check (copy-tree '((a . 10) (b . 20) (c . 30)))
49
(copy-tree '((z . c) (a . y) (b . 100) (e . f)
55
(subsetp-with-check (list 'a 'b 'c)
57
(list '(z . c) '(a . y) '(b . 100) '(e . f)
59
:test #'(lambda (e1 e2)
64
(subsetp-with-check (list 'a 'b 'c)
66
(list '(z . c) '(a . y) '(b . 100) '(e . f)
68
:test #'(lambda (e1 e2)
74
(subsetp-with-check (list 'a 'b 'c)
76
(list '(z . c) '(a . y) '(b . 100) '(e . f)
78
:test-not #'(lambda (e1 e2)
79
(not (eqt e1 (car e2)))))
82
;; Check that it maintains order of arguments
90
(when (< y x) (return-from fail 'fail))
100
:test #'(lambda (x y)
101
(when (< y x) (return-from fail 'fail))
110
:test-not #'(lambda (x y)
111
(when (< y x) (return-from fail 'fail))
121
:test-not #'(lambda (x y)
122
(when (< y x) (return-from fail 'fail))
126
(defharmless subsetp.test-and-test-not.1
127
(subsetp '(a b c) '(a g c e b) :test #'eql :test-not #'eql))
129
(defharmless subsetp.test-and-test-not.3
130
(subsetp '(a b c) '(a g c e b) :test-not #'eql :test #'eql))
132
;;; Order of argument evaluation tests
134
(deftest subsetp.order.1
137
(notnot (subsetp (progn (setf x (incf i))
139
(progn (setf y (incf i))
144
(deftest subsetp.order.2
147
(notnot (subsetp (progn (setf x (incf i))
149
(progn (setf y (incf i))
151
:test (progn (setf z (incf i)) #'eql)
152
:key (progn (setf w (incf i)) nil)))
156
(deftest subsetp.order.3
159
(notnot (subsetp (progn (setf x (incf i))
161
(progn (setf y (incf i))
163
:key (progn (setf z (incf i)) nil)
164
:test (progn (setf w (incf i)) #'eql)))
170
(deftest subsetp.allow-other-keys.1
171
(notnot-mv (subsetp '(1 2 3 4) '(0 1 2 3 4 5) :bad t :allow-other-keys 67))
174
(deftest subsetp.allow-other-keys.2
175
(notnot-mv (subsetp '(1 2 3 4) '(0 1 2 3 4 5)
176
:allow-other-keys #'cons :bad t))
179
(deftest subsetp.allow-other-keys.3
180
(notnot-mv (subsetp '(1 2 3 4) '(0 1 2 3 4)
181
:allow-other-keys (make-hash-table)
183
:test #'(lambda (x y) (= (1+ x) y))))
186
(deftest subsetp.allow-other-keys.4
187
(notnot-mv (subsetp '(1 2 3 4) '(0 1 2 3 4 5) :allow-other-keys t))
190
(deftest subsetp.allow-other-keys.5
191
(notnot-mv (subsetp '(1 2 3 4) '(0 1 2 3 4 5) :allow-other-keys nil))
194
(deftest subsetp.allow-other-keys.6
195
(notnot-mv (subsetp '(1 2 3 4) '(0 1 2 3 4 5)
196
:allow-other-keys t :bad1 t
197
:allow-other-keys nil :bad2 t))
200
(deftest subsetp.keywords.7
201
(notnot-mv (subsetp '(1 2 3 4) '(0 1 2 3 4)
202
:test #'(lambda (x y) (= (1+ x) y))
206
(deftest subsetp.keywords.8
207
(notnot-mv (subsetp '(1 2 3 4 10) '(0 1 2 3 4)
209
:key #'(lambda (x) (mod x 2))))
215
(deftest subsetp.error.1
216
(signals-error (subsetp) program-error)
219
(deftest subsetp.error.2
220
(signals-error (subsetp nil) program-error)
223
(deftest subsetp.error.3
224
(signals-error (subsetp nil nil :bad t) program-error)
227
(deftest subsetp.error.4
228
(signals-error (subsetp nil nil :key) program-error)
231
(deftest subsetp.error.5
232
(signals-error (subsetp nil nil 1 2) program-error)
235
(deftest subsetp.error.6
236
(signals-error (subsetp nil nil :bad t :allow-other-keys nil) program-error)
239
(deftest subsetp.error.7
240
(signals-error (subsetp (list 1 2) (list 3 4) :test #'identity) program-error)
243
(deftest subsetp.error.8
244
(signals-error (subsetp (list 1 2) (list 3 4) :test-not #'identity) program-error)
247
(deftest subsetp.error.9
248
(signals-error (subsetp (list 1 2) (list 3 4) :key #'cons) program-error)
251
(deftest subsetp.error.10
252
(signals-error (subsetp (list 1 2) (list 3 4) :key #'car) type-error)
255
(deftest subsetp.error.11
256
(signals-error (subsetp (list 1 2 3) (list* 4 5 6)) type-error)
259
(deftest subsetp.error.12
260
(signals-error (subsetp (list* 1 2 3) (list 1 2 3 4 5 6)) type-error)