Deftestvar dans test-unitaire + erreur dans le load du main.

This commit is contained in:
Georges Dupéron 2010-10-21 18:09:12 +02:00
parent acfad31438
commit fbfcc3bb1e
2 changed files with 32 additions and 21 deletions

View File

@ -5,7 +5,7 @@
(cons (copytree (car l)) (cons (copytree (car l))
(copytree (cdr l))))) (copytree (cdr l)))))
(load "environnement") (load "environnement")
(load "VM/instruction") (load "instructions")
;; ... ;; ...
(run-test t) (run-test t)
;(print-env-stack exemple-env-stack) ;(print-env-stack exemple-env-stack)

View File

@ -1,30 +1,33 @@
;; TODO : exploser tout ça en plein de petites fonctions, c'est trop gros...
;; Mutation cons. ;; Mutation cons.
(let ((tests nil)) (let ((tests nil))
(defmacro deftest (module test expected) (defmacro deftest (module test expected)
(if (not (assoc module tests)) (if (not (assoc module tests))
(setf tests (cons `(,module . ()) tests))) (setf tests (cons `(,module . (() . ())) tests)))
(let ((mod-tests (assoc module tests))) (let ((mod-tests (assoc module tests)))
(setf (cdr mod-tests) (setf (cddr mod-tests)
(cons (cons test expected) (cons (cons test expected)
(cdr mod-tests)))) (cddr mod-tests))))
nil) nil)
(defmacro run-test (&rest modules) (defmacro run-test (&rest modules)
(let ((failures 0) (let ((failures 0)
(modules (if (eq T (car modules)) (modules (if (eq T (car modules))
(mapcar #'car tests) (mapcar #'car tests)
modules))) modules)))
(if (every (lambda (mod) (if (every
(lambda (mod)
(if (member (car mod) modules) (if (member (car mod) modules)
(progn (progn
(format t "Module ~w :~&" (car mod)) (format t "~&Module ~w :~&" (car mod))
(let ((vars (cadr mod)))
(mapcar (lambda (test) (mapcar (lambda (test)
(let* ((res (eval (car test))) (let* ((res (eval `(let ,vars ,(car test))))
(expect (eval (cdr test)))) (expect (eval `(let ,vars ,(cdr test)))))
(if (equal expect res) (if (equal expect res)
(format t " [SUCCESS] ~w~&" (car test)) (format t "~& [SUCCESS] ~w~&" (car test))
(progn (format t " [FAILURE] Test : ~w~& got : ~w~& expected : ~w~&" (car test) res expect) (progn (format t " [FAILURE] Test : ~w~& got : ~w~& expected : ~w~&" (car test) res expect)
(setf failures (+ failures 1)))))) (setf failures (+ failures 1))))))
(reverse (cdr mod))))) (reverse (cddr mod))))))
(if (not (= failures 0)) (if (not (= failures 0))
(format t "Module ~w failed ~w tests. Stopping.~&" (car mod) failures)) (format t "Module ~w failed ~w tests. Stopping.~&" (car mod) failures))
(= failures 0)) (= failures 0))
@ -33,7 +36,15 @@
t) t)
nil))) nil)))
(defun show-test () (defun show-test ()
tests)) tests)
(defmacro deftestvar (module nom valeur)
(if (not (assoc module tests))
(setf tests (cons `(,module . (() . ())) tests)))
(let ((mod-vars (assoc module tests)))
(setf (cadr mod-vars)
(cons (list nom valeur)
(cadr mod-vars))))
nil))
;; Test de debugage du test unitaire ;; Test de debugage du test unitaire
;(deftest environnement nil nil) ;(deftest environnement nil nil)