Skip to content

rerorero/jsarbit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jsarbit

jsarbit is tiny random value generator.

It is not test framework, but you can use with any test library such as mocha, chai and any other, if you want to property-based test simply.

Installation

npm install jsarbit

Usage

Example

var arb = require('jsarbit');
var assert = require('chai').assert;

describe('example', function() {

  it('Choose one of', function() {
    var values = ['love', 'hate', 'apathy'];
    var enums = arb.gen.oneOf(values);

    arb.forAll(enums, function(v) {
      // value is one of enums.
      assert(values.indexOf(v) >= 0);
    });

  });
});

gen

gen is set of helper functions to create Arbitrary.

  • gen.of(value: any)

    • Asis value generator.
  • gen.int(min: number, max: number)

  • gen.float(min: number, max: number)

  • gen.posNum()

  • gen.posNum(max: number)

  • gen.negNum()

  • gen.negNum(min: number)

    • Generator of numbers in range.
  • gen.array(element: Arbitrary or any value, sizeMin: number, sizeMax: number)

  • gen.array(element: Arbitrary or any value, sizeMax: number)

    • Generator of array.

    • Example:

      var dogOrCatArray = gen.array(choose('dog', 'cat'), 10);
      var someOfPizza = gen.array('pizza', 1, 10);
      
  • gen.array(element: Arbitrary or any value, sizeMin: number, sizeMax: number)

  • gen.array(element: Arbitrary or any value, sizeMax: number)

    • Generator of array.
  • gen.arrayOfN(size: number, arb: Arbitrary or value)

    • Generator of array which has size number of elements generated by arb (or arb value if arb is not Arbitrary).
  • gen.obj(propArbitrary: object)

    • Generator of object.

    • propArbitrary is object which property takes Arbitrary.

    • Example:

      var arb = gen.obj({
        "name": gen.oneOf("Alice", "Bob"),
        "address": {
          "country": "Japan",      // Not Arbitrary property
          "zip": gen.numericStr(3)
        },
      });
      
      var sample = arb.sample();
      /* {
        "name": "Alice",
        "address": {
          "country": "Japan",    // as it is.
          "zip": "491"
        }
      } */
      
  • gen.choose(min: number, max: number)

    • Generator of arbitrary number in range.
  • gen.oneOf(ary: array)

    • Generator which choose a element of ary randomly.
  • gen.bool()

    • Generator of boolean.
  • gen.alphaLowerChar()

  • gen.alphaUpperChar()

  • gen.alphaChar()

  • gen.numericChar()

  • gen.alphaNumericChar()

    • Generator of a char.
  • gen.charSeqOf(arb: Arbitrary which generates of char, minLen, maxLen)

  • gen.charSeqOf(arb: Arbitrary, minLen)

    • Generator of string consisted of arb's sample.
  • gen.numericStr(minLen, maxLen)

  • gen.numericStr(maxLen)

  • gen.identifier(minLen, maxLen)

  • gen.identifier(maxLen)

    • Generator of string.
  • gen.frequency(freq: array)

    • Chooses one of the given generators with a weighted random distribution.

    • Example

      var arb = gen.frequency([
        [1, gen.oneOf(['a', 'b', 'c'])],
        [9, gen.choose(1,10)]
      ]);
      
      forAll(arb, function (value) {
        console.log(value); // char generated 10% of all.
      });
      

Arbitrary

Arbitrary is an arbitrary value generator class.

  • new Arbitrary(sampleFunc: function)
    • Creates new instance which has sample() function as sampleFunc.
  • Arbitrary.sample()
    • Generates arbitrary value.
  • Arbitrary.map(func: function)
    • Returns new Arbitrary which sample() applied func to this.sample()'s return value.
  • Arbitrary.flatMap(func: function)
    • Returns new Arbitrary which returned by func applied with this.sample()'s return value.

forAll

function to generate with Arbitrary.

  • forAll(arb: Arbitrary, func: function, count=100)
    • Call func number of count times with arbitrary value generated by arb.

    • Example

      forAll(choose(0, 50), function(num) {
        assert(num >= 0 && num <= 50);
      });
      

License

MIT

About

Random property generator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published