jsverify / jsverify

Write powerful and concise tests. Property-based testing for JavaScript. Like QuickCheck.
http://jsverify.github.io/
MIT License
1.67k stars 103 forks source link

add generator for `any` primitive value #173

Open safareli opened 8 years ago

safareli commented 8 years ago

It would be nice to have a generator which generates primitive values of any type, something like this

Ɐ.any = Ɐ.oneof(Ɐ.number, Ɐ.falsy, Ɐ.bool, Ɐ.json)
phadej commented 8 years ago

json includes bool and number, and IIRC falsy as well?

safareli commented 8 years ago

It does not contains falsy

var generateJson = generator.recursive(
  generator.oneof([generateInteger, generateNumber, generateBool, generateString]),
  function (gen) {
    return generator.oneof([generator.array(gen), generator.dict(gen)]);
  });

imho somthing like this could be done:

var generateObjectsOf = (as) => generator.recursive(as, function (gen) {
  return generator.oneof([generator.array(gen), generator.dict(gen)]);
});

var generateJson = generateObjectsOf(generator.oneof([generateInteger, generateNumber, generateBool, generateString]))
var generateAny = generateObjectsOf(generator.oneof([generateInteger, generateNumber, generateBool, generateString, generateFalsy]))
rickmed commented 7 years ago

Shouldn't any include functions as well?