;-*- Mode:     Lisp -*-
;;;; Author:   Paul Dietz
;;;; Created:  Thu Sep 11 23:22:46 2003
;;;; Contains: Tests for LOGTEST



;;; Error tests

(deftest logtest.error.1
  (signals-error (logtest) program-error)
  t)

(deftest logtest.error.2
  (signals-error (logtest 0) program-error)
  t)

(deftest logtest.error.3
  (signals-error (logtest 0 0 nil) program-error)
  t)

(deftest logtest.error.4
  (check-type-error #'(lambda (x) (logtest x -1)) #'integerp)
  nil)

(deftest logtest.error.5
  (check-type-error #'(lambda (x) (logtest -1 x)) #'integerp)
  nil)

;;; Non-error tests

(deftest logtest.1
  (loop for x = (logand (random-fixnum) (random-fixnum))
        for y = (logand (random-fixnum) (random-fixnum))
        repeat 10000
        unless (if (logtest x y)
                   (not (zerop (logand x y)))
                 (zerop (logand x y)))
        collect (list x y))
  nil)

(deftest logtest.2
  (logtest 1 2)
  nil)

(deftest logtest.3
  (notnot-mv (logtest 8 (logior 8 4)))
  t)



