Awesome Open Source
Awesome Open Source

Nyaya

Nyaya is a Scala/Scala.JS library to:

  • Test properties using random data.
  • Prove properties with (reasonably-sized) finite domains.
  • Assert properties in real data.
  • Generate random data.
  • Ensure uniqueness in random data.

It is:

  • Fast. Probably the fastest Scala random data gen / prop tester. (Benchmarks coming soon…)
  • Has a nice, fluent API for generating random data. (examples)
scala> import nyaya.gen._
import nyaya.gen._

scala> val g = Gen.int mapTo Gen.boolean.option
g: nyaya.gen.Gen[Map[Int,Option[Boolean]]] = Gen(<function1>)

scala> g.samples().take(1).foreach(println)
Map(609117252 -> None, -339 -> Some(true), 1684851879 -> Some(false), 78379 -> None)

SBT setup

// Property expression, evaluation, assertion.
libraryDependencies += "com.github.japgolly.nyaya" %%% "nyaya-prop" % "0.11.0"

// Random data generation.
libraryDependencies += "com.github.japgolly.nyaya" %%% "nyaya-gen" % "0.11.0"

// Property testing with random data.
// Property proving.
libraryDependencies += "com.github.japgolly.nyaya" %%% "nyaya-test" % "0.11.0" % Test

Doc


Requires:

  • Scala 2.13+
  • Scala.JS 1.6+ (optional)

What does Nyaya mean?

See:


Support

If you like what I do —my OSS libraries, my contributions to other OSS libs, my programming blog— and you'd like to support me, more content, more lib maintenance, please become a patron! I do all my OSS work unpaid so showing your support will make a big difference.


Licence

Copyright (C) 2014-2020 David Barri

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Scala (39,164
Functional Programming (3,057
Random (1,249
Scalajs (446
Fp (290
Property Based Testing (151
Related Projects