From 0158ba373431bc4dd15af46f1714db24efcb630b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= Date: Fri, 22 Oct 2010 21:01:38 +0200 Subject: [PATCH] =?UTF-8?q?Nouvelle=20version=20de=20test-unitaire=20(en?= =?UTF-8?q?=20cours,=20ne=20fonctionne=20pas=20=C3=A0=20100%).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- meval.lisp | 0 test-unitaire.lisp | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) mode change 100755 => 100644 meval.lisp mode change 100755 => 100644 test-unitaire.lisp diff --git a/meval.lisp b/meval.lisp old mode 100755 new mode 100644 diff --git a/test-unitaire.lisp b/test-unitaire.lisp old mode 100755 new mode 100644 index 012b0e1..4a7a6f9 --- a/test-unitaire.lisp +++ b/test-unitaire.lisp @@ -1,5 +1,42 @@ ;; TODO : exploser tout ça en plein de petites fonctions, c'est trop gros... ;; Mutation cons. +(defvar all-tests nil "Liste de tous les tests") + +(defmacro deftest (module test expected) + `(progn + (if (not (assoc ',module all-tests)) + (setf all-tests (cons '(,module . nil) all-tests))) + (setf (cdr (assoc ',module all-tests)) + (cons + (lambda () + (let ((res ,expected)) + (if (equal ,test res) + (progn + (format t "~& [SUCCESS] ~w~&" ',test) + t) + (progn + (format t "~& [FAILURE] Test : ~w~&" + ',test) + (format t "~& got : ~w~&" + res) + (format t "~& expected : ~w~&" + ',expected) + nil)))) + (cdr (assoc ',module all-tests)))))) + +(defmacro run-tests (&rest modules) + (if (or (not modules) + (eq (car modules) t)) + `(real-run-tests ',(mapcar #'car all-tests)) + `(real-run-tests ',modules))) + +(defun real-run-tests (modules) + (mapcar (lambda (module) + (if (member (car module) modules) + (mapcar (cdr module) #'funcall))) + all-tests + ) + (let ((tests nil)) (defmacro deftest (module test expected) (if (not (assoc module tests))