Time-stamp: <05/01/17 11:25:52 nhw> This is SchemeUnit 2.0 for PLT Scheme 299. The assertion language has been changed dramatically and existing uses of define-assertion will NOT work. Assertions can now capture arbitrary information to be displayed on failure. By default assertions now capture parameters and expressions. Other information can be captured using the with-assertion-info macro and with-assertion-info* function. For example, and assertions could capture the current time as follows: (define-assertion (my-assertion a b) (with-assertion-info (('current-time (current-seconds))) (if (< a b) (fail-assertion) #t))) Notice the call to fail-assertion. This is necessary to indicate failure. Old-style define-assertion calls can be replaced with define-simple-assertion. Setup and teardown arguments for test cases and test suites are specified by keyword arguments to make-test-case and make-test-suite. Glassbox testing is available via the require/expose macro text-ui displays Emacs compatible output. Graphical UI works in DrScheme 209. Additonal assertions (assert-regexp-match, assert-not-false) and helpful macros (make-test-suite*) See the documentation for full details. Changes from 1.4 to 1.5 Fix the packaging system to always install under the PLT root. Failure to do so causes problems with DrScheme 205 under Windows. Change the graphical UI to sync with DrScheme 205 Changes from 1.3 to 1.4 Corrected the type of the message in exceptions thrown by failed assertions. Was a symbol, now a string Catch anything thrown within a test and record an Error. Previous only checked for exn?, but raise can thrown anything. Fix an issue in the GUI that shows up on Mac OS X Changes to the GUI to support DrScheme 204, which unfortunately breaks compatability with 203. Fix an namespace issue that arose from a change in PLT Scheme between 203.3 and 203.6 Fix how locations are captured by assertions. 3D values aren't generated anymore, and locations are actually reported. Changes from 1.2 to 1.3 Added function (fold-test collector seed test) seed: 'a collector: test-result -> 'a test: (U test-suite test-case) Fold a function over the result of running a test. This allows incremental updates of testing UIs. Changed the assertion functions to provide nicer messages: clearly differentiate the inputs, provide location information, and generally better formatting. Changed all assertion methods to take optional text message as last argument. If it exists this message is displayed as the failure message along with the normal message. So: (assert op ex1 ex2 [message]) (assert-equal? ex1 ex2 [message]) ... Changed assertions to macros that grab source location. Display source location in error message. Provide function versions that have the same name with * appended, as done in Scsh. So: assert: macro assert*: function assert-equal?: macro assert-equal?*: function Provided define-assertion macro that allows users to define their own assertion macro/function combinations. (Encourage users to collect libraries of domain specific testing functions). So: (define-assertion (name param ...) . body) => (define-macro name (lambda (stx) ...)) (define name* (lambda (param ...) ...)) Added fail/fail* macro/fn: (fail [message]) An assertion that always fails Shifted test-result.ss and raw-test.ss into schemeunit.ss Restructured test-result objects to a more functional style Changes from 1.1 to 1.2 Changed require statements that reference schemeunit files using the (lib ...) form to reference using the 'file-in-the-same-directory' form. This way schemeunit will work regardless of the directory it is installed in. Rename test-fixture.ss to raw-test.ss to fit with the terminology used in the Scheme Workshop paper. Considering merging test-result.ss and raw-test.ss. Fixed the packaging problems. Thanks to Jose and Seb for help.