X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=t%2Ftests.lisp;h=65918d1bb672c0ddd555f62e36dd8d6865d79c08;hb=372507fd1ff4341e9eb744b61f92a83f2c45b593;hp=47a92fcede08751d482f6371d65296309061a43b;hpb=168a8cb290c6d9b3fa40e500fd044ecacebb5429;p=fiveam.git diff --git a/t/tests.lisp b/t/tests.lisp index 47a92fc..65918d1 100644 --- a/t/tests.lisp +++ b/t/tests.lisp @@ -1,23 +1,22 @@ -;;;; -*- lisp -*- +;;;; -*- Mode: Lisp; indent-tabs-mode: nil -*- -(in-package :it.bese.FiveAM) +(in-package :it.bese.fiveam) -(in-suite :it.bese.FiveAM) +(in-suite :it.bese.fiveam) -(def-suite test-suite - :description "Suite for tests which should fail." - :default-test-args '(:fixture null-fixture :compile-at :run-time)) +(def-suite test-suite :description "Suite for tests which should fail.") (defmacro with-test-results ((results test-name) &body body) `(let ((,results (with-*test-dribble* nil (run ',test-name)))) ,@body)) +(rem-fixture 'null-fixture) (def-fixture null-fixture () `(progn ,@(&body))) ;;;; Test the checks -(test (is1 :suite test-suite) +(def-test is1 (:suite test-suite) (is (plusp 1)) (is (< 0 1)) (is (not (plusp -1))) @@ -25,7 +24,7 @@ (is-true t) (is-false nil)) -(test (is2 :suite test-suite :fixture foo) +(def-test is2 (:suite test-suite :fixture null-fixture) (is (plusp 0)) (is (< 0 -1)) (is (not (plusp 1))) @@ -33,7 +32,7 @@ (is-true nil) (is-false t)) -(test is +(def-test is (:profile t) (with-test-results (results is1) (is (= 6 (length results))) (is (every #'test-passed-p results))) @@ -41,46 +40,46 @@ (is (= 6 (length results))) (is (every #'test-failure-p results)))) -(test signals/finishes +(def-test signals/finishes () (signals error (error "an error")) (finishes (signals error (error "an error")))) -(test pass +(def-test pass () (pass)) -(test (fail1 :suite test-suite) +(def-test fail1 (:suite test-suite) (fail "This is supposed to fail")) -(test fail +(def-test fail () (with-test-results (results fail1) (is (= 1 (length results))) (is (test-failure-p (first results))))) ;;;; non top level checks -(test foo-bar +(def-test foo-bar () (let ((state 0)) (is (= 0 state)) (is (= 1 (incf state))))) ;;;; Test dependencies -(test (ok :suite test-suite) +(def-test ok (:suite test-suite) (pass)) -(test (not-ok :suite test-suite) +(def-test not-ok (:suite test-suite) (fail "This is supposed to fail.")) -(test (and1 :depends-on (and ok not-ok) :suite test-suite) +(def-test and1 (:depends-on (and ok not-ok) :suite test-suite) (fail)) -(test (and2 :depends-on (and ok) :suite test-suite) +(def-test and2 (:depends-on (and ok) :suite test-suite) (pass)) -(test dep-and +(def-test dep-and () (with-test-results (results and1) (is (= 3 (length results))) ;; we should have one skippedw one failed and one passed @@ -91,13 +90,13 @@ (is (= 2 (length results))) (is (every #'test-passed-p results)))) -(test (or1 :depends-on (or ok not-ok) :suite test-suite) +(def-test or1 (:depends-on (or ok not-ok) :suite test-suite) (pass)) -(test (or2 :depends-on (or not-ok ok) :suite test-suite) +(def-test or2 (:depends-on (or not-ok ok) :suite test-suite) (pass)) -(test dep-or +(def-test dep-or () (with-test-results (results or1) (is (= 2 (length results))) (is (every #'test-passed-p results))) @@ -105,13 +104,13 @@ (is (= 3 (length results))) (is (= 2 (length (remove-if-not #'test-passed-p results)))))) -(test (not1 :depends-on (not not-ok) :suite test-suite) +(def-test not1 (:depends-on (not not-ok) :suite test-suite) (pass)) -(test (not2 :depends-on (not ok) :suite test-suite) +(def-test not2 (:depends-on (not ok) :suite test-suite) (fail)) -(test not +(def-test not () (with-test-results (results not1) (is (= 2 (length results))) (is (some #'test-passed-p results)) @@ -121,29 +120,29 @@ (is (some #'test-passed-p results)) (is (some #'test-skipped-p results)))) -(test (nested-logic :depends-on (and ok (not not-ok) (not not-ok)) +(def-test nested-logic (:depends-on (and ok (not not-ok) (not not-ok)) :suite test-suite) (pass)) -(test dep-nested +(def-test dep-nested () (with-test-results (results nested-logic) (is (= 3 (length results))) (is (= 2 (length (remove-if-not #'test-passed-p results)))) (is (= 1 (length (remove-if-not #'test-failure-p results)))))) -(test (circular-0 :depends-on (and circular-1 circular-2 or1) +(def-test circular-0 (:depends-on (and circular-1 circular-2 or1) :suite test-suite) (fail "we depend on a circular dependency, we should not be tested.")) -(test (circular-1 :depends-on (and circular-2) +(def-test circular-1 (:depends-on (and circular-2) :suite test-suite) (fail "we have a circular depednency, we should not be tested.")) -(test (circular-2 :depends-on (and circular-1) +(def-test circular-2 (:depends-on (and circular-1) :suite test-suite) (fail "we have a circular depednency, we should not be tested.")) -(test circular +(def-test circular () (signals circular-dependency (run 'circular-0)) (signals circular-dependency @@ -151,16 +150,75 @@ (signals circular-dependency (run 'circular-2))) -(test gen-integer + +(def-suite before-test-suite :description "Suite for before test") + +(def-test before-0 (:suite before-test-suite) + (pass)) + +(def-test before-1 (:depends-on (:before before-0) + :suite before-test-suite) + (fail)) + +(def-suite before-test-suite-2 :description "Suite for before test") + +(def-test before-2 (:depends-on (:before before-3) + :suite before-test-suite-2) + (pass)) + +(def-test before-3 (:suite before-test-suite-2) + (pass)) + +(def-test before () + (with-test-results (results before-test-suite) + (is (some #'test-skipped-p results))) + + (with-test-results (results before-test-suite-2) + (is (every #'test-passed-p results)))) + + +;;;; dependencies with symbol +(def-test dep-with-symbol-first (:suite test-suite) + (pass)) + +(def-test dep-with-symbol-dependencies-not-met (:depends-on (not dep-with-symbol-first) + :suite test-suite) + (fail "Error in the test of the test, this should not ever happen")) + +(def-test dep-with-symbol-depends-on-ok (:depends-on dep-with-symbol-first :suite test-suite) + (pass)) + +(def-test dep-with-symbol-depends-on-failed-dependency (:depends-on dep-with-symbol-dependencies-not-met + :suite test-suite) + (fail "No, I should not be tested becuase I depend on a test that in its turn has a failed dependecy.")) + +(def-test dependencies-with-symbol () + (with-test-results (results dep-with-symbol-first) + (is (some #'test-passed-p results))) + + (with-test-results (results dep-with-symbol-depends-on-ok) + (is (some #'test-passed-p results))) + + (with-test-results (results dep-with-symbol-dependencies-not-met) + (is (some #'test-skipped-p results))) + + ;; No failure here, because it means the test was run. + (with-test-results (results dep-with-symbol-depends-on-failed-dependency) + (is (not (some #'test-failure-p results))))) + + +;;;; test for-all + +(def-test gen-integer () (for-all ((a (gen-integer))) (is (integerp a)))) -(test for-all-guarded +(def-test for-all-guarded () (for-all ((less (gen-integer)) (more (gen-integer) (< less more))) (is (< less more)))) -(test gen-float +(def-test gen-float () (macrolet ((test-gen-float (type) `(for-all ((unbounded (gen-float :type ',type)) (bounded (gen-float :type ',type :bound 42))) @@ -172,14 +230,14 @@ (test-gen-float double-float) (test-gen-float long-float))) -(test gen-character +(def-test gen-character () (for-all ((c (gen-character))) (is (characterp c))) (for-all ((c (gen-character :code (gen-integer :min 32 :max 40)))) (is (characterp c)) (member c (list #\Space #\! #\" #\# #\$ #\% #\& #\' #\()))) -(test gen-string +(def-test gen-string () (for-all ((s (gen-string))) (is (stringp s))) (for-all ((s (gen-string :length (gen-integer :min 0 :max 2)))) @@ -193,7 +251,7 @@ (lambda () (list 1 1))) -(test for-all-destructuring-bind +(def-test for-all-destructuring-bind () (for-all (((a b) (dummy-mv-generator))) (is (= 1 a)) (is (= 1 b))))