2
;;;; Author: Paul Dietz
3
;;;; Created: Tue Sep 9 06:30:57 2003
4
;;;; Contains: Tests of LOGXOR
8
(compile-and-load "numbers-aux.lsp")
12
(deftest logxor.error.1
13
(loop for x in *mini-universe*
14
unless (or (integerp x)
15
(eval `(signals-error (logxor ',x) type-error)))
19
(deftest logxor.error.2
20
(loop for x in *mini-universe*
21
unless (or (integerp x)
22
(eval `(signals-error (logxor 0 ',x) type-error)))
42
(loop for x in *integers*
43
always (eql x (logxor x)))
47
(loop for x in *integers*
48
always (and (eql -1 (logxor x (lognot x)))
50
(eql x (logxor x x x))))
54
(loop for x = (random-fixnum)
57
unless (eql -1 (logxor x xc))
62
(loop for x = (random-from-interval (ash 1 (random 200)))
63
for y = (random-from-interval (ash 1 (random 200)))
66
unless (and (if (or (and (< x 0) (>= y 0))
67
(and (>= x 0) (< y 0)))
70
(loop for i from 1 to 210
71
always (if (or (and (logbitp i x)
73
(and (not (logbitp i x))
76
(not (logbitp i z)))))
81
(loop for i from 1 to (min 256 (1- call-arguments-limit))
82
for args = (nconc (make-list (1- i) :initial-element 0)
84
always (eql (apply #'logxor args) 7131))
87
(deftest logxor.order.1
90
(logxor (progn (setf a (incf i)) #b11011)
91
(progn (setf b (incf i)) #b10110))
96
(deftest logxor.order.2
99
(logxor (progn (setf a (incf i)) #b11011)
100
(progn (setf b (incf i)) #b10110)
101
(progn (setf c (incf i)) #b110101))