{"_id":"claire","_rev":"18-ee61e3e06b7b7854feeffdf11a25d035","name":"claire","description":"Property-based testing library (à lá QuickCheck/ScalaCheck).","dist-tags":{"latest":"0.4.1"},"versions":{"0.1.0":{"name":"claire","version":"0.1.0","description":"Property-based testing library (à lá QuickCheck/ScalaCheck).","main":"./lib/index.js","directories":{"doc":"docs"},"dependencies":{"boo":"~1.2.4","prelude-ls":"~0.6.0"},"devDependencies":{"claire-mocha":"~0.1.0","LiveScript":"~1.1.1","chai":"~1.5.0","mocha":"~1.8.1"},"scripts":{"test-cc":"./node_modules/.bin/lsc -o lib-test -c test/*.ls && ./node_modules/.bin/lsc -o lib -c src/*.ls","test":"./node_modules/.bin/mocha lib-test/*.js","pretest":"npm run-script test-cc","prepublish":"./node_modules/.bin/lsc -o lib -c src/*.ls"},"repository":{"type":"git","url":"git://github.com/killdream/claire.git"},"keywords":["testing","test","property-based testing","random testing","quickcheck"],"author":{"name":"Quildreen \"Sorella\" Motta","email":"quildreen@gmail.com"},"license":"MIT","readmeFilename":"README.md","calliope":{"output":"docs/api","copyright":"© 2013 Quildreen \"Sorella\" Motta","packages":[{"files":["src/*.ls"]}]},"testling":{"files":"lib-test/*.js","browsers":{"ie":[8,9,10],"firefox":[15,"nightly"],"chrome":[21,22,"canary"],"opera":[11,12,"next"],"safari":[5.1]},"harness":"mocha"},"readme":"Claire\n======\n\n[![Build Status](https://travis-ci.org/killdream/claire.png)](https://travis-ci.org/killdream/claire)\n\nClaire is a random testing library for both property-based testing\n(QuickCheck-like) and random program generation (ScalaCheck command's\nlike), which allows you to express your code's behaviours and invariants\nin a clear way.\n\n### Platform support\n\n[![browser support](http://ci.testling.com/killdream/claire.png)](http://ci.testling.com/killdream/claire)\n\n\n### Example \n\nThese uses the Claire API to collect data about a test. To have something that\nmakes sense of the collected data and works out of the box for testing, check\nout [Claire for Mocha][claire-mocha].\n\n```js\nvar claire = require('claire')\nvar _      = claire.data\n\n// Simple universal quantifier\nvar concat_p = claire.forAll ( _.List(_.Int), _.List(_.Int) )\n                     .satisfy(function(xs, ys) {\n                                return xs.length + ys.length\n                                    == xs.concat(ys).length })\n\n// Checking returns a Report with meta-data about the tests.\nclaire.check(100, concat_p)\n// (Object <| Report) => { property: { invariant: [Function] }\n//                       , passed: [ { ok: true, labels: [], arguments: [Object] }, ... ]\n//                       , failed: []\n//                       , ignored: []\n//                       , all: [ { ok: true, labels: [], arguments: [Object] }, ... ]\n//                       , labels: {}\n//                       , veredict: 'passed' }\n\n\n// Conditional properties\nvar sqrt_p = claire.forAll ( _.Int )\n                   .given  (function(n){ return n > 0 })\n                   .satisfy(function(n){ return Math.sqrt(n * n) == n })\n\n// The report can be made human-readable by just calling `.toString()'\nclaire.check(100, sqrt_p).toString()\n// (String) => \"+ OK passed 100 tests. 129 (56%) tests ignored.\"\n\n\n// Data classifiers\nvar reverse_p = claire.forAll ( _.List(_.Int), _.List(_.Int) )\n                      .satisfy(function(xs, ys) {\n                                 (reverse(xs.concat(ys)) + '')\n                                 == (reverse(ys).concat(reverse(xs)) + '') })\n                      .classify(function(xs, ys) {\n                                  return xs.length == 0? 'trivial'\n                                       : ys.length == 0? 'trivial'\n                                       : /* otherwise */ 'ok' })\n                                       \nclaire.check(100, reverse_p).toString()\n// (String) => \"+ OK passed 100 tests. \n//              > Collected test data:\n//                  o 85% - ok\n//                  o 15% - trivial\"\n```\n\n\n### Installing\n\nJust grab it from NPM:\n\n```js\nnpm install claire\n```\n\n\n### Documentation\n\nA reference of the API can be built using [Calliope][]:\n\n```js\n$ npm install -g calliope\n$ calliope build\n```\n\nA fully narrated documentation explaining the concepts behind the\nlibrary is planned for a future release.\n\n\n### Tests\n\nYou can run all tests using Mocha:\n\n```js\n$ npm test\n```\n\n\n### Licence\n\nMIT/X11. ie.: do whatever you want.\n\n\n[claire-mocha]: http://github.com/killdream/claire-mocha.git\n[Calliope]: http://github.com/killdream/calliope.git\n","_id":"claire@0.1.0","dist":{"shasum":"ab250b05f5e53adf533e5c08d8e509c662ef46b4","tarball":"https://registry.npmjs.org/claire/-/claire-0.1.0.tgz","integrity":"sha512-hgUdS/f6bmpSGu733/dVurBjuxGIjSXEFJqshz0IyvTRNWX7rDsHJxOIaBn+L5e4EIzugyOXrO3ZXDbgGI9ZqA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmD1coQoTcyXg8qddIRqgSsE5w9gU/cPEa6KNmTZS4KwIgfxXtDnYpt1D6uHMyJSTkQxGhFjzg8qCP7B9zcg6uqvw="}]},"_npmVersion":"1.1.69","_npmUser":{"name":"killdream","email":"quildreen@gmail.com"},"maintainers":[{"name":"killdream","email":"quildreen@gmail.com"}]},"0.2.0":{"name":"claire","version":"0.2.0","description":"Property-based testing library (à lá QuickCheck/ScalaCheck).","main":"./lib/index.js","directories":{"doc":"docs"},"dependencies":{"boo":"~1.2.4","prelude-ls":"~0.6.0"},"devDependencies":{"claire-mocha":"~0.1.2","LiveScript":"~1.1.1","chai":"~1.5.0","mocha":"~1.8.1","es5-shim":"~2.0.5"},"scripts":{"test-cc":"./node_modules/.bin/lsc -o lib-test -c test/*.ls && ./node_modules/.bin/lsc -o lib -c src/*.ls","test":"./node_modules/.bin/mocha lib-test/*.js","pretest":"npm run-script test-cc","prepublish":"./node_modules/.bin/lsc -o lib -c src/*.ls"},"repository":{"type":"git","url":"git://github.com/killdream/claire.git"},"keywords":["testing","test","property-based testing","random testing","quickcheck"],"author":{"name":"Quildreen \"Sorella\" Motta","email":"quildreen@gmail.com"},"license":"MIT","readmeFilename":"README.md","calliope":{"output":"docs/api","copyright":"© 2013 Quildreen \"Sorella\" Motta","packages":[{"files":["src/*.ls"]}]},"testling":{"files":"lib-test/*.js","preprocess":"npm run-script pretest","browsers":{"ie":[6,7,8,9,10],"firefox":[15,"nightly"],"chrome":[21,22,"canary"],"opera":[10,12,"next"],"safari":[5.1]},"harness":"mocha"},"readme":"Claire\n======\n\n[![Build Status](https://travis-ci.org/killdream/claire.png)](https://travis-ci.org/killdream/claire)\n\nClaire is a random testing library for both property-based testing\n(QuickCheck-like) and random program generation (ScalaCheck command's\nlike), which allows you to express your code's behaviours and invariants\nin a clear way.\n\n### Platform support\n\nClaire should work neatly in all ES5 platforms. ES3 platforms (IE8-,\netc) can use [es5-shim][] to provide the fallbacks necessary.\n\nThings are frozen to ensure immutability, but legacy engines can do\nwithout, so `Object.freeze = function(a) { return a }` is okay.\n\n[![browser support](http://ci.testling.com/killdream/claire.png)](http://ci.testling.com/killdream/claire)\n\n\n### Example \n\nThese uses the Claire API to collect data about a test. To have something that\nmakes sense of the collected data and works out of the box for testing, check\nout [Claire for Mocha][claire-mocha].\n\n```js\nvar claire = require('claire')\nvar _      = claire.data\n\n// Simple universal quantifier\nvar concat_p = claire.forAll ( _.List(_.Int), _.List(_.Int) )\n                     .satisfy(function(xs, ys) {\n                                return xs.length + ys.length\n                                    == xs.concat(ys).length })\n\n// Checking returns a Report with meta-data about the tests.\nclaire.check(100, concat_p)\n// (Object <| Report) => { property: { invariant: [Function] }\n//                       , passed: [ { ok: true, labels: [], arguments: [Object] }, ... ]\n//                       , failed: []\n//                       , ignored: []\n//                       , all: [ { ok: true, labels: [], arguments: [Object] }, ... ]\n//                       , labels: {}\n//                       , veredict: 'passed' }\n\n\n// Conditional properties\nvar sqrt_p = claire.forAll ( _.Int )\n                   .given  (function(n){ return n > 0 })\n                   .satisfy(function(n){ return Math.sqrt(n * n) == n })\n\n// The report can be made human-readable by just calling `.toString()'\nclaire.check(100, sqrt_p).toString()\n// (String) => \"+ OK passed 100 tests. 129 (56%) tests ignored.\"\n\n\n// Data classifiers\nvar reverse_p = claire.forAll ( _.List(_.Int), _.List(_.Int) )\n                      .satisfy(function(xs, ys) {\n                                 (reverse(xs.concat(ys)) + '')\n                                 == (reverse(ys).concat(reverse(xs)) + '') })\n                      .classify(function(xs, ys) {\n                                  return xs.length == 0? 'trivial'\n                                       : ys.length == 0? 'trivial'\n                                       : /* otherwise */ 'ok' })\n                                       \nclaire.check(100, reverse_p).toString()\n// (String) => \"+ OK passed 100 tests. \n//              > Collected test data:\n//                  o 85% - ok\n//                  o 15% - trivial\"\n```\n\n\n### Installing\n\nJust grab it from NPM:\n\n```js\nnpm install claire\n```\n\n\n### Documentation\n\nA reference of the API can be built using [Calliope][]:\n\n```js\n$ npm install -g calliope\n$ calliope build\n```\n\nA fully narrated documentation explaining the concepts behind the\nlibrary is planned for a future release.\n\n\n### Tests\n\nYou can run all tests using Mocha:\n\n```js\n$ npm test\n```\n\n\n### Licence\n\nMIT/X11. ie.: do whatever you want.\n\n\n[claire-mocha]: http://github.com/killdream/claire-mocha.git\n[Calliope]: http://github.com/killdream/calliope.git\n[es5-shim]: https://github.com/kriskowal/es5-shim\n","_id":"claire@0.2.0","dist":{"shasum":"f3bb1a425575e62bb4414c40ebab33b74069781e","tarball":"https://registry.npmjs.org/claire/-/claire-0.2.0.tgz","integrity":"sha512-AFKNNomSf3QYssmqnHbHYnZ4XyJzztnu02izSEkhZyWRdK5aI32LXAEdm3LY9XjKJZf6j//S4Djw2eR4RCmfZw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyb6Iej9r2v1srVgNNeKoI/s01DNWJfYPwfNZT6IZGMgIhAPpcEjMACNqwm82wToShcxwYnJJpxLErcPuEw3tJ/zhd"}]},"_npmVersion":"1.1.69","_npmUser":{"name":"killdream","email":"quildreen@gmail.com"},"maintainers":[{"name":"killdream","email":"quildreen@gmail.com"}]},"0.3.0":{"name":"claire","version":"0.3.0","description":"Property-based testing library (à lá QuickCheck/ScalaCheck).","main":"./lib/index.js","directories":{"doc":"docs"},"dependencies":{"boo":"~1.2.4","prelude-ls":"~0.6.0"},"devDependencies":{"claire-mocha":"~0.2.0","LiveScript":"~1.1.1","chai":"~1.5.0","mocha":"~1.8.1","es5-shim":"~2.0.5"},"scripts":{"test-cc":"./node_modules/.bin/lsc -o lib-test -c test/*.ls && ./node_modules/.bin/lsc -o lib -c src/*.ls","test":"./node_modules/.bin/mocha lib-test/*.js","pretest":"npm run-script test-cc","prepublish":"./node_modules/.bin/lsc -o lib -c src/*.ls"},"repository":{"type":"git","url":"git://github.com/killdream/claire.git"},"keywords":["testing","test","property-based testing","random testing","quickcheck"],"author":{"name":"Quildreen \"Sorella\" Motta","email":"quildreen@gmail.com"},"license":"MIT","readmeFilename":"README.md","calliope":{"output":"docs/api","copyright":"© 2013 Quildreen \"Sorella\" Motta","packages":[{"files":["src/*.ls"]}]},"testling":{"files":"lib-test/*.js","preprocess":"npm run-script pretest","browsers":{"ie":[6,7,8,9,10],"firefox":[15,"nightly"],"chrome":[21,22,"canary"],"opera":[10,12,"next"],"safari":[5.1]},"harness":"mocha"},"readme":"Claire\n======\n\n[![Build Status](https://travis-ci.org/killdream/claire.png)](https://travis-ci.org/killdream/claire)\n\nClaire is a random testing library for both property-based testing\n(QuickCheck-like) and random program generation (ScalaCheck command's\nlike), which allows you to express your code's behaviours and invariants\nin a clear way.\n\n### Platform support\n\nClaire should work neatly in all ES5 platforms. ES3 platforms (IE8-,\netc) can use [es5-shim][] to provide the fallbacks necessary.\n\nThings are frozen to ensure immutability, but legacy engines can do\nwithout, so `Object.freeze = function(a) { return a }` is okay.\n\n[![browser support](http://ci.testling.com/killdream/claire.png)](http://ci.testling.com/killdream/claire)\n\n\n### Example \n\nThese uses the Claire API to collect data about a test. To have something that\nmakes sense of the collected data and works out of the box for testing, check\nout [Claire for Mocha][claire-mocha].\n\n```js\nvar claire = require('claire')\nvar _      = claire.data\n\n// Simple universal quantifier\nvar concat_p = claire.forAll ( _.List(_.Int), _.List(_.Int) )\n                     .satisfy(function(xs, ys) {\n                                return xs.length + ys.length\n                                    == xs.concat(ys).length })\n\n// Checking returns a Report with meta-data about the tests.\nclaire.check(100, concat_p)\n// (Object <| Report) => { property: { invariant: [Function] }\n//                       , passed: [ { ok: true, labels: [], arguments: [Object] }, ... ]\n//                       , failed: []\n//                       , ignored: []\n//                       , all: [ { ok: true, labels: [], arguments: [Object] }, ... ]\n//                       , labels: {}\n//                       , veredict: 'passed' }\n\n\n// Conditional properties\nvar sqrt_p = claire.forAll ( _.Int )\n                   .given  (function(n){ return n > 0 })\n                   .satisfy(function(n){ return Math.sqrt(n * n) == n })\n\n// The report can be made human-readable by just calling `.toString()'\nclaire.check(100, sqrt_p).toString()\n// (String) => \"+ OK passed 100 tests. 129 (56%) tests ignored.\"\n\n\n// Data classifiers\nvar reverse_p = claire.forAll ( _.List(_.Int), _.List(_.Int) )\n                      .satisfy(function(xs, ys) {\n                                 (reverse(xs.concat(ys)) + '')\n                                 == (reverse(ys).concat(reverse(xs)) + '') })\n                      .classify(function(xs, ys) {\n                                  return xs.length == 0? 'trivial'\n                                       : ys.length == 0? 'trivial'\n                                       : /* otherwise */ 'ok' })\n                                       \nclaire.check(100, reverse_p).toString()\n// (String) => \"+ OK passed 100 tests. \n//              > Collected test data:\n//                  o 85% - ok\n//                  o 15% - trivial\"\n```\n\n\n### Installing\n\nJust grab it from NPM:\n\n```js\nnpm install claire\n```\n\n\n### Documentation\n\nA reference of the API can be built using [Calliope][]:\n\n```js\n$ npm install -g calliope\n$ calliope build\n```\n\nA fully narrated documentation explaining the concepts behind the\nlibrary is planned for a future release.\n\n\n### Tests\n\nYou can run all tests using Mocha:\n\n```js\n$ npm test\n```\n\n\n### Licence\n\nMIT/X11. ie.: do whatever you want.\n\n\n[claire-mocha]: http://github.com/killdream/claire-mocha.git\n[Calliope]: http://github.com/killdream/calliope.git\n[es5-shim]: https://github.com/kriskowal/es5-shim\n","_id":"claire@0.3.0","dist":{"shasum":"a91fbd871c623540e33f40da58e1ed8653fc4c14","tarball":"https://registry.npmjs.org/claire/-/claire-0.3.0.tgz","integrity":"sha512-KYbuGvwtEsC1ZmEXEth4fh1MH7dCHGlSRzAAlpgk3ltZrPQENXPF+q0y5rruvE80D3FXjp1lv5w4HgjAuX5c+g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC04+G0OyEvYW2udOHAKhK5mFoHpD4X0mLzzp1XnA+rjAIgBxLj6r9NkpiTsOqST1cLXALoExlAIpgGnY7Q9cZ0G9Q="}]},"_npmVersion":"1.1.69","_npmUser":{"name":"killdream","email":"quildreen@gmail.com"},"maintainers":[{"name":"killdream","email":"quildreen@gmail.com"}]},"0.3.2":{"name":"claire","version":"0.3.2","description":"Property-based testing library (à lá QuickCheck/ScalaCheck).","main":"./lib/index.js","directories":{"doc":"docs"},"dependencies":{"boo":"~1.2.4","prelude-ls":"~0.6.0","flaw":"~0.1.0"},"devDependencies":{"LiveScript":"~1.1.1","mocha":"~1.8.1","es5-shim":"~2.0.5","browserify":"~2.4.3"},"scripts":{"test-cc":"./node_modules/.bin/lsc -o lib-test -c test/*.ls && ./node_modules/.bin/lsc -o lib -c src/*.ls","test":"./node_modules/.bin/mocha lib-test/*.js","pretest-browser":"npm run-script test-cc && ./node_modules/.bin/browserify -o test/browser/suite-bundle.js -e test/browser/suite.js","pretest":"npm run-script test-cc","prepublish":"./node_modules/.bin/lsc -o lib -c src/*.ls"},"repository":{"type":"git","url":"git://github.com/killdream/claire.git"},"keywords":["testing","test","property-based testing","random testing","quickcheck"],"author":{"name":"Quildreen \"Sorella\" Motta","email":"quildreen@gmail.com"},"license":"MIT","readmeFilename":"README.md","calliope":{"output":"docs/api","copyright":"© 2013 Quildreen \"Sorella\" Motta","packages":[{"files":["src/*.ls"]}]},"testling":{"files":"test/browser/suite.js","preprocess":"npm run-script pretest-browser","browsers":{"ie":[6,7,8,9,10],"firefox":[15,"nightly"],"chrome":[21,22,"canary"],"opera":[10,12,"next"],"safari":[5.1]},"harness":"mocha"},"readme":"Claire\n======\n\n[![Build Status](https://travis-ci.org/killdream/claire.png)](https://travis-ci.org/killdream/claire)\n\nClaire is a random testing library for both property-based testing\n(QuickCheck-like) and random program generation (ScalaCheck command's\nlike), which allows you to express your code's behaviours and invariants\nin a clear way.\n\n### Platform support\n\nClaire should work neatly in all ES5 platforms. ES3 platforms (IE8-,\netc) can use [es5-shim][] to provide the fallbacks necessary.\n\nThings are frozen to ensure immutability, but legacy engines can do\nwithout, so `Object.freeze = function(a) { return a }` is okay.\n\n[![browser support](http://ci.testling.com/killdream/claire.png)](http://ci.testling.com/killdream/claire)\n\n\n### Example \n\nThese uses the Claire API to collect data about a test. To have something that\nmakes sense of the collected data and works out of the box for testing, check\nout [Claire for Mocha][claire-mocha].\n\n```js\nvar claire = require('claire')\nvar _      = claire.data\n\n// Simple universal quantifier\nvar concat_p = claire.forAll ( _.List(_.Int), _.List(_.Int) )\n                     .satisfy(function(xs, ys) {\n                                return xs.length + ys.length\n                                    == xs.concat(ys).length })\n\n// Checking returns a Report with meta-data about the tests.\nclaire.check(100, concat_p)\n// (Object <| Report) => { property: { invariant: [Function] }\n//                       , passed: [ { ok: true, labels: [], arguments: [Object] }, ... ]\n//                       , failed: []\n//                       , ignored: []\n//                       , all: [ { ok: true, labels: [], arguments: [Object] }, ... ]\n//                       , labels: {}\n//                       , veredict: 'passed' }\n\n\n// Conditional properties\nvar sqrt_p = claire.forAll ( _.Int )\n                   .given  (function(n){ return n > 0 })\n                   .satisfy(function(n){ return Math.sqrt(n * n) == n })\n\n// The report can be made human-readable by just calling `.toString()'\nclaire.check(100, sqrt_p).toString()\n// (String) => \"+ OK passed 100 tests. 129 (56%) tests ignored.\"\n\n\n// Data classifiers\nvar reverse_p = claire.forAll ( _.List(_.Int), _.List(_.Int) )\n                      .satisfy(function(xs, ys) {\n                                 (reverse(xs.concat(ys)) + '')\n                                 == (reverse(ys).concat(reverse(xs)) + '') })\n                      .classify(function(xs, ys) {\n                                  return xs.length == 0? 'trivial'\n                                       : ys.length == 0? 'trivial'\n                                       : /* otherwise */ 'ok' })\n                                       \nclaire.check(100, reverse_p).toString()\n// (String) => \"+ OK passed 100 tests. \n//              > Collected test data:\n//                  o 85% - ok\n//                  o 15% - trivial\"\n```\n\n\n### Installing\n\nJust grab it from NPM:\n\n```js\nnpm install claire\n```\n\n\n### Documentation\n\nA reference of the API can be built using [Calliope][]:\n\n```js\n$ npm install -g calliope\n$ calliope build\n```\n\nA fully narrated documentation explaining the concepts behind the\nlibrary is planned for a future release.\n\n\n### Tests\n\nYou can run all tests using Mocha:\n\n```js\n$ npm test\n```\n\n\n### Licence\n\nMIT/X11. ie.: do whatever you want.\n\n\n[claire-mocha]: http://github.com/killdream/claire-mocha.git\n[Calliope]: http://github.com/killdream/calliope.git\n[es5-shim]: https://github.com/kriskowal/es5-shim\n","_id":"claire@0.3.2","dist":{"shasum":"61d55efe83e8469ff684ba8bf4fa73053375a3ed","tarball":"https://registry.npmjs.org/claire/-/claire-0.3.2.tgz","integrity":"sha512-vdUJE9jtPz3TM0UH6C7ZmOJE4KwpSrhWWj9hD4SubFXeqeIwIyxyIG+oeTr/UmvmPzRiMkfSFsT2+l7+kBpmtw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICV5kv72kSBe93uu7AId9TID1OmQKUIJRxkPdw9aCT7iAiAs1YPxTXNEt858/TCapWiD6CzjEj12tNB/gRJHtsNzpg=="}]},"_npmVersion":"1.1.69","_npmUser":{"name":"killdream","email":"quildreen@gmail.com"},"maintainers":[{"name":"killdream","email":"quildreen@gmail.com"}]},"0.3.3":{"name":"claire","version":"0.3.3","description":"Property-based testing library (à lá QuickCheck/ScalaCheck).","main":"./lib/index.js","directories":{"doc":"docs"},"dependencies":{"boo":"~1.2.4","prelude-ls":"~0.6.0","flaw":"~0.1.0"},"devDependencies":{"LiveScript":"~1.1.1","mocha":"~1.8.1","es5-shim":"~2.0.5","browserify":"~2.4.3"},"scripts":{"test-cc":"./node_modules/.bin/lsc -o lib-test -c test/*.ls && ./node_modules/.bin/lsc -o lib -c src/*.ls","test":"./node_modules/.bin/mocha lib-test/*.js","pretest-browser":"npm run-script test-cc && ./node_modules/.bin/browserify -o test/browser/suite-bundle.js -e test/browser/suite.js","pretest":"npm run-script test-cc","prepublish":"./node_modules/.bin/lsc -o lib -c src/*.ls"},"repository":{"type":"git","url":"git://github.com/killdream/claire.git"},"keywords":["testing","test","property-based testing","random testing","quickcheck"],"author":{"name":"Quildreen \"Sorella\" Motta","email":"quildreen@gmail.com"},"license":"MIT","readmeFilename":"README.md","calliope":{"output":"docs/api","copyright":"© 2013 Quildreen \"Sorella\" Motta","packages":[{"files":["src/*.ls"]}]},"testling":{"files":"test/browser/suite.js","preprocess":"npm run-script pretest-browser","browsers":{"ie":[6,7,8,9,10],"firefox":[15,"nightly"],"chrome":[21,22,"canary"],"opera":[10,12,"next"],"safari":[5.1]},"harness":"mocha"},"readme":"# Claire [![Build Status](https://travis-ci.org/killdream/claire.png)](https://travis-ci.org/killdream/claire)\n\n\nClaire is a random testing library for both property-based testing\n([QuickCheck][]-like) and random program generation ([ScalaCheck][] command's\nlike), which allows you to express your code's behaviours and invariants\nin a clear way.\n\n### Platform support\n\nClaire should work neatly in all ES5 platforms. ES3 platforms (IE8-,\netc) can use [es5-shim][] to provide the fallbacks necessary.\n\nThings are frozen to ensure immutability, but legacy engines can do\nwithout, so `Object.freeze = function(a) { return a }` is okay.\n\n[![browser support](http://ci.testling.com/killdream/claire.png)](http://ci.testling.com/killdream/claire)\n\n\n### Example \n\n```js\nvar claire = require('claire')\nvar _      = claire.data\nvar forAll = claire.forAll\n\nvar commutative_p = forAll( _.Int, _.Int ).satisfy( function(a, b) {\n                      return a + b == b + a\n                    }).asTest()\n// + OK passed 100 tests.\n\n\nvar identity_p = forAll(_.Int).satisfy(function(a) {\n                   return a == a + 1\n                 })\n\nidentity_p.asTest({ verbose: true, times: 100 })()\n// <property failed>: ! Falsified after 1 tests, 1 failed.\n//\n// : Failure #1 --------------------\n//\n//\n// : The following arguments were provided:\n//   0 - 93 (<int>)\n//\n// (Stack trace)\n```\n\n\n### Installing\n\nJust grab it from NPM:\n\n```js\nnpm install claire\n```\n\n\n### Documentation\n\nA reference of the API can be built using [Calliope][]:\n\n```js\n$ npm install -g calliope\n$ calliope build\n```\n\nA fully narrated documentation explaining the concepts behind the\nlibrary is planned for a future release. Current WIP can be found at\nhttp://claire.readthedocs.org/.\n\n\n### Tests\n\nYou can run all tests using Mocha:\n\n```js\n$ npm test\n```\n\n\n### Licence\n\nMIT/X11. ie.: do whatever you want.\n\n\n[claire-mocha]: http://github.com/killdream/claire-mocha.git\n[Calliope]: http://github.com/killdream/calliope.git\n[es5-shim]: https://github.com/kriskowal/es5-shim\n[QuickCheck]: https://github.com/nick8325/quickcheck\n[ScalaCheck]: https://github.com/rickynils/scalacheck\n","_id":"claire@0.3.3","dist":{"shasum":"7dd7d7ce773237b033572bfd3348af52d658e27e","tarball":"https://registry.npmjs.org/claire/-/claire-0.3.3.tgz","integrity":"sha512-DpkC2e/NNfOS/TLUmb0UPmzl014Moc/2EXiyh5Ouip+2raMbgVXopAmMWNAbszhaY/XsJFEt+y/Moo6OyzcYEw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGMMcusaIQbuoYFYdpofZdc81UIFJPd1qBwb26QwBCseAiEAx7fXhvBqFh12r4qIbZcjWeHr1a/ZlJE9qqDcvJ1Gap8="}]},"_from":".","_npmVersion":"1.2.16","_npmUser":{"name":"killdream","email":"quildreen@gmail.com"},"maintainers":[{"name":"killdream","email":"quildreen@gmail.com"}]},"0.3.4":{"name":"claire","version":"0.3.4","description":"Property-based testing library (à lá QuickCheck/ScalaCheck).","main":"./lib/index.js","directories":{"doc":"docs"},"dependencies":{"boo":"~1.2.4","prelude-ls":"~0.6.0","flaw":"~0.1.0"},"devDependencies":{"LiveScript":"~1.1.1","mocha":"~1.8.1","es5-shim":"~2.0.5","browserify":"~2.4.3"},"scripts":{"test-cc":"./node_modules/.bin/lsc -o lib-test -c test/*.ls && ./node_modules/.bin/lsc -o lib -c src/*.ls","test":"./node_modules/.bin/mocha lib-test/*.js","pretest-browser":"npm run-script test-cc && ./node_modules/.bin/browserify -o test/browser/suite-bundle.js -e test/browser/suite.js","pretest":"npm run-script test-cc","prepublish":"./node_modules/.bin/lsc -o lib -c src/*.ls"},"repository":{"type":"git","url":"git://github.com/killdream/claire.git"},"keywords":["testing","test","property-based testing","random testing","quickcheck"],"author":{"name":"Quildreen \"Sorella\" Motta","email":"quildreen@gmail.com"},"license":"MIT","readmeFilename":"README.md","calliope":{"output":"docs/api","copyright":"© 2013 Quildreen \"Sorella\" Motta","packages":[{"files":["src/*.ls"]}]},"testling":{"files":"test/browser/suite.js","preprocess":"npm run-script pretest-browser","browsers":{"ie":[6,7,8,9,10],"firefox":[15,"nightly"],"chrome":[21,22,"canary"],"opera":[10,12,"next"],"safari":[5.1]},"harness":"mocha"},"readme":"# Claire [![Build Status](https://travis-ci.org/killdream/claire.png)](https://travis-ci.org/killdream/claire)\n\n\nClaire is a random testing library for both property-based testing\n([QuickCheck][]-like) and random program generation ([ScalaCheck][] command's\nlike), which allows you to express your code's behaviours and invariants\nin a clear way.\n\n### Platform support\n\nClaire should work neatly in all ES5 platforms. ES3 platforms (IE8-,\netc) can use [es5-shim][] to provide the fallbacks necessary.\n\nThings are frozen to ensure immutability, but legacy engines can do\nwithout, so `Object.freeze = function(a) { return a }` is okay.\n\n[![browser support](http://ci.testling.com/killdream/claire.png)](http://ci.testling.com/killdream/claire)\n\n\n### Example \n\n```js\nvar claire = require('claire')\nvar _      = claire.data\nvar forAll = claire.forAll\n\nvar commutative_p = forAll( _.Int, _.Int ).satisfy( function(a, b) {\n                      return a + b == b + a\n                    }).asTest()\n// + OK passed 100 tests.\n\n\nvar identity_p = forAll(_.Int).satisfy(function(a) {\n                   return a == a + 1\n                 })\n\nidentity_p.asTest({ verbose: true, times: 100 })()\n// <property failed>: ! Falsified after 1 tests, 1 failed.\n//\n// : Failure #1 --------------------\n//\n//\n// : The following arguments were provided:\n//   0 - 93 (<int>)\n//\n// (Stack trace)\n```\n\n\n### Installing\n\nJust grab it from NPM:\n\n```js\nnpm install claire\n```\n\n\n### Documentation\n\nA reference of the API can be built using [Calliope][]:\n\n```js\n$ npm install -g calliope\n$ calliope build\n```\n\nA fully narrated documentation explaining the concepts behind the\nlibrary is planned for a future release. Current WIP can be found at\nhttp://claire.readthedocs.org/.\n\n\n### Tests\n\nYou can run all tests using Mocha:\n\n```js\n$ npm test\n```\n\n\n### Licence\n\nMIT/X11. ie.: do whatever you want.\n\n\n[claire-mocha]: http://github.com/killdream/claire-mocha.git\n[Calliope]: http://github.com/killdream/calliope.git\n[es5-shim]: https://github.com/kriskowal/es5-shim\n[QuickCheck]: https://github.com/nick8325/quickcheck\n[ScalaCheck]: https://github.com/rickynils/scalacheck\n","_id":"claire@0.3.4","dist":{"shasum":"8262af1888ceb1ff41c281dcf1a035a81d8f413c","tarball":"https://registry.npmjs.org/claire/-/claire-0.3.4.tgz","integrity":"sha512-EniiHsDxzNDEpxvUQKh7zeC/vljE+kZyy5DGE+EO14ADBqyOlPHw3L0eaNQzRK2WSDSs0/SDVij7Jc3+J02Rrw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAlnXpBNuJEY7R/h4cTR3xCgcEvicsrsy6d1xyiqNGZQAiEAwMadBTvCBMzWz3oHkn5N4/DBeRy+XaqClf6zpcdnn7U="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"killdream","email":"quildreen@gmail.com"},"maintainers":[{"name":"killdream","email":"quildreen@gmail.com"}]},"0.4.1":{"name":"claire","version":"0.4.1","description":"Property-based testing library (à lá QuickCheck/ScalaCheck).","main":"./lib/index.js","directories":{"doc":"docs"},"dependencies":{"boo":"~1.2.4","prelude-ls":"~0.6.0","flaw":"~0.1.0"},"devDependencies":{"LiveScript":"~1.1.1","es5-shim":"~2.0.5","browserify":"~2.4.3","brofist-tap":"~0.1.0","brofist":"~0.2.3","brofist-minimal":"~0.1.1"},"scripts":{"test":"make test","prepublish":"make prepublish"},"repository":{"type":"git","url":"git://github.com/killdream/claire.git"},"keywords":["testing","test","property-based testing","random testing","quickcheck"],"author":{"name":"Quildreen \"Sorella\" Motta","email":"quildreen@gmail.com"},"license":"MIT","readmeFilename":"README.md","calliope":{"output":"docs/api","copyright":"© 2013 Quildreen \"Sorella\" Motta","packages":[{"files":["src/*.ls"]}]},"testling":{"files":"build/test/tap.js","browsers":["ie/6..latest","chrome/20..latest","firefox/15..latest","safari/latest","opera/11.0..latest","iphone/6","ipad/6","android-browser/4.2"]},"readme":"# Claire [![Build Status](https://travis-ci.org/killdream/claire.png)](https://travis-ci.org/killdream/claire) ![Dependencies Status](https://david-dm.org/killdream/claire.png)\n\n\nClaire is a random testing library for both property-based testing\n([QuickCheck][]-like) and random program generation ([ScalaCheck][] command's\nlike), which allows you to express your code's behaviours and invariants\nin a clear way.\n\n[QuickCheck]: https://github.com/nick8325/quickcheck\n[ScalaCheck]: https://github.com/rickynils/scalacheck\n\n### Example \n\n```js\nvar claire = require('claire')\nvar _      = claire.data\nvar forAll = claire.forAll\n\nvar commutative_p = forAll( _.Int, _.Int ).satisfy( function(a, b) {\n                      return a + b == b + a\n                    }).asTest()\n// + OK passed 100 tests.\n\n\nvar identity_p = forAll(_.Int).satisfy(function(a) {\n                   return a == a + 1\n                 })\n\nidentity_p.asTest({ verbose: true, times: 100 })()\n// <property failed>: ! Falsified after 1 tests, 1 failed.\n//\n// : Failure #1 --------------------\n//\n//\n// : The following arguments were provided:\n//   0 - 93 (<int>)\n//\n// (Stack trace)\n```\n\n\n### Installing\n\nThe easiest way is to grab it from NPM (use [Browserify][] if you're on a\nbrowser):\n\n    $ npm install claire\n    \nIf you **really** want to continue suffering with old and terrible module\nsystems (or use no module system at all), you can run `make bundle` yourself:\n\n    $ git clone git://github.com/killdream/claire\n    $ cd claire\n    $ npm install\n    $ make bundle\n    # Then use `dist/claire.umd.js` wherever you want.\n    \n[browserify]: https://github.com/substack/node-browserify\n\n\n### Documentation\n\nA reference of the API can be built using [Calliope][]:\n\n    $ npm install -g calliope\n    $ calliope build\n\n\nA fully narrated documentation explaining the concepts behind the\nlibrary is planned for a future release. Current WIP can be found at\nhttp://claire.readthedocs.org/.\n\n[Calliope]: http://github.com/killdream/calliope.git\n\n\n### Platform support\n\nClaire should work neatly in all ES5 platforms. ES3 platforms (IE8-,\netc) can use [es5-shim][] to provide the fallbacks necessary.\n\n[es5-shim]: https://github.com/kriskowal/es5-shim\n\nThings are frozen to ensure immutability, but legacy engines can do\nwithout, so `Object.freeze = function(a) { return a }` is okay.\n\n[![browser support](https://ci.testling.com/killdream/claire.png)](http://ci.testling.com/killdream/claire)\n\n\n### Tests\n\nFor node:\n\n    $ npm test\n\nFor the browser:\n\n    $ npm install -g brofist-browser\n    $ make test\n    $ brofist-browser serve test/specs\n    # Then point your browsers to the URL on yer console\n\n\n### Licence\n\nMIT/X11. ie.: do whatever you want.\n","_id":"claire@0.4.1","dist":{"shasum":"ca70dc1261ddd8f25a1afabad3805c39fce263bc","tarball":"https://registry.npmjs.org/claire/-/claire-0.4.1.tgz","integrity":"sha512-Fd148tEhlyv8PThI947v//49q6Vp7HyMB9BhC2HtQdH+rU8TPrZq07TTN/tg1hngjYK7Fa4GbHwAfQ0aXIqJ6g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChnWNmuHeDeBxnwDhxJtWRemF5rYhFnf90WT5gWW0lfwIhAIP6BsOX7/QvUWJs+f02xktgWfAMGXoOn5hyMbvIYWQC"}]},"_from":".","_npmVersion":"1.2.16","_npmUser":{"name":"killdream","email":"quildreen@gmail.com"},"maintainers":[{"name":"killdream","email":"quildreen@gmail.com"}]}},"readme":"Claire\n======\n\n[![Build Status](https://travis-ci.org/killdream/claire.png)](https://travis-ci.org/killdream/claire)\n\nClaire is a random testing library for both property-based testing\n(QuickCheck-like) and random program generation (ScalaCheck command's\nlike), which allows you to express your code's behaviours and invariants\nin a clear way.\n\n### Platform support\n\n[![browser support](http://ci.testling.com/killdream/claire.png)](http://ci.testling.com/killdream/claire)\n\n\n### Example \n\nThese uses the Claire API to collect data about a test. To have something that\nmakes sense of the collected data and works out of the box for testing, check\nout [Claire for Mocha][claire-mocha].\n\n```js\nvar claire = require('claire')\nvar _      = claire.data\n\n// Simple universal quantifier\nvar concat_p = claire.forAll ( _.List(_.Int), _.List(_.Int) )\n                     .satisfy(function(xs, ys) {\n                                return xs.length + ys.length\n                                    == xs.concat(ys).length })\n\n// Checking returns a Report with meta-data about the tests.\nclaire.check(100, concat_p)\n// (Object <| Report) => { property: { invariant: [Function] }\n//                       , passed: [ { ok: true, labels: [], arguments: [Object] }, ... ]\n//                       , failed: []\n//                       , ignored: []\n//                       , all: [ { ok: true, labels: [], arguments: [Object] }, ... ]\n//                       , labels: {}\n//                       , veredict: 'passed' }\n\n\n// Conditional properties\nvar sqrt_p = claire.forAll ( _.Int )\n                   .given  (function(n){ return n > 0 })\n                   .satisfy(function(n){ return Math.sqrt(n * n) == n })\n\n// The report can be made human-readable by just calling `.toString()'\nclaire.check(100, sqrt_p).toString()\n// (String) => \"+ OK passed 100 tests. 129 (56%) tests ignored.\"\n\n\n// Data classifiers\nvar reverse_p = claire.forAll ( _.List(_.Int), _.List(_.Int) )\n                      .satisfy(function(xs, ys) {\n                                 (reverse(xs.concat(ys)) + '')\n                                 == (reverse(ys).concat(reverse(xs)) + '') })\n                      .classify(function(xs, ys) {\n                                  return xs.length == 0? 'trivial'\n                                       : ys.length == 0? 'trivial'\n                                       : /* otherwise */ 'ok' })\n                                       \nclaire.check(100, reverse_p).toString()\n// (String) => \"+ OK passed 100 tests. \n//              > Collected test data:\n//                  o 85% - ok\n//                  o 15% - trivial\"\n```\n\n\n### Installing\n\nJust grab it from NPM:\n\n```js\nnpm install claire\n```\n\n\n### Documentation\n\nA reference of the API can be built using [Calliope][]:\n\n```js\n$ npm install -g calliope\n$ calliope build\n```\n\nA fully narrated documentation explaining the concepts behind the\nlibrary is planned for a future release.\n\n\n### Tests\n\nYou can run all tests using Mocha:\n\n```js\n$ npm test\n```\n\n\n### Licence\n\nMIT/X11. ie.: do whatever you want.\n\n\n[claire-mocha]: http://github.com/killdream/claire-mocha.git\n[Calliope]: http://github.com/killdream/calliope.git\n","maintainers":[{"name":"killdream","email":"quildreen@gmail.com"}],"time":{"modified":"2022-06-13T06:04:56.865Z","created":"2013-02-28T16:03:40.620Z","0.1.0":"2013-02-28T16:03:41.805Z","0.2.0":"2013-03-10T00:15:14.212Z","0.3.0":"2013-03-10T01:13:57.735Z","0.3.2":"2013-03-21T00:54:59.375Z","0.3.3":"2013-04-21T15:24:04.524Z","0.3.4":"2013-04-27T19:32:16.975Z","0.4.1":"2013-05-25T14:17:36.577Z"},"author":{"name":"Quildreen \"Sorella\" Motta","email":"quildreen@gmail.com"},"repository":{"type":"git","url":"git://github.com/killdream/claire.git"},"users":{"stonecypher":true}}