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.0-alpha7 to 0.4.0-alpha8

jsverify-300.png

48

lib/composite.js
"use strict";
var assert = require("assert");
var arbitrary = require("./arbitrary.js");

@@ -8,2 +9,4 @@ var shrink = require("./shrink.js");

var generator = require("./generator.js");
var utils = require("./utils.js");
var random = require("./random.js");

@@ -93,2 +96,36 @@ /**

/**
#### oneof (gs : array (generator any)...) : generator any
Randomly uses one of the given generators.
*/
function oneof() {
assert(arguments.length !== 0, "oneof: at least one parameter expected");
// TODO: write this in more functional way
var arbs = [];
var append = function (a) {
arbs.push(generator.force(a).arbitrary);
};
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if (utils.isArray(arg)) {
arg.forEach(append);
} else {
append(arg);
}
}
return {
arbitrary: function (size) {
var idx = random(0, arbs.length - 1);
var arb = arbs[idx];
return arb(size);
},
// TODO: make shrink
shrink: shrink.noop,
show: show.def,
};
}
/**
#### record (spec : {a: generator...}) : generator (record {a: generator...})

@@ -112,4 +149,10 @@

},
// TODO: implement shrink for record (~ equivalent to tuple shrink)
shrink: shrink.noop,
shrink: function (value) {
// TODO: use mapValues
var shrinkSpec = {};
Object.keys(forcedSpec).forEach(function (k) {
shrinkSpec[k] = forcedSpec[k].shrink;
});
return shrink.record(shrinkSpec, value);
},
show: function (m) {

@@ -127,3 +170,4 @@ return "{" + Object.keys(m).map(function (k) {

map: map,
oneof: oneof,
record: record,
};
/**
# JSVerify
<img src="https://raw.githubusercontent.com/phadej/jsverify/master/jsverify-300.png" align="right" height="100" />
> Property based checking.

@@ -317,2 +319,3 @@

map: composite.map,
oneof: composite.oneof,
record: composite.record,

@@ -324,2 +327,7 @@ fn: fn.fn,

// compile
compile: function (str) {
return typify.parseTypify(environment, str);
},
// internal utility lib

@@ -326,0 +334,0 @@ _: {

38

lib/primitive.js

@@ -8,4 +8,2 @@ "use strict";

var show = require("./show.js");
var generator = require("./generator.js");
var utils = require("./utils.js");

@@ -133,37 +131,2 @@ /**

/**
#### oneof (gs : array (generator any)...) : generator any
Randomly uses one of the given generators.
*/
// TODO: move to composite
function oneof() {
assert(arguments.length !== 0, "oneof: at least one parameter expected");
// TODO: write this in more functional way
var arbs = [];
var append = function (a) {
arbs.push(generator.force(a).arbitrary);
};
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if (utils.isArray(arg)) {
arg.forEach(append);
} else {
append(arg);
}
}
return {
arbitrary: function (size) {
var idx = random(0, arbs.length - 1);
var arb = arbs[idx];
return arb(size);
},
// TODO: make shrink
shrink: shrink.noop,
show: show.def,
};
}
/**
#### char : generator char

@@ -282,4 +245,3 @@

elements: elements,
oneof: oneof,
bool: bool,
};

@@ -29,2 +29,18 @@ "use strict";

function shrinkRecord(shrinksRecord, record) {
var keys = Object.keys(record);
var values = keys.map(function (k) { return record[k]; });
var shrinks = keys.map(function (k) { return shrinksRecord[k]; });
var shrinked = shrinkTuple(shrinks, values);
return shrinked.map(function (s) {
var result = {};
keys.forEach(function (k, i) {
result[k] = s[i];
});
return result;
});
}
function shrinkArray(shrink, arr) {

@@ -48,2 +64,3 @@ if (arr.length === 0) {

array: shrinkArray,
record: shrinkRecord,
};

@@ -53,2 +53,16 @@ "use strict";

function compileDisjunction(env, type) {
var args = compileTypeArray(env, type.args);
return composite.oneof(args);
}
function compileRecord(env, type) {
// TODO: use mapValues
var spec = {};
Object.keys(type.fields).forEach(function (key) {
spec[key] = compileType(env, type.fields[key]);
});
return composite.record(spec);
}
compileType = function compileType(env, type) {

@@ -60,2 +74,4 @@ switch (type.type) {

case "brackets": return compileBrackets(env, type);
case "disjunction": return compileDisjunction(env, type);
case "record": return compileRecord(env, type);
default: throw new Error("Unsupported typify ast type: " + type.type);

@@ -62,0 +78,0 @@ }

{
"name": "jsverify",
"description": "Property-based testing for JavaScript.",
"version": "0.4.0-alpha7",
"version": "0.4.0-alpha8",
"homepage": "https://github.com/phadej/jsverify",

@@ -6,0 +6,0 @@ "author": {

# JSVerify
<img src="https://raw.githubusercontent.com/phadej/jsverify/master/jsverify-300.png" align="right" height="100" />
> Property based checking.

@@ -159,7 +161,2 @@

#### oneof (gs : array (generator any)...) : generator any
Randomly uses one of the given generators.
#### char : generator char

@@ -202,2 +199,7 @@

#### oneof (gs : array (generator any)...) : generator any
Randomly uses one of the given generators.
#### record (spec : {a: generator...}) : generator (record {a: generator...})

@@ -290,2 +292,5 @@

- 0.4.0-alpha8 oneof &amp; record -dsl support
- also `jsc.compile`
- record is shrinkable!
- 0.4.0-alpha7 oneof &amp; record

@@ -292,0 +297,0 @@ - *oneof* and *record* generator combinators ([@fson](https://github.com/fson))

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