X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Finterface.pure.lisp;h=f329d031c80b504b548cd9c431e7c85854be5eb1;hb=4ac6cacd9348b4c568106f82c3a0a4294f49b44e;hp=a37c1f66986ecb56dc8c71e1f4547bd1e236c3ef;hpb=a2fcf3abd6d0b90f9de0f016ac5c9c65270294b2;p=sbcl.git diff --git a/tests/interface.pure.lisp b/tests/interface.pure.lisp index a37c1f6..f329d03 100644 --- a/tests/interface.pure.lisp +++ b/tests/interface.pure.lisp @@ -27,6 +27,14 @@ (assert (< 0 (length (apropos-list "PRINT" :cl)) (length (apropos-list "PRINT")))) +;;; Further, it should correctly deal with the external-only flag (bug +;;; reported by cliini on #lisp IRC 2003-05-30, fixed in sbcl-0.8.0.1x +;;; by CSR) +(assert (= (length (apropos-list "" "CL")) + (length (apropos-list "" "CL" t)))) +(assert (< 0 + (length (apropos-list "" "SB-VM" t)) + (length (apropos-list "" "SB-VM")))) ;;; DESCRIBE shouldn't fail on rank-0 arrays (bug reported and fixed ;;; by Lutz Euler sbcl-devel 2002-12-03) @@ -34,6 +42,49 @@ (describe #(1 2 3)) (describe #2a((1 2) (3 4))) +;;; support for DESCRIBE tests +(defstruct to-be-described a b) +(defclass forward-describe-class (forward-describe-ref) (a)) + +;;; DESCRIBE should run without signalling an error. +(describe (make-to-be-described)) +(describe 12) +(describe "a string") +(describe 'symbolism) +(describe (find-package :cl)) +(describe '(a list)) +(describe #(a vector)) + +;;; The DESCRIBE-OBJECT methods for built-in CL stuff should do +;;; FRESH-LINE and TERPRI neatly. +(dolist (i (list (make-to-be-described :a 14) 12 "a string" + #0a0 #(1 2 3) #2a((1 2) (3 4)) 'sym :keyword + (find-package :keyword) (list 1 2 3) + nil (cons 1 2) (make-hash-table) + (let ((h (make-hash-table))) + (setf (gethash 10 h) 100 + (gethash 11 h) 121) + h) + (make-condition 'simple-error) + (make-condition 'simple-error :format-control "fc") + #'car #'make-to-be-described (lambda (x) (+ x 11)) + (constantly 'foo) #'(setf to-be-described-a) + #'describe-object (find-class 'to-be-described) + (find-class 'forward-describe-class) + (find-class 'forward-describe-ref) (find-class 'cons))) + (let ((s (with-output-to-string (s) + (write-char #\x s) + (describe i s)))) + (unless (and (char= #\x (char s 0)) + ;; one leading #\NEWLINE from FRESH-LINE or the like, no more + (char= #\newline (char s 1)) + (char/= #\newline (char s 2)) + ;; one trailing #\NEWLINE from TERPRI or the like, no more + (let ((n (length s))) + (and (char= #\newline (char s (- n 1))) + (char/= #\newline (char s (- n 2)))))) + (error "misbehavior in DESCRIBE of ~S" i)))) + ;;; TYPEP, SUBTYPEP, UPGRADED-ARRAY-ELEMENT-TYPE and ;;; UPGRADED-COMPLEX-PART-TYPE should be able to deal with NIL as an ;;; environment argument @@ -47,3 +98,9 @@ ;;; DECLARE should not be a special operator (assert (not (special-operator-p 'declare))) + +;;; WITH-TIMEOUT should accept more than one form in its body. +(handler-bind ((sb-ext:timeout #'continue)) + (sb-ext:with-timeout 3 + (sleep 2) + (sleep 2)))