;;;; * Introduction
-;;;; FiveAM is A simple Common Lisp unit testing library.
-
;;;; FiveAM is a testing framework. It takes care of all the boring
;;;; bookkeeping associated with managing a test framework allowing
;;;; the developer to focus on writing tests and code.
;;;; FiveAM was designed with the following premises:
;;;; - Defining tests should be about writing tests, not
-;;;; infrastructure. The developer should be able to focus on what
-;;;; they're testing, not the testing framework.
+;;;; infrastructure. The developer should be able to focus on what
+;;;; they're testing, not the testing framework.
;;;; - Interactive testing is the norm. Common Lisp is an interactive
-;;;; development environment, the testing environment should allow
-;;;; the developer to quickly and easily redefine, change, remove
-;;;; and run tests.
-
-(defpackage :it.bese.FiveAM
- (:use :common-lisp :it.bese.arnesi)
- (:nicknames :5am)
- (:export ;; creating tests and test-suites
- #:make-suite
- #:def-suite
- #:in-suite
- #:make-test
- #:test
- #:get-test
- #:rem-test
- ;; fixtures
- #:make-fixture
- #:def-fixture
- #:with-fixture
- #:get-fixture
- #:rem-fixture
- ;; running checks
- #:is
- #:is-true
- #:is-false
- #:signals
- #:finishes
- #:skip
- #:pass
- #:fail
- #:*test-dribble*
- #:for-all
- #:gen-integer
- #:gen-string
- #:gen-character
- ;; running tests
- #:run
- #:run-all-tests
- #:explain
- #:run!
- #:!
- #:!!
- #:!!!
- #:*debug-on-error*
- #:*debug-on-failure*
- #:*verbose-failures*))
+;;;; development environment, the testing environment should allow the
+;;;; developer to quickly and easily redefine, change, remove and run
+;;;; tests.
+
+(defpackage :it.bese.fiveam
+ (:use :common-lisp :alexandria)
+ (:nicknames :5am :fiveam)
+ (:export
+ ;; creating tests and test-suites
+ #:make-suite
+ #:def-suite
+ #:in-suite
+ #:in-suite*
+ #:make-test
+ #:test
+ #:get-test
+ #:rem-test
+ #:test-names
+ ;; fixtures
+ #:make-fixture
+ #:def-fixture
+ #:with-fixture
+ #:get-fixture
+ #:rem-fixture
+ ;; running checks
+ #:is
+ #:is-every
+ #:is-true
+ #:is-false
+ #:signals
+ #:finishes
+ #:skip
+ #:pass
+ #:fail
+ #:*test-dribble*
+ #:for-all
+ #:gen-integer
+ #:gen-float
+ #:gen-character
+ #:gen-string
+ #:gen-list
+ #:gen-tree
+ #:gen-buffer
+ #:gen-one-element
+ ;; running tests
+ #:run
+ #:run-all-tests
+ #:explain
+ #:explain!
+ #:run!
+ #:debug!
+ #:!
+ #:!!
+ #:!!!
+ #:*run-test-when-defined*
+ #:*debug-on-error*
+ #:*debug-on-failure*
+ #:*verbose-failures*
+ #:results-status))
;;;; You can use #+5am to put your test-defining code inline with your
;;;; other code - and not require people to have fiveam to run your
;;;;@include "check.lisp"
-;;;;@include "test.lisp"
+;;;;@include "random.lisp"
;;;;@include "fixture.lisp"
+;;;;@include "test.lisp"
+
;;;;@include "suite.lisp"
;;;;@include "run.lisp"
;;;;@include "explain.lisp"
-;;;; * Examples
-
-#| (def-suite my-suite :description "My Example Suite")
-
- (in-suite my-suite)
-
- (test my-tests
- "Example"
- (is (= 4 (+ 2 2)) "2 plus 2 wasn't equal to 4 (using #'= to test equality)")
- (is (= 0 (+ -1 1)))
- (throws (error "Trying to add 4 to FOO didn't signal an error")
- (+ 'foo 4))
- (is (= 0 (+ 1 1)) "this should have failed"))
-
- (run! 'my-suite)
-;; Running suite MY-SUITE
-..F.
-Suite My Example Suite ran 4 tests (3/0/1) - 1 FAILED -
-Failed Tests:
-MY-TESTS FAILED: (+ 1 1) was not = to 0 (returned 2 instead)
- Description: Example.
- Message: this should have failed
-NIL |#
-
;;;; * Colophon
;;;; This documentaion was written by Edward Marco Baringer
;;;; ** COPYRIGHT
;;;; Copyright (c) 2002-2003, Edward Marco Baringer
-;;;; All rights reserved.
-
+;;;; All rights reserved.
+
;;;; Redistribution and use in source and binary forms, with or without
;;;; modification, are permitted provided that the following conditions are
;;;; met:
-
+
;;;; - Redistributions of source code must retain the above copyright
;;;; notice, this list of conditions and the following disclaimer.
-
+
;;;; - Redistributions in binary form must reproduce the above copyright
;;;; notice, this list of conditions and the following disclaimer in the
;;;; documentation and/or other materials provided with the distribution.
;;;; - Neither the name of Edward Marco Baringer, nor BESE, nor the names
;;;; of its contributors may be used to endorse or promote products
;;;; derived from this software without specific prior written permission.
-
+
;;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
;;;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
;;;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR