LazySmallCheck2012

Lazy SmallCheck with functional values and existentials! (by UoYCS-plasma)

LazySmallCheck2012 Alternatives

Similar projects and alternatives to LazySmallCheck2012

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better LazySmallCheck2012 alternative or higher similarity.

LazySmallCheck2012 reviews and mentions

Posts with mentions or reviews of LazySmallCheck2012. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-10-27.
  • Generating Well-Typed Terms that are not "Useless" [pdf]
    2 projects | news.ycombinator.com | 27 Oct 2023
    Using laziness to avoid generating parts of an expression until it's needed is a really nice idea. The LazySmallCheck package[1] took this approach, but was limited in the types of data it could produce (e.g. it couldn't generate functions). This was extended by LazySmallCheck2012[2], but that seems to be unmaintained and doesn't work with more recent GHC versions.

    (Note that these are named in reference to SmallCheck[3], which takes the approach of enumerating concrete values in order of "size"; as an alternative to the more widely-used QuickCheck[4], which generates concrete values at random, and tries to "shrink" those which trigger a failure)

    [1] https://hackage.haskell.org/package/lazysmallcheck

    [2] https://github.com/UoYCS-plasma/LazySmallCheck2012

    [3] https://hackage.haskell.org/package/smallcheck

    [4] https://hackage.haskell.org/package/QuickCheck

  • Ask HN: What's your favorite software testing framework and why?
    15 projects | news.ycombinator.com | 21 May 2023
    I tend to use anything that offers property-testing, since tests are much shorter to write and uncover lots more hidden assumptions.

    My go-to choices per language are:

    - Python: Hypothesis https://hypothesis.readthedocs.io/en/latest (also compatible with PyTest)

    - Scala: ScalaCheck https://scalacheck.org (also compatible with ScalaTest)

    - Javascript/Typescript: JSVerify https://jsverify.github.io

    - Haskell: LazySmallCheck2012 https://github.com/UoYCS-plasma/LazySmallCheck2012/blob/mast...

    - When I wrote PHP (over a decade ago) there was no decent property-based test framework, so I cobbled one together https://github.com/Warbo/php-easycheck

    All of the above use the same basic setup: tests can make universally-quantified statements (e.g. "for all (x: Int), foo(x) == foo(foo(x))"), then the framework checks that statement for a bunch of different inputs.

    Most property-checking frameworks generate data randomly (with more or less sophistication). The Haskell ecosystem is more interesting:

    - QuickCheck was one of the first property-testing frameworks, using random genrators.

    - SmallCheck came later, which enumerates data instead (e.g. testing a Float might use 0, 1, -1, 2, -2, 0.5, -0.5, etc.). That's cute, but QuickCheck tends to exercise more code paths with each input.

    - LazySmallCheck builds up test data on-demand, using Haskell's pervasive laziness. Tests are run with an error as input: if they pass, we're done; if they fail, we're done; if they trigger the error, they're run again with slightly more-defined inputs. For example, if the input is supposed to be a list, we try again with the two forms of list: empty and "cons" (the arguments to cons are both errors, to begin with). This exercises even more code paths for each input.

    - LazySmallCheck2012 is a more versatile "update" to LazySmallCheck; in particular, it's able to generate functions.

Stats

Basic LazySmallCheck2012 repo stats
2
4
0.0
3 months ago

Sponsored
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com