QCheck is a library for automatic unit testing of Standard ML modules, in the spirit of (Haskell) QuickCheck. You provide specifications (in the form of ML code) of the properties that your module's functions should satisfy, and ask QCheck to exercise the module with randomly-chosen test cases. It will show how many cases passed the test, and print counter-examples in case of failure. Actually, random testing is just one possibility; QCheck can pull test cases from any kind of stream (disk file, data structure, etc.)
QCheck works with SML/NJ, MLton, Moscow ML, and Poly/ML. The output format is fully configurable, and it can report on distribution statistics for generated test cases. Please don't hesitate to contact me with any bug reports, questions, or feature requests.
If you wish to track the latest developments in QCheck/SML or perhaps contribute to it, clone the git repository like this:
git clone git://github.com/league/qcheck.git
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.