Skip to main content

refined4s NumGens

Import

import hedgehog.*
import hedgehog.extra.refined4s.gens.NumGens
import refined4s.types.all.*

Numeric refined generators

val genNegInt: Gen[NegInt] =
NumGens.genNegInt(NegInt(-100), NegInt(-1))
// genNegInt: GenT[NegInt] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@53d0f50a
// )

val genPosInt: Gen[PosInt] =
NumGens.genPosInt(PosInt(1), PosInt(100))
// genPosInt: GenT[PosInt] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@7856d3e
// )

val genNonNegLong: Gen[NonNegLong] =
NumGens.genNonNegLong(NonNegLong(0L), NonNegLong(1000L))
// genNonNegLong: GenT[NonNegLong] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@6b50d271
// )

val genPosDouble: Gen[PosDouble] =
NumGens.genPosDouble(PosDouble(0.1d), PosDouble(100d))
// genPosDouble: GenT[PosDouble] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@234fc4e7
// )
import hedgehog.*
import hedgehog.runner.*

import hedgehog.extra.refined4s.gens.NumGens

import refined4s.types.all.*

object NumGensExampleSpec extends Properties {
override def tests: List[Test] = List(
property(
"Example for genNegInt",
testExampleForGenNegInt
).withTests(5), // only for documentation to show fewer logs
property(
"Example for genPosInt",
testExampleForGenPosInt
).withTests(5), // only for documentation to show fewer logs
property(
"Example for genNonNegLong",
testExampleForGenNonNegLong
).withTests(5), // only for documentation to show fewer logs
property(
"Example for genPosDouble",
testExampleForGenPosDouble
).withTests(5), // only for documentation to show fewer logs
)

def testExampleForGenNegInt: Property =
for {
n <- NumGens.genNegInt(NegInt(-100), NegInt(-1)).log("n")
} yield {
println(s"n: $n") // only for documentation to show the value
Result.all(List(
Result.diffNamed(s"The value [$n] must be >= -100", n.value, -100)(_ >= _),
Result.diffNamed(s"The value [$n] must be <= -1", n.value, -1)(_ <= _),
))
}

def testExampleForGenPosInt: Property =
for {
n <- NumGens.genPosInt(PosInt(1), PosInt(100)).log("n")
} yield {
println(s"n: $n") // only for documentation to show the value
Result.all(List(
Result.diffNamed(s"The value [$n] must be >= 1", n.value, 1)(_ >= _),
Result.diffNamed(s"The value [$n] must be <= 100", n.value, 100)(_ <= _),
))
}

def testExampleForGenNonNegLong: Property =
for {
n <- NumGens.genNonNegLong(NonNegLong(0L), NonNegLong(1000L)).log("n")
} yield {
println(s"n: $n") // only for documentation to show the value
Result.all(List(
Result.diffNamed(s"The value [$n] must be >= 0L", n.value, 0L)(_ >= _),
Result.diffNamed(s"The value [$n] must be <= 1000L", n.value, 1000L)(_ <= _),
))
}

def testExampleForGenPosDouble: Property =
for {
n <- NumGens.genPosDouble(PosDouble(0.1d), PosDouble(100d)).log("n")
} yield {
println(s"n: $n") // only for documentation to show the value
Result.all(List(
Result.diffNamed(s"The value [$n] must be >= 0.1d", n.value, 0.1d)(_ >= _),
Result.diffNamed(s"The value [$n] must be <= 100d", n.value, 100d)(_ <= _),
))
}

}

// This is only for doc. Your test code should be run by sbt (or maybe another build tool)
NumGensExampleSpec.main(Array.empty)
// Using random seed: 143001991787
// n: -95
// n: -80
// n: -97
// n: -31
// n: -77
// + repl.MdocSession$MdocApp0$NumGensExampleSpec$.Example for genNegInt: OK, passed 5 tests
// n: 6
// n: 21
// n: 4
// n: 70
// n: 24
// + repl.MdocSession$MdocApp0$NumGensExampleSpec$.Example for genPosInt: OK, passed 5 tests
// n: 165
// n: 331
// n: 477
// n: 639
// n: 755
// + repl.MdocSession$MdocApp0$NumGensExampleSpec$.Example for genNonNegLong: OK, passed 5 tests
// n: 10.302566155795354
// n: 36.96458786839127
// n: 0.29408936924988194
// n: 14.176759249037602
// n: 14.035363167000247
// + repl.MdocSession$MdocApp0$NumGensExampleSpec$.Example for genPosDouble: OK, passed 5 tests

Helper variants

val anyNegIntFrom: Gen[NegInt] =
NumGens.genNegIntMinTo(NegInt(-500))
// anyNegIntFrom: GenT[NegInt] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@77630d21
// )

val anyNonNegIntUpTo: Gen[NonNegInt] =
NumGens.genNonNegIntMaxTo(NonNegInt(1000))
// anyNonNegIntUpTo: GenT[NonNegInt] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@5ba3626e
// )
import hedgehog.*
import hedgehog.runner.*

import hedgehog.extra.refined4s.gens.NumGens

import refined4s.types.all.*

object NumGensVariantsExampleSpec extends Properties {
override def tests: List[Test] = List(
property(
"Example for genNegIntMinTo",
testExampleForGenNegIntMinTo
).withTests(5), // only for documentation to show fewer logs
property(
"Example for genNonNegIntMaxTo",
testExampleForGenNonNegIntMaxTo
).withTests(5), // only for documentation to show fewer logs
)

def testExampleForGenNegIntMinTo: Property =
for {
n <- NumGens.genNegIntMinTo(NegInt(-500)).log("n")
} yield {
println(s"n: $n") // only for documentation to show the value
Result.diffNamed(s"The value [$n] must be >= -500", n.value, -500)(_ >= _)
}

def testExampleForGenNonNegIntMaxTo: Property =
for {
n <- NumGens.genNonNegIntMaxTo(NonNegInt(1000)).log("n")
} yield {
println(s"n: $n") // only for documentation to show the value
Result.diffNamed(s"The value [$n] must be <= 1000", n.value, 1000)(_ <= _)
}

}

// This is only for doc. Your test code should be run by sbt (or maybe another build tool)
NumGensVariantsExampleSpec.main(Array.empty)
// Using random seed: 143009973852
// n: -465
// n: -387
// n: -403
// n: -335
// n: -422
// + repl.MdocSession$MdocApp2$NumGensVariantsExampleSpec$.Example for genNegIntMinTo: OK, passed 5 tests
// n: 136
// n: 314
// n: 398
// n: 165
// n: 579
// + repl.MdocSession$MdocApp2$NumGensVariantsExampleSpec$.Example for genNonNegIntMaxTo: OK, passed 5 tests