Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    clairepublic

    Claire Build Status Dependencies Status

    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 = require('claire')
    var _      = claire.data
    var forAll = claire.forAll
     
    var commutative_p = forAll( _.Int, _.Int ).satisfy( function(a, b) {
                          return a + b == b + a
                        }).asTest()
    // + OK passed 100 tests.
     
     
    var identity_p = forAll(_.Int).satisfy(function(a) {
                       return a == a + 1
                     })
     
    identity_p.asTest({ verbose: true, times: 100 })()
    // <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.

    browser support

    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.

    Keywords

    none

    install

    npm i claire

    Downloadsweekly downloads

    30

    version

    0.4.1

    license

    none

    repository

    githubgithub

    last publish

    collaborators

    • avatar