diff --git a/main.lisp b/main.lisp index aea024f..53aa9a1 100644 --- a/main.lisp +++ b/main.lisp @@ -5,7 +5,7 @@ (cons (copytree (car l)) (copytree (cdr l))))) (load "environnement") -(load "VM/instruction") +(load "instructions") ;; ... (run-test t) ;(print-env-stack exemple-env-stack) diff --git a/test-unitaire.lisp b/test-unitaire.lisp index db51623..012b0e1 100755 --- a/test-unitaire.lisp +++ b/test-unitaire.lisp @@ -1,39 +1,50 @@ +;; TODO : exploser tout ça en plein de petites fonctions, c'est trop gros... ;; Mutation cons. (let ((tests nil)) (defmacro deftest (module test expected) (if (not (assoc module tests)) - (setf tests (cons `(,module . ()) tests))) + (setf tests (cons `(,module . (() . ())) tests))) (let ((mod-tests (assoc module tests))) - (setf (cdr mod-tests) + (setf (cddr mod-tests) (cons (cons test expected) - (cdr mod-tests)))) + (cddr mod-tests)))) nil) (defmacro run-test (&rest modules) (let ((failures 0) (modules (if (eq T (car modules)) (mapcar #'car tests) modules))) - (if (every (lambda (mod) - (if (member (car mod) modules) - (progn - (format t "Module ~w :~&" (car mod)) - (mapcar (lambda (test) - (let* ((res (eval (car test))) - (expect (eval (cdr test)))) - (if (equal expect res) - (format t " [SUCCESS] ~w~&" (car test)) - (progn (format t " [FAILURE] Test : ~w~& got : ~w~& expected : ~w~&" (car test) res expect) - (setf failures (+ failures 1)))))) - (reverse (cdr mod))))) - (if (not (= failures 0)) - (format t "Module ~w failed ~w tests. Stopping.~&" (car mod) failures)) - (= failures 0)) - tests) + (if (every + (lambda (mod) + (if (member (car mod) modules) + (progn + (format t "~&Module ~w :~&" (car mod)) + (let ((vars (cadr mod))) + (mapcar (lambda (test) + (let* ((res (eval `(let ,vars ,(car test)))) + (expect (eval `(let ,vars ,(cdr test))))) + (if (equal expect res) + (format t "~& [SUCCESS] ~w~&" (car test)) + (progn (format t " [FAILURE] Test : ~w~& got : ~w~& expected : ~w~&" (car test) res expect) + (setf failures (+ failures 1)))))) + (reverse (cddr mod)))))) + (if (not (= failures 0)) + (format t "Module ~w failed ~w tests. Stopping.~&" (car mod) failures)) + (= failures 0)) + tests) (progn (format t "All modules passed all tests successfully.~&") t) nil))) (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 ;(deftest environnement nil nil)