New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

jsverify

Package Overview
Dependencies
Maintainers
1
Versions
61
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jsverify - npm Package Compare versions

Comparing version 0.4.6 to 0.5.0-beta.1

.flowconfig

6

lib/arbitrary.js

@@ -0,1 +1,2 @@

/* @flow weak */
"use strict";

@@ -65,6 +66,3 @@

return {
generator: generator.bless(function (size) {
return [a.generator(size), b.generator(size)];
}),
generator: generator.tuple([a.generator, b.generator]),
shrink: shrink.tuple([a.shrink, b.shrink]),

@@ -71,0 +69,0 @@ show: show.def,

@@ -0,1 +1,2 @@

/* @flow weak */
"use strict";

@@ -2,0 +3,0 @@

@@ -0,1 +1,2 @@

/* @flow weak */
"use strict";

@@ -2,0 +3,0 @@

@@ -0,1 +1,2 @@

/* @flow weak */
"use strict";

@@ -2,0 +3,0 @@

@@ -0,1 +1,2 @@

/* @flow weak */
"use strict";

@@ -2,0 +3,0 @@

@@ -0,4 +1,6 @@

/* @flow weak */
"use strict";
var random = require("./random.js");
var utils = require("./utils.js");

@@ -11,16 +13,16 @@ /**

/* eslint-disable no-use-before-define */
function generatorProtoMap(generator) {
return function (f) {
return generatorBless(function (size) {
return f(generator(size));
});
};
function generatorProtoMap(f) {
/* jshint validthis:true */
var generator = this;
return generatorBless(function (size) {
return f(generator(size));
});
}
function generatorProtoFlatMap(generator) {
return function (f) {
return generatorBless(function (size) {
return f(generator(size))(size);
});
};
function generatorProtoFlatMap(f) {
/* jshint validthis:true */
var generator = this;
return generatorBless(function (size) {
return f(generator(size))(size);
});
}

@@ -30,4 +32,4 @@ /* eslint-enable no-use-before-define */

function generatorBless(generator) {
generator.map = generatorProtoMap(generator);
generator.flatmap = generatorProtoFlatMap(generator);
generator.map = generatorProtoMap;
generator.flatmap = generatorProtoFlatMap;
return generator;

@@ -51,4 +53,20 @@ }

/**
- `generator.array(gen: Gen a, size: nat): gen (array a)`
- `generator.tuple(gens: (gen a, gen b...), size: nat): gen (a, b...)`
*/
function generateTuple(gens) {
var len = gens.length;
var result = generatorBless(function (size) {
var r = [];
for (var i = 0; i < len; i++) {
r[i] = gens[i](size);
}
return r;
});
return utils.curried2(result, arguments);
}
/**
- `generator.array(gen: gen a, size: nat): gen (array a)`
*/
function generateArray(gen) {

@@ -64,7 +82,3 @@ var result = generatorBless(function (size) {

if (arguments.length === 2) {
return result(arguments[1]);
} else {
return result;
}
return utils.curried2(result, arguments);
}

@@ -85,17 +99,16 @@

if (arguments.length === 2) {
return result(arguments[1]);
} else {
return result;
}
return utils.curried2(result, arguments);
}
/**
- `generator.char: gen char`
*/
var generateChar = generatorBless(function generateChar(/* size */) {
return String.fromCharCode(random(0, 0xff));
});
/**
- `generator.string(size: nat): gen string`
*/
function generateString(size) {
return generateArray(function () {
return String.fromCharCode(random(0, 0xff));
}, size).join("");
}
var generateString = generateArray(generateChar).map(utils.charArrayToString);

@@ -105,9 +118,17 @@ /**

*/
function generateNEString(size) {
return generateNEArray(function () {
return String.fromCharCode(random(0, 0xff));
}, size).join("");
}
var generateNEString = generateNEArray(generateChar).map(utils.charArrayToString);
/**
- `generator.asciichar: gen char`
*/
var generateAsciiChar = generatorBless(function generateAsciiChar(/* size */) {
return String.fromCharCode(random(0x20, 0x7e));
});
/**
- `generator.asciistring(size: nat): gen string`
*/
var generateAsciiString = generateArray(generateAsciiChar).map(utils.charArrayToString);
/**
- `generator.map(gen: gen a, size: nat): gen (map a)`

@@ -125,7 +146,3 @@ */

if (arguments.length === 2) {
return result(arguments[1]);
} else {
return result;
}
return utils.curried2(result, arguments);
}

@@ -143,7 +160,3 @@

if (arguments.length === 2) {
return result(arguments[1]);
} else {
return result;
}
return utils.curried2(result, arguments);
}

@@ -208,6 +221,10 @@

module.exports = {
tuple: generateTuple,
array: generateArray,
nearray: generateNEArray,
char: generateChar,
string: generateString,
nestring: generateNEString,
asciichar: generateAsciiChar,
asciistring: generateAsciiString,
map: generateMap,

@@ -214,0 +231,0 @@ json: generateJson,

@@ -0,1 +1,2 @@

/* @flow weak */
/**

@@ -6,3 +7,3 @@ # JSVerify

> Property based checking.
> Property based checking. Like QuickCheck.

@@ -134,3 +135,3 @@ [![Build Status](https://secure.travis-ci.org/jsverify/jsverify.svg?branch=master)](http://travis-ci.org/jsverify/jsverify)

};
return transform ? transform(res) : res;
return transform(res);
} else {

@@ -178,3 +179,2 @@ return shrinkPPrime;

assert(Array.isArray(x), "generators results should be always tuple");
shrinks = shrinks || 0;

@@ -202,3 +202,3 @@ return functor.bind(property, x, function (r, exc) {

return shrinkResult(gens, x, test, size, shrinks, exc);
return shrinkResult(gens, x, test, size, shrinks, exc, utils.identity);
});

@@ -209,3 +209,3 @@ }

var x = gens.map(function (arb) { return arb.generator(size); });
var r = test(size, x);
var r = test(size, x, 0);
return r;

@@ -212,0 +212,0 @@ };

@@ -0,1 +1,2 @@

/* @flow weak */
"use strict";

@@ -21,2 +22,26 @@

function numeric(impl) {
return function (minsize, maxsize) {
if (arguments.length === 2) {
var arb = impl(maxsize - minsize);
var to = function to(x) {
return Math.abs(x) + minsize;
};
var from = function from(x) {
return x - minsize;
};
return {
generator: arb.generator.map(to),
shrink: arb.shrink.isomap(to, from),
show: show.def,
};
} else if (arguments.length === 1) {
return impl(minsize /* as minsize */);
} else {
return impl();
}
};
}
/**

@@ -29,21 +54,3 @@ - `integer: arbitrary integer`

*/
function integer(minsize, maxsize) {
if (arguments.length === 2) {
var arb = integer(maxsize - minsize);
var to = function to(x) {
return Math.abs(x) + minsize;
};
var from = function from(x) {
return x - minsize;
};
return {
generator: arb.generator.map(to),
shrink: arb.shrink.isomap(to, from),
show: show.def,
};
} else if (arguments.length === 1) {
maxsize = minsize;
}
var integer = numeric(function integer(maxsize) {
return {

@@ -74,3 +81,3 @@ generator: generator.bless(function (size) {

};
}
});

@@ -115,21 +122,3 @@ extendWithDefault(integer);

*/
function number(minsize, maxsize) {
if (arguments.length === 2) {
var arb = number(maxsize - minsize);
var to = function to(x) {
return Math.abs(x) + minsize;
};
var from = function from(x) {
return x - minsize;
};
return {
generator: arb.generator.map(to),
shrink: arb.shrink.isomap(to, from),
show: show.def,
};
} else if (arguments.length === 1) {
maxsize = minsize;
}
var number = numeric(function number(maxsize) {
return {

@@ -149,3 +138,3 @@ generator: generator.bless(function (size) {

};
}
});

@@ -173,3 +162,3 @@ extendWithDefault(number);

/**
- `bool: generator bool`
- `bool: arbitrary bool`

@@ -191,3 +180,3 @@ Booleans, `true` or `false`.

/**
- `datetime: generator datetime`
- `datetime: arbitrary datetime`

@@ -236,3 +225,3 @@ Random datetime

/**
- `elements(args: array a): generator a`
- `elements(args: array a): arbitrary a`

@@ -262,15 +251,10 @@ Random element of `args` array.

function natToChar(n) {
return String.fromCharCode(n);
}
/**
- `char: generator char`
- `char: arbitrary char`
Single character
*/
var natChar = nat(0x1ff);
var char = {
generator: natChar.generator.map(natToChar),
generator: generator.char,
shrink: shrink.noop,

@@ -280,15 +264,9 @@ show: show.def,

function natToAsciiChar(n) {
return String.fromCharCode(n + 0x20);
}
/**
- `asciichar: generator char`
- `asciichar: arbitrary char`
Single ascii character (0x20-0x7e inclusive, no DEL)
*/
var natAsciiChar = nat(0x77 - 0x20);
var asciichar = {
generator: natAsciiChar.generator.map(natToAsciiChar),
generator: generator.asciichar,
shrink: shrink.noop,

@@ -298,12 +276,4 @@ show: show.def,

function arrayToString(arr) {
return arr.join("");
}
function stringToArray(str) {
return str.split("");
}
/**
- `string: generator string`
- `string: arbitrary string`
*/

@@ -313,3 +283,3 @@ function string() {

generator: generator.string,
shrink: shrink.array(char.shrink).isomap(arrayToString, stringToArray),
shrink: shrink.array(char.shrink).isomap(utils.charArrayToString, utils.stringToCharArray),
show: show.def,

@@ -328,3 +298,3 @@ };

generator: generator.nestring,
shrink: shrink.nearray(asciichar.shrink).isomap(arrayToString, stringToArray),
shrink: shrink.nearray(asciichar.shrink).isomap(utils.charArrayToString, utils.stringToCharArray),
show: show.def,

@@ -334,9 +304,7 @@ };

/**
- `asciistring: generator string`
- `asciistring: arbitrary string`
*/
var asciistring = {
generator: generator.bless(function (size) {
return generator.array(asciichar.generator, size).join("");
}),
shrink: shrink.array(asciichar.shrink).isomap(arrayToString, stringToArray),
generator: generator.asciistring,
shrink: shrink.array(asciichar.shrink).isomap(utils.charArrayToString, utils.stringToCharArray),
show: show.def,

@@ -346,7 +314,7 @@ };

/**
- `json: generator json`
- `json: arbitrary json`
JavaScript Objects: boolean, number, string, array of `json` values or object with `json` values.
- `value: generator json`
- `value: arbitrary json`
*/

@@ -353,0 +321,0 @@ var json = {

@@ -0,1 +1,2 @@

/* @flow weak */
"use strict";

@@ -2,0 +3,0 @@

@@ -0,1 +1,2 @@

/* @flow weak */
"use strict";

@@ -2,0 +3,0 @@

@@ -0,4 +1,6 @@

/* @flow weak */
"use strict";
var assert = require("assert");
var utils = require("./utils.js");

@@ -11,8 +13,8 @@ /**

/* eslint-disable no-use-before-define */
function shrinkProtoIsoMap(shrink) {
return function (f, g) {
return shrinkBless(function (value) {
return shrink(g(value)).map(f);
});
};
function shrinkProtoIsoMap(f, g) {
/* jshint validthis:true */
var shrink = this;
return shrinkBless(function (value) {
return shrink(g(value)).map(f);
});
}

@@ -22,3 +24,3 @@ /* eslint-enable no-use-before-define */

function shrinkBless(shrink) {
shrink.isomap = shrinkProtoIsoMap(shrink);
shrink.isomap = shrinkProtoIsoMap;
return shrink;

@@ -58,59 +60,37 @@ }

if (arguments.length === 2) {
return result(arguments[1]);
} else {
return result;
}
return utils.curried2(result, arguments);
}
/**
- `shrink.array(shrink: a -> array a, x: array a): array (array a)`
*/
function shrinkArray(shrink) {
var result = shrinkBless(function (arr) {
if (arr.length === 0) {
return [];
} else {
var x = arr[0];
var xs = arr.slice(1);
function shrinkArrayWithMinimumSize(size) {
function shrinkArrayImpl(shrink) {
var result = shrinkBless(function (arr) {
if (arr.length <= size) {
return [];
} else {
var x = arr[0];
var xs = arr.slice(1);
return [xs].concat(
shrink(x).map(function (xp) { return [xp].concat(xs); }),
shrinkArray(shrink, xs).map(function (xsp) { return [x].concat(xsp); })
);
}
});
return [xs].concat(
shrink(x).map(function (xp) { return [xp].concat(xs); }),
shrinkArrayImpl(shrink, xs).map(function (xsp) { return [x].concat(xsp); })
);
}
});
if (arguments.length === 2) {
return result(arguments[1]);
} else {
return result;
return utils.curried2(result, arguments);
}
return shrinkArrayImpl;
}
/**
- `shrink.array(shrink: a -> array a, x: array a): array (array a)`
*/
var shrinkArray = shrinkArrayWithMinimumSize(0);
/**
- `shrink.nearray(shrink: a -> nearray a, x: nearray a): array (nearray a)`
*/
function shrinkNEArray(shrink) {
var result = shrinkBless(function (arr) {
if (arr.length <= 1) {
return [];
} else {
var x = arr[0];
var xs = arr.slice(1);
var shrinkNEArray = shrinkArrayWithMinimumSize(1);
return [xs].concat(
shrink(x).map(function (xp) { return [xp].concat(xs); }),
shrinkArray(shrink, xs).map(function (xsp) { return [x].concat(xsp); })
);
}
});
if (arguments.length === 2) {
return result(arguments[1]);
} else {
return result;
}
}
/**

@@ -136,7 +116,3 @@ - `shrink.record(shrinks: { key: a -> string... }, x: { key: a... }): array { key: a... }`

if (arguments.length === 2) {
return result(arguments[1]);
} else {
return result;
}
return utils.curried2(result, arguments);
}

@@ -143,0 +119,0 @@

@@ -0,1 +1,2 @@

/* @flow weak */
"use strict";

@@ -2,0 +3,0 @@

@@ -0,1 +1,2 @@

/* @flow weak */
"use strict";

@@ -2,0 +3,0 @@

@@ -0,1 +1,2 @@

/* @flow weak */
"use strict";

@@ -54,2 +55,6 @@

function identity(x) {
return x;
}
function pluck(arr, key) {

@@ -90,2 +95,18 @@ return arr.map(function (e) {

function curried2(result, args) {
if (args.length === 2) {
return result(args[1]);
} else {
return result;
}
}
function charArrayToString(arr) {
return arr.join("");
}
function stringToCharArray(str) {
return str.split("");
}
module.exports = {

@@ -95,2 +116,3 @@ isArray: isArray,

isEqual: isEqual,
identity: identity,
pluck: pluck,

@@ -100,2 +122,5 @@ force: force,

div2: div2,
curried2: curried2,
charArrayToString: charArrayToString,
stringToCharArray: stringToCharArray,
};
{
"name": "jsverify",
"description": "Property-based testing for JavaScript.",
"version": "0.4.6",
"version": "0.5.0-beta.1",
"homepage": "http://jsverify.github.io/",

@@ -32,5 +32,5 @@ "author": {

"devDependencies": {
"browserify": "~6.3.2",
"browserify": "~7.0.3",
"chai": "^1.10.0",
"david": "^5.0.0",
"david": "^6.0.1",
"eslint": "^0.10.0",

@@ -37,0 +37,0 @@ "esprima": "~1.2.2",

@@ -5,3 +5,3 @@ # JSVerify

> Property based checking.
> Property based checking. Like QuickCheck.

@@ -212,3 +212,3 @@ [![Build Status](https://secure.travis-ci.org/jsverify/jsverify.svg?branch=master)](http://travis-ci.org/jsverify/jsverify)

- `bool: generator bool`
- `bool: arbitrary bool`

@@ -218,3 +218,3 @@ Booleans, `true` or `false`.

- `datetime: generator datetime`
- `datetime: arbitrary datetime`

@@ -224,3 +224,3 @@ Random datetime

- `elements(args: array a): generator a`
- `elements(args: array a): arbitrary a`

@@ -230,3 +230,3 @@ Random element of `args` array.

- `char: generator char`
- `char: arbitrary char`

@@ -236,3 +236,3 @@ Single character

- `asciichar: generator char`
- `asciichar: arbitrary char`

@@ -242,3 +242,3 @@ Single ascii character (0x20-0x7e inclusive, no DEL)

- `string: generator string`
- `string: arbitrary string`

@@ -251,10 +251,10 @@

- `asciistring: generator string`
- `asciistring: arbitrary string`
- `json: generator json`
- `json: arbitrary json`
JavaScript Objects: boolean, number, string, array of `json` values or object with `json` values.
- `value: generator json`
- `value: arbitrary json`

@@ -320,8 +320,14 @@

- `generator.array(gen: Gen a, size: nat): gen (array a)`
- `generator.tuple(gens: (gen a, gen b...), size: nat): gen (a, b...)`
- `generator.array(gen: gen a, size: nat): gen (array a)`
- `generator.nearray(gen: Gen a, size: nat): gen (array a)`
- `generator.char: gen char`
- `generator.string(size: nat): gen string`

@@ -333,2 +339,8 @@

- `generator.asciichar: gen char`
- `generator.asciistring(size: nat): gen string`
- `generator.map(gen: gen a, size: nat): gen (map a)`

@@ -442,10 +454,14 @@

- **0.4.6** &mdash; *2014-11-30* better shrinks &amp; recursive
- **0.5.0-beta.1**; &mdash; *2014-12-20* &mdash; Almost there!
- `bless` don't close over (uses `this`)
- Cleanup generator module
- Other code cleanup here and there
- **0.4.6** &mdash; *2014-11-30* &mdash; better shrinks &amp; recursive
- Implemented shrinks: [#51](https://github.com/jsverify/jsverify/issues/51)
- `jsc.generator.recursive`: [#37](https://github.com/jsverify/jsverify/issues/37)
- array, nearray &amp; map generators return a bit smaller results (*log2* of size)
- **0.4.5** &mdash; *2014-11-22* stuff
- **0.4.5** &mdash; *2014-11-22* &mdash; stuff
- `generator.combine` &amp; `.flatmap`
- `nat`, `integer`, `number` &amp; and `string` act as objects too
- **0.4.4** &mdash; *2014-11-22* new generators
- **0.4.4** &mdash; *2014-11-22* &mdash; new generators
- New generators: `nearray`, `nestring`

@@ -455,3 +471,3 @@ - `generator.constant`

- `jsc.sampler`
- **0.4.3** &mdash; *2014-11-08* jsc.property
- **0.4.3** &mdash; *2014-11-08* &mdash; jsc.property
- Now you can write your bdd specs without any boilerplate

@@ -467,3 +483,3 @@ - support for nat-litearls in dsl [#36](https://github.com/jsverify/jsverify/issues/36)

- Falsy generator [#42](https://github.com/jsverify/jsverify/issues/42)
- **0.4.2** &mdash; *2014-11-03* User environments for DSL
- **0.4.2** &mdash; *2014-11-03* &mdash; User environments for DSL
- User environments for DSL

@@ -473,3 +489,3 @@ - Generator prototype `map`, and shrink prototype `isomap`

- **0.4.1** Move to own organization in GitHub
- **0.4.0** *2014-10-27* typify-dsl &amp; more arbitraries.
- **0.4.0** &mdash; *2014-10-27* &mdash; typify-dsl &amp; more arbitraries.
Changes from **0.3.6**:

@@ -552,2 +568,3 @@ - DSL for `forall` and `suchthat`

- [gencheck](https://github.com/graue/gentest)
- [node-quickcheck](https://github.com/mcandre/node-quickcheck)

@@ -554,0 +571,0 @@ ### Others

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc