Comparing version 0.4.0-alpha5 to 0.4.0-alpha6
@@ -1,9 +0,10 @@ | ||
module.exports = function(config) { | ||
module.exports = function (config) { | ||
"use strict"; | ||
config.set({ | ||
basePath: '', | ||
frameworks: ['jasmine'], | ||
basePath: "", | ||
frameworks: ["jasmine"], | ||
files: [ | ||
'helpers/jasmineHelpers2.js', | ||
'dist/jsverify.standalone.js', | ||
'spec/*.js' | ||
"helpers/jasmineHelpers2.js", | ||
"dist/jsverify.standalone.js", | ||
"spec/*.js" | ||
], | ||
@@ -14,3 +15,3 @@ exclude: [ | ||
}, | ||
reporters: ['progress'], | ||
reporters: ["progress"], | ||
port: 9876, | ||
@@ -20,5 +21,5 @@ colors: true, | ||
autoWatch: false, | ||
browsers: ['Chrome', 'Firefox'], | ||
browsers: ["Chrome", "Firefox"], | ||
singleRun: true | ||
}); | ||
}; |
@@ -13,4 +13,13 @@ "use strict"; | ||
bool: primitive.bool, | ||
char: primitive.char, | ||
string: primitive.string, | ||
value: primitive.value, | ||
asciichar: primitive.asciichar, | ||
asciistring: primitive.asciistring, | ||
uint8: primitive.uint8, | ||
uint16: primitive.uint16, | ||
uint32: primitive.uint32, | ||
int8: primitive.int8, | ||
int16: primitive.int16, | ||
int32: primitive.int32, | ||
pair: composite.pair, | ||
@@ -17,0 +26,0 @@ array: composite.array, |
@@ -10,3 +10,5 @@ "use strict"; | ||
function isPromise(p) { | ||
/* eslint-disable no-new-object */ | ||
return new Object(p) === p && typeof p.then === "function"; | ||
/* eslint-enable non-new-object */ | ||
} | ||
@@ -47,3 +49,6 @@ | ||
h, | ||
function (e) { return h(false, exc); } | ||
function (e) { | ||
// exc is always unset here | ||
return h(false, e); | ||
} | ||
); | ||
@@ -50,0 +55,0 @@ } else { |
@@ -22,3 +22,3 @@ /** | ||
// forall (f : bool -> bool) (b : bool), f (f (f b)) = f(b). | ||
var bool_fn_applied_thrice = | ||
var boolFnAppliedThrice = | ||
jsc.forall("bool -> bool", "bool", function (f, b) { | ||
@@ -28,3 +28,3 @@ return f(f(f(b))) === f(b); | ||
jsc.assert(bool_fn_applied_thrice); | ||
jsc.assert(boolFnAppliedThrice); | ||
// OK, passed 100 tests | ||
@@ -316,10 +316,2 @@ ``` | ||
// generators | ||
nat: primitive.nat, | ||
integer: primitive.integer, | ||
number : primitive.number, | ||
bool: primitive.bool, | ||
string: primitive.string, | ||
value: primitive.value, | ||
elements: primitive.elements, | ||
oneof: primitive.oneof, | ||
pair: composite.pair, | ||
@@ -342,2 +334,7 @@ array: composite.array, | ||
/* primitives */ | ||
for (var k in primitive) { | ||
jsc[k] = primitive[k]; | ||
} | ||
module.exports = jsc; | ||
@@ -344,0 +341,0 @@ |
@@ -85,2 +85,16 @@ "use strict"; | ||
/** | ||
#### uint8, uint16, uint32 : generator nat | ||
*/ | ||
var uint8 = nat(0x100); | ||
var uint16 = nat(0x10000); | ||
var uint32 = nat(0x100000000); | ||
/** | ||
#### int8, int16, int32 : generator integer | ||
*/ | ||
var int8 = integer(0x80); | ||
var int16 = integer(0x8000); | ||
var int32 = integer(0x80000000); | ||
/** | ||
#### bool () : generator bool | ||
@@ -92,3 +106,3 @@ | ||
return { | ||
arbitrary: function (size) { | ||
arbitrary: function (/* size */) { | ||
var i = random(0, 1); | ||
@@ -117,3 +131,3 @@ return i === 0 ? false : true; | ||
return { | ||
arbitrary: function (size) { | ||
arbitrary: function (/* size */) { | ||
var i = random(0, args.length - 1); | ||
@@ -130,2 +144,28 @@ return args[i]; | ||
/** | ||
#### char : generator char | ||
Single character | ||
*/ | ||
var char = { | ||
arbitrary: function (/* size */) { | ||
return String.fromCharCode(random(0, 0x1ff)); | ||
}, | ||
shrink: shrink.noop, | ||
show: show.def, | ||
}; | ||
/** | ||
#### asciichar : generator char | ||
Single ascii character (0x20-0x7e inclusive, no DEL) | ||
*/ | ||
var asciichar = { | ||
arbitrary: function (/* size */) { | ||
return String.fromCharCode(random(0x20, 0x7f)); | ||
}, | ||
shrink: shrink.noop, | ||
show: show.def, | ||
}; | ||
/** | ||
#### string () : generator string | ||
@@ -146,49 +186,75 @@ | ||
/** | ||
#### value : generator value | ||
JavaScript value: boolean, number, string, array of values or object with `value` values. | ||
#### asciistring : generator string | ||
*/ | ||
function value() { | ||
function arbitraryValue(size) { | ||
var type = random(0, 5); | ||
if (size === 0) { | ||
switch (type) { | ||
case 0: return 0; | ||
case 1: return random.number(0, 1); | ||
case 2: return random(0, 1) === 0; | ||
case 3: return ""; | ||
case 4: return []; | ||
case 5: return {}; | ||
} | ||
} | ||
var asciistring = { | ||
arbitrary: function (size) { | ||
return arbitrary.array(asciichar.arbitrary, size).join(""); | ||
}, | ||
shrink: function (str) { | ||
return str === "" ? [] : [""]; // TODO | ||
}, | ||
show: show.def, | ||
}; | ||
size = size - 1; | ||
/** | ||
#### json : generator json | ||
JavaScript Objects: boolean, number, string, array of `json` values or object with `json` values. | ||
*/ | ||
function arbitraryJson(size) { | ||
var type = random(0, 5); | ||
if (size === 0) { | ||
switch (type) { | ||
case 0: return random(-size, size); | ||
case 1: return random.number(-size, size); | ||
case 0: return 0; | ||
case 1: return random.number(0, 1); | ||
case 2: return random(0, 1) === 0; | ||
case 3: return arbitrary.string(size); | ||
case 4: return arbitrary.array(arbitraryValue, size); | ||
case 5: return arbitrary.object(arbitraryValue, size); | ||
case 3: return ""; | ||
case 4: return []; | ||
case 5: return {}; | ||
} | ||
} | ||
return { | ||
arbitrary: arbitraryValue, | ||
shrink: shrink.noop, | ||
show: function (v) { | ||
return JSON.stringify(v); | ||
} | ||
}; | ||
size = size - 1; | ||
switch (type) { | ||
case 0: return random(-size, size); | ||
case 1: return random.number(-size, size); | ||
case 2: return random(0, 1) === 0; | ||
case 3: return arbitrary.string(size); | ||
case 4: return arbitrary.array(arbitraryJson, size); | ||
case 5: return arbitrary.object(arbitraryJson, size); | ||
} | ||
} | ||
var json = { | ||
arbitrary: arbitraryJson, | ||
shrink: shrink.noop, | ||
show: function (v) { | ||
return JSON.stringify(v); | ||
}, | ||
}; | ||
// Backward compatibility | ||
function value() { | ||
return json; | ||
} | ||
module.exports = { | ||
integer: integer, | ||
nat: nat, | ||
int8: int8, | ||
int16: int16, | ||
int32: int32, | ||
uint8: uint8, | ||
uint16: uint16, | ||
uint32: uint32, | ||
number: number, | ||
json: json, | ||
value: value, | ||
char: char, | ||
string: string, | ||
asciichar: asciichar, | ||
asciistring: asciistring, | ||
elements: elements, | ||
bool: bool, | ||
}; |
@@ -16,2 +16,3 @@ "use strict"; | ||
/* jshint -W083 */ | ||
/* eslint-disable no-loop-func */ | ||
shrinked[i] = shrinks[i](tup[i]).map(function (x) { | ||
@@ -22,2 +23,3 @@ var c = tup.slice(); // clone array | ||
}); | ||
/* eslint-enable no-loop-func */ | ||
/* jshint +W083 */ | ||
@@ -24,0 +26,0 @@ } |
@@ -53,3 +53,3 @@ "use strict"; | ||
function compileType(env, type) { | ||
compileType = function compileType(env, type) { | ||
switch (type.type) { | ||
@@ -62,3 +62,3 @@ case "ident": return compileIdent(env, type); | ||
} | ||
} | ||
}; | ||
@@ -65,0 +65,0 @@ compileTypeArray = function compileTypeArray(env, types) { |
@@ -5,3 +5,5 @@ "use strict"; | ||
function isObject(o) { | ||
/* eslint-disable no-new-object */ | ||
return new Object(o) === o; | ||
/* eslint-enable no-new-object */ | ||
} | ||
@@ -8,0 +10,0 @@ |
{ | ||
"version": "0.4.0-alpha3", | ||
"version": "0.4.0-alpha5", | ||
"dependencies": { | ||
@@ -51,3 +51,13 @@ "browserify": { | ||
"version": "0.5.1", | ||
"dependencies": {} | ||
"dependencies": { | ||
"readable-stream": { | ||
"version": "1.0.32", | ||
"dependencies": { | ||
"core-util-is": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
@@ -97,11 +107,2 @@ } | ||
"dependencies": { | ||
"readable-stream": { | ||
"version": "1.1.13", | ||
"dependencies": { | ||
"core-util-is": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"typedarray": { | ||
@@ -127,3 +128,3 @@ "version": "0.0.6", | ||
"crypto-browserify": { | ||
"version": "3.2.6", | ||
"version": "3.2.7", | ||
"dependencies": { | ||
@@ -161,3 +162,13 @@ "pbkdf2-compat": { | ||
"version": "0.5.1", | ||
"dependencies": {} | ||
"dependencies": { | ||
"readable-stream": { | ||
"version": "1.0.32", | ||
"dependencies": { | ||
"core-util-is": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
@@ -172,13 +183,3 @@ } | ||
"version": "0.0.2", | ||
"dependencies": { | ||
"readable-stream": { | ||
"version": "1.1.13", | ||
"dependencies": { | ||
"core-util-is": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
} | ||
} | ||
} | ||
} | ||
"dependencies": {} | ||
}, | ||
@@ -287,11 +288,2 @@ "events": { | ||
}, | ||
"readable-stream": { | ||
"version": "1.1.13", | ||
"dependencies": { | ||
"core-util-is": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"readable-wrap": { | ||
@@ -374,3 +366,13 @@ "version": "1.0.0", | ||
"version": "0.5.1", | ||
"dependencies": {} | ||
"dependencies": { | ||
"readable-stream": { | ||
"version": "1.0.32", | ||
"dependencies": { | ||
"core-util-is": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
@@ -391,2 +393,11 @@ } | ||
"dependencies": { | ||
"readable-stream": { | ||
"version": "1.0.32", | ||
"dependencies": { | ||
"core-util-is": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"xtend": { | ||
@@ -435,3 +446,3 @@ "version": "2.1.2", | ||
"readable-stream": { | ||
"version": "1.0.32", | ||
"version": "1.1.13", | ||
"dependencies": { | ||
@@ -499,11 +510,2 @@ "core-util-is": { | ||
"dependencies": { | ||
"readable-stream": { | ||
"version": "1.1.13", | ||
"dependencies": { | ||
"core-util-is": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"xtend": { | ||
@@ -640,3 +642,3 @@ "version": "4.0.0", | ||
"npm": { | ||
"version": "2.1.2", | ||
"version": "2.1.3", | ||
"dependencies": { | ||
@@ -720,3 +722,3 @@ "abbrev": { | ||
"dezalgo": { | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"dependencies": { | ||
@@ -771,3 +773,3 @@ "asap": { | ||
"inflight": { | ||
"version": "1.0.1", | ||
"version": "1.0.3", | ||
"dependencies": {} | ||
@@ -839,3 +841,3 @@ }, | ||
"npm-package-arg": { | ||
"version": "2.1.2", | ||
"version": "2.1.3", | ||
"dependencies": {} | ||
@@ -915,2 +917,23 @@ }, | ||
}, | ||
"readable-stream": { | ||
"version": "1.0.32", | ||
"dependencies": { | ||
"core-util-is": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
}, | ||
"isarray": { | ||
"version": "0.0.1", | ||
"dependencies": {} | ||
}, | ||
"string_decoder": { | ||
"version": "0.10.31", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"realize-package-specifier": { | ||
"version": "1.1.0", | ||
"dependencies": {} | ||
}, | ||
"request": { | ||
@@ -925,21 +948,3 @@ "version": "2.44.0", | ||
"version": "0.9.3", | ||
"dependencies": { | ||
"readable-stream": { | ||
"version": "1.0.31", | ||
"dependencies": { | ||
"core-util-is": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
}, | ||
"isarray": { | ||
"version": "0.0.1", | ||
"dependencies": {} | ||
}, | ||
"string_decoder": { | ||
"version": "0.10.31", | ||
"dependencies": {} | ||
} | ||
} | ||
} | ||
} | ||
"dependencies": {} | ||
}, | ||
@@ -1067,21 +1072,3 @@ "caseless": { | ||
"version": "1.2.4", | ||
"dependencies": { | ||
"readable-stream": { | ||
"version": "1.0.31", | ||
"dependencies": { | ||
"core-util-is": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
}, | ||
"isarray": { | ||
"version": "0.0.1", | ||
"dependencies": {} | ||
}, | ||
"string_decoder": { | ||
"version": "0.10.31", | ||
"dependencies": {} | ||
} | ||
} | ||
} | ||
} | ||
"dependencies": {} | ||
}, | ||
@@ -1112,2 +1099,6 @@ "slide": { | ||
}, | ||
"wrappy": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
}, | ||
"write-file-atomic": { | ||
@@ -1138,2 +1129,156 @@ "version": "1.1.0", | ||
}, | ||
"eslint": { | ||
"version": "0.8.2", | ||
"dependencies": { | ||
"chalk": { | ||
"version": "0.5.1", | ||
"dependencies": { | ||
"ansi-styles": { | ||
"version": "1.1.0", | ||
"dependencies": {} | ||
}, | ||
"escape-string-regexp": { | ||
"version": "1.0.2", | ||
"dependencies": {} | ||
}, | ||
"has-ansi": { | ||
"version": "0.1.0", | ||
"dependencies": { | ||
"ansi-regex": { | ||
"version": "0.2.1", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"strip-ansi": { | ||
"version": "0.3.0", | ||
"dependencies": { | ||
"ansi-regex": { | ||
"version": "0.2.1", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"supports-color": { | ||
"version": "0.2.0", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"debug": { | ||
"version": "2.0.0", | ||
"dependencies": { | ||
"ms": { | ||
"version": "0.6.2", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"doctrine": { | ||
"version": "0.5.2", | ||
"dependencies": {} | ||
}, | ||
"escope": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
}, | ||
"estraverse": { | ||
"version": "1.5.1", | ||
"dependencies": {} | ||
}, | ||
"js-yaml": { | ||
"version": "3.2.2", | ||
"dependencies": { | ||
"argparse": { | ||
"version": "0.1.15", | ||
"dependencies": { | ||
"underscore": { | ||
"version": "1.4.4", | ||
"dependencies": {} | ||
}, | ||
"underscore.string": { | ||
"version": "2.3.3", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"esprima": { | ||
"version": "1.0.4", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"minimatch": { | ||
"version": "1.0.0", | ||
"dependencies": { | ||
"lru-cache": { | ||
"version": "2.5.0", | ||
"dependencies": {} | ||
}, | ||
"sigmund": { | ||
"version": "1.0.0", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"mkdirp": { | ||
"version": "0.5.0", | ||
"dependencies": { | ||
"minimist": { | ||
"version": "0.0.8", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"object-assign": { | ||
"version": "1.0.0", | ||
"dependencies": {} | ||
}, | ||
"optionator": { | ||
"version": "0.4.0", | ||
"dependencies": { | ||
"deep-is": { | ||
"version": "0.1.3", | ||
"dependencies": {} | ||
}, | ||
"fast-levenshtein": { | ||
"version": "1.0.4", | ||
"dependencies": {} | ||
}, | ||
"levn": { | ||
"version": "0.2.5", | ||
"dependencies": {} | ||
}, | ||
"prelude-ls": { | ||
"version": "1.1.1", | ||
"dependencies": {} | ||
}, | ||
"type-check": { | ||
"version": "0.3.1", | ||
"dependencies": {} | ||
}, | ||
"wordwrap": { | ||
"version": "0.0.2", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"strip-json-comments": { | ||
"version": "1.0.1", | ||
"dependencies": {} | ||
}, | ||
"text-table": { | ||
"version": "0.2.0", | ||
"dependencies": {} | ||
}, | ||
"user-home": { | ||
"version": "1.0.0", | ||
"dependencies": {} | ||
}, | ||
"xml-escape": { | ||
"version": "1.0.0", | ||
"dependencies": {} | ||
} | ||
} | ||
}, | ||
"esprima": { | ||
@@ -2018,3 +2163,3 @@ "version": "1.2.2", | ||
"npm-freeze": { | ||
"version": "0.1.3", | ||
"version": "0.1.4", | ||
"dependencies": { | ||
@@ -2021,0 +2166,0 @@ "chalk": { |
{ | ||
"name": "jsverify", | ||
"description": "Property-based testing for JavaScript.", | ||
"version": "0.4.0-alpha5", | ||
"version": "0.4.0-alpha6", | ||
"homepage": "https://github.com/phadej/jsverify", | ||
@@ -33,2 +33,4 @@ "author": { | ||
"browserify": "~6.0.2", | ||
"david": "^5.0.0", | ||
"eslint": "^0.8.2", | ||
"esprima": "~1.2.2", | ||
@@ -50,3 +52,2 @@ "istanbul": "~0.3.0", | ||
"underscore": "~1.7.0", | ||
"david": "^5.0.0", | ||
"when": "~3.5.0" | ||
@@ -53,0 +54,0 @@ }, |
@@ -21,3 +21,3 @@ # JSVerify | ||
// forall (f : bool -> bool) (b : bool), f (f (f b)) = f(b). | ||
var bool_fn_applied_thrice = | ||
var boolFnAppliedThrice = | ||
jsc.forall("bool -> bool", "bool", function (f, b) { | ||
@@ -27,3 +27,3 @@ return f(f(f(b))) === f(b); | ||
jsc.assert(bool_fn_applied_thrice); | ||
jsc.assert(boolFnAppliedThrice); | ||
// OK, passed 100 tests | ||
@@ -145,2 +145,8 @@ ``` | ||
#### uint8, uint16, uint32 : generator nat | ||
#### int8, int16, int32 : generator integer | ||
#### bool () : generator bool | ||
@@ -159,2 +165,12 @@ | ||
#### char : generator char | ||
Single character | ||
#### asciichar : generator char | ||
Single ascii character (0x20-0x7e inclusive, no DEL) | ||
#### string () : generator string | ||
@@ -165,8 +181,11 @@ | ||
#### value : generator value | ||
#### asciistring : generator string | ||
JavaScript value: boolean, number, string, array of values or object with `value` values. | ||
#### json : generator json | ||
JavaScript Objects: boolean, number, string, array of `json` values or object with `json` values. | ||
#### array (gen : generator a) : generator (array a) | ||
@@ -267,2 +286,7 @@ | ||
- 0.4.0-alpha6 more primitives | ||
- int8, int16, int32, uint8, uint16, uint32 | ||
- char, asciichar and asciistring | ||
- value → json | ||
- use eslint | ||
- 0.4.0-alpha5 move david to be devDependency | ||
@@ -269,0 +293,0 @@ - 0.4.0-alpha4 more typify |
103632
3260
367
20