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 |

2008-01-12

lisp-unit

| 16:54 | lisp-unit - わだばLisperになる を含むブックマーク はてなブックマーク - lisp-unit - わだばLisperになる

Clikiからは新しく登録されたり更新されたパッケージ(ライブラリ)のRSSがフィードされているのですが、ふと思い立って、更新されたパッケージを追い掛けてやたらインストールして、試したログをここに書いてみることにしました。

色々な面白いパッケージが沢山あるのですが、如何せん情報がみつけられないことが多いので、片っ端からインストールしてみれば、何か面白いもの発見できるかな、という安易な考えです。

とりあえず、今回は、lisp-unitを試してみることにしました。前までは、LispUnitという名前だったのですが、この度名前をlisp-unitに変更したようです。

パッケージ名lisp-unit
本拠地サイトno title
ClikiCLiki: lisp-unit
ASDF-INSTALL
(asdf-install:install :lisp-unit)

インストール

asdf-install可能なので、(asdf-install:install :lisp-unit)で一発インストール完了です。

使ってみる

かなり古くからある、リグレッションテストのパッケージ:RTと大体同じような使い勝手に思えました。

テストをDEFINE-TESTで定義して、RUN-TESTで実行するところなど共通点は多いと思います。

(defpackage #:cl-2008-01-12 
  (:use #:cl))

(in-package #:cl-2008-01-12)

(defun fib (n)
  (cond ((< n 2) n)
	('T (+ (fib (1- n))
	       (fib (- n 2))))))

(defun fib-iter (n)
  (do ((cnt n (1- cnt))
       (a1 1 (+ a1 a2))
       (a2 0 a1))
      ((< cnt 2) a1)))

のようなファイル(cl-2008-01-12.lisp)があるとすると、

(require :lisp-unit)

(load "cl-2008-01-12")

(defpackage :test_cl-2008-01-12
  (:use #:cl #:lisp-unit))


(in-package #:test_cl-2008-01-12)


(define-test fib
  (assert-eql 55 (cl-2008-01-12::fib 10))
  (assert-eql 1 (cl-2008-01-12::fib 1))

  (loop :for i from 1 :to 30
        :do (assert-eql (cl-2008-01-12::fib-iter i) (cl-2008-01-12::fib i)))
  
  )

(run-all-tests :test_cl-2008-01-12)

(cl-2008-01-12::fib-iter 0)
;=>FIB: 32 assertions passed, 0 failed.

のように書いてテストが書けます。

RTでは、deftestに一つずつ別の名前を付けなくちゃいけなかったりするので、自分は、それ用のマクロを定義して使ったりしてましたが、lisp-unitはRTより使い勝手は良いようです。

本拠地のサイトに丁寧な説明が用意されています。

自分も一時ユニットテストを使っていたのですが、テストを書くのが段々面倒になってしまい、ひたすらSLIMEのコンパイルエラーの指摘に頼ってコードを書くようになってしまいました。

これを使ってもう少し、精神衛生上すっきりしたコード書きができるようになりたいものです。

SLIMEで支援用ELISPを書いてCompile Defunと同じ位簡単にテストまで完了したいという妄想はあるのですが、なかなか自分の力量的に難しいなあ。

ゲスト



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