Skip to main content

refined NumGens

Import

import hedgehog.*
import hedgehog.extra.refined.NumGens
import eu.timepit.refined.types.numeric.*

Numeric refined generators

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

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

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

val genNonPosDouble: Gen[NonPosDouble] =
NumGens.genNonPosDouble(NonPosDouble.unsafeFrom(-10.0), NonPosDouble.unsafeFrom(0.0))
// genNonPosDouble: GenT[NonPosDouble] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@4f095df0
// )
import hedgehog.*
import hedgehog.runner.*

import hedgehog.extra.refined.NumGens

import eu.timepit.refined.types.numeric.*

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 genNonPosDouble",
testExampleForGenNonPosDouble
).withTests(5), // only for documentation to show fewer logs
)

def testExampleForGenNegInt: Property =
for {
n <- NumGens.genNegInt(NegInt.unsafeFrom(-100), NegInt.unsafeFrom(-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.unsafeFrom(1), PosInt.unsafeFrom(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.unsafeFrom(0L), NonNegLong.unsafeFrom(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 testExampleForGenNonPosDouble: Property =
for {
n <- NumGens.genNonPosDouble(NonPosDouble.unsafeFrom(-10.0), NonPosDouble.unsafeFrom(0.0)).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 >= -10.0d", n.value, -10.0d)(_ >= _),
Result.diffNamed(s"The value [$n] must be <= 0.0d", n.value, 0.0d)(_ <= _),
))
}
}

// 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: 139305425419
// n: -97
// n: -71
// n: -83
// n: -96
// n: -56
// + repl.MdocSession$MdocApp0$NumGensExampleSpec$.Example for genNegInt: OK, passed 5 tests
// n: 4
// n: 30
// n: 18
// n: 5
// n: 45
// + repl.MdocSession$MdocApp0$NumGensExampleSpec$.Example for genPosInt: OK, passed 5 tests
// n: 62
// n: 216
// n: 573
// n: 771
// n: 421
// + repl.MdocSession$MdocApp0$NumGensExampleSpec$.Example for genNonNegLong: OK, passed 5 tests
// n: -9.874709249641985
// n: -8.107322477727513
// n: -5.026948986564177
// n: -9.258807731859786
// n: -8.65659842485674
// + repl.MdocSession$MdocApp0$NumGensExampleSpec$.Example for genNonPosDouble: OK, passed 5 tests

Helper variants

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

val genPosLongMaxTo: Gen[PosLong] =
NumGens.genPosLongMaxTo(PosLong.unsafeFrom(10000L))
// genPosLongMaxTo: GenT[PosLong] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@148646aa
// )
import hedgehog.*
import hedgehog.runner.*

import hedgehog.extra.refined.NumGens

import eu.timepit.refined.types.numeric.*

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 genPosLongMaxTo",
testExampleForGenPosLongMaxTo
).withTests(5), // only for documentation to show fewer logs
)

def testExampleForGenNegIntMinTo: Property =
for {
n <- NumGens.genNegIntMinTo(NegInt.unsafeFrom(-500)).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 >= -500", n.value, -500)(_ >= _),
Result.diffNamed(s"The value [$n] must be <= -1", n.value, -1)(_ <= _),
))
}

def testExampleForGenPosLongMaxTo: Property =
for {
n <- NumGens.genPosLongMaxTo(PosLong.unsafeFrom(10000L)).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 >= 1L", n.value, 1L)(_ >= _),
Result.diffNamed(s"The value [$n] must be <= 10000L", n.value, 10000L)(_ <= _),
))
}
}

// 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: 139316395087
// n: -405
// n: -398
// n: -408
// n: -205
// n: -352
// + repl.MdocSession$MdocApp2$NumGensVariantsExampleSpec$.Example for genNegIntMinTo: OK, passed 5 tests
// n: 254
// n: 2882
// n: 2094
// n: 1002
// n: 6343
// + repl.MdocSession$MdocApp2$NumGensVariantsExampleSpec$.Example for genPosLongMaxTo: OK, passed 5 tests