Claire
Claire is a random testing library for both property-based testing (QuickCheck-like) and random program generation (ScalaCheck command's like), which allows you to express your code's behaviours and invariants in a clear way.
Example
var claire = var _ = clairedatavar forAll = claireforAll var commutative_p = // + OK passed 100 tests. var identity_p = identity_p// <property failed>: ! Falsified after 1 tests, 1 failed.//// : Failure #1 --------------------////// : The following arguments were provided:// 0 - 93 (<int>)//// (Stack trace)
Installing
The easiest way is to grab it from NPM (use Browserify if you're on a browser):
$ npm install claire
If you really want to continue suffering with old and terrible module
systems (or use no module system at all), you can run make bundle
yourself:
$ git clone git://github.com/killdream/claire
$ cd claire
$ npm install
$ make bundle
# Then use `dist/claire.umd.js` wherever you want.
Documentation
A reference of the API can be built using Calliope:
$ npm install -g calliope
$ calliope build
A fully narrated documentation explaining the concepts behind the library is planned for a future release. Current WIP can be found at http://claire.readthedocs.org/.
Platform support
Claire should work neatly in all ES5 platforms. ES3 platforms (IE8-, etc) can use es5-shim to provide the fallbacks necessary.
Things are frozen to ensure immutability, but legacy engines can do
without, so Object.freeze = function(a) { return a }
is okay.
Tests
For node:
$ npm test
For the browser:
$ npm install -g brofist-browser
$ make test
$ brofist-browser serve test/specs
# Then point your browsers to the URL on yer console
Licence
MIT/X11. ie.: do whatever you want.