Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Give fc.statistics a return value #4342

Open
ewinslow opened this issue Oct 20, 2023 · 2 comments
Open

Give fc.statistics a return value #4342

ewinslow opened this issue Oct 20, 2023 · 2 comments

Comments

@ewinslow
Copy link

馃挕 Idea

If fc.statistics returned the distribution of classifications in addition to printing it, I'd have a straightforward way to property test my arbitraries. Would be nice to also have the number of skipped generated values.

Motivation

I've been trying my hand at building custom arbitraries, and noting that bugs can definitely sneak into those. In particular, I'm concerned that the arbitraries might not be well distributed across the input space, and manually printing out statistics is a bit of a pain. So my property tests could be passing but not really finding edge cases (e.g. imagine if my custom X generator just always returns empty X for some reason). Even if I get it right, someone else could introduce a regression and we could silently lose coverage that we thought we had. So I'm looking for ways to property test the arbitraries themselves.

Example

fc.assert(fc.property(_, () => {
  const results = fc.statistics(
    fc.string(), // source arbitrary
    (v) => `${v.length} characters`, // classifier
    { numRuns: 100_000 }, // extra parameters
  );

  return results.classes['1 characters'] > 0;
}));

Thanks for considering!

@dubzzz
Copy link
Owner

dubzzz commented Oct 30, 2023

What you are suggesting is close to the feature request: #342 馃

@ewinslow
Copy link
Author

ewinslow commented Nov 7, 2023

It is related but I think my request is more focused. Just return the data that is already there :). No need for you to come up with any new APIs for labeling properties or asserting on statistical significance. Others can experiment with those using the data returned from this existing API.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants