Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-07-21

KMRCLを眺める(177) RUN-TESTS-FOR-INSTANCE

| 22:39 | KMRCLを眺める(177) RUN-TESTS-FOR-INSTANCE - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(177) RUN-TESTS-FOR-INSTANCE - わだばLisperになる

KMRCLを眺める、今回は、KMRCLのsymbols.lispからFIND-TEST-GENERIC-FUNCTIONSです。

RUN-TESTS-FOR-INSTANCEは、前回の謎関数FIND-TEST-GENERIC-FUNCTIONSを利用するもので定義は、

(defun run-tests-for-instance (instance)
  (dolist (gf-name(find-test-generic-functions instance))
    (funcall gf-name instance))
  (values))

となっています。これから使い方を想像するに

(DEFCLASS FOO () 
  ((X :INITFORM 1 :ACCESSOR FOO-X)
   (Y :INITFORM 2 :ACCESSOR FOO-Y)
   (Z :INITFORM 3 :ACCESSOR FOO-Z)))

(DEFMETHOD TEST-FOO1 ((X FOO))
  (PRINT (LIST '(= 1 (FOO-X (MAKE-INSTANCE 'FOO)))
               '=> 
               (= 1 (FOO-X (MAKE-INSTANCE 'FOO))))))

(DEFMETHOD TEST-FOO2 ((X FOO))
  (PRINT (LIST
          '(= 2 (FOO-Y (MAKE-INSTANCE 'FOO)))
          '=> 
          (= 2 (FOO-Y (MAKE-INSTANCE 'FOO))))))

(DEFMETHOD TEST-FOO3 ((X FOO))
  (PRINT (LIST
          '(= 3 (FOO-Z (MAKE-INSTANCE 'FOO)))
          '=> 
          (= 3 (FOO-Z (MAKE-INSTANCE 'FOO))))))

;; テスト実行
(KL::RUN-TESTS-FOR-INSTANCE (MAKE-INSTANCE 'FOO))
;->
((= 2 (FOO-Y (MAKE-INSTANCE 'FOO))) => T) 
((= 3 (FOO-Z (MAKE-INSTANCE 'FOO))) => T) 
((= 1 (FOO-X (MAKE-INSTANCE 'FOO))) => T)

みたいな感じでしょうか。

とりあえず、TEST-というメソッドを片っ端から実行するんだということは理解できましたが…

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20100721