X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fclos.impure.lisp;h=cc43bc9879e072297032fdf7b05d44b31f162bcf;hb=e972550db41da8a21a89d0215670de70802bd3ee;hp=da5e1aa94c64303356e3c1be5964d7d3a62eb39f;hpb=3abdab003d4cdb02d7386dcd4bc8d9ac4dafb359;p=sbcl.git diff --git a/tests/clos.impure.lisp b/tests/clos.impure.lisp index da5e1aa..cc43bc9 100644 --- a/tests/clos.impure.lisp +++ b/tests/clos.impure.lisp @@ -700,5 +700,25 @@ (declare (notinline slot-value)) a)) +;;; from CLHS 7.6.5.1 +(defclass character-class () ((char :initarg :char))) +(defclass picture-class () ((glyph :initarg :glyph))) +(defclass character-picture-class (character-class picture-class) ()) + +(defmethod width ((c character-class) &key font) font) +(defmethod width ((p picture-class) &key pixel-size) pixel-size) + +(assert (raises-error? + (width (make-instance 'character-class :char #\Q) + :font 'baskerville :pixel-size 10) + program-error)) +(assert (raises-error? + (width (make-instance 'picture-class :glyph #\Q) + :font 'baskerville :pixel-size 10) + program-error)) +(assert (eq (width (make-instance 'character-picture-class :char #\Q) + :font 'baskerville :pixel-size 10) + 'baskerville)) + ;;;; success (sb-ext:quit :unix-status 104)