Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/japgolly/nyaya
Random Data Generation and/or Property Testing in Scala & Scala.JS.
https://github.com/japgolly/nyaya
fp functional-programming property-based-testing property-testing random random-data-generation scala scalajs
Last synced: 1 day ago
JSON representation
Random Data Generation and/or Property Testing in Scala & Scala.JS.
- Host: GitHub
- URL: https://github.com/japgolly/nyaya
- Owner: japgolly
- License: lgpl-2.1
- Created: 2015-01-10T23:31:45.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2024-08-12T21:38:55.000Z (5 months ago)
- Last Synced: 2024-10-12T18:45:07.656Z (3 months ago)
- Topics: fp, functional-programming, property-based-testing, property-testing, random, random-data-generation, scala, scalajs
- Language: Scala
- Homepage:
- Size: 579 KB
- Stars: 185
- Watchers: 5
- Forks: 19
- Open Issues: 27
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
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)](doc/FEATURES.md#generating-random-data)
```
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()scala> g.samples().take(1).foreach(println)
Map(609117252 -> None, -339 -> Some(true), 1684851879 -> Some(false), 78379 -> None)
```
#### SBT setup
```scala
ver nyayaVer = "1.1.0"// Property expression, evaluation, assertion.
libraryDependencies += "com.github.japgolly.nyaya" %%% "nyaya-prop" % nyayaVer// Random data generation.
libraryDependencies += "com.github.japgolly.nyaya" %%% "nyaya-gen" % nyayaVer// Random JSON generation
libraryDependencies += "com.github.japgolly.nyaya" %%% "nyaya-gen-circe" % nyayaVer// Property testing with random data.
// Property proving.
libraryDependencies += "com.github.japgolly.nyaya" %%% "nyaya-test" % nyayaVer % Test
```
#### Doc
* [Features in more detail](doc/FEATURES.md).
* [Changelogs](doc/changelog/).
#### Requires:
* Scala 2.13+
* Scala.JS 1.10+ *(optional)*
##### What does Nyaya mean?
See:
* https://en.wikipedia.org/wiki/Nyaya
* https://en.wikipedia.org/wiki/History_of_logic
#### Support
If you like what I do
—my OSS libraries, my contributions to other OSS libs, [my programming blog](https://japgolly.blogspot.com)—
and you'd like to support me, more content, more lib maintenance, [please become a patron](https://www.patreon.com/japgolly)!
I do all my OSS work unpaid so showing your support will make a big difference.
#### Licence
```
Copyright (C) 2014-2022 David BarriThis 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.
```