Skip to main content

refined NetGens

Import​

import hedgehog.*
import hedgehog.extra.refined.NetGens
import eu.timepit.refined.types.net.*

Port generators​

val genPortNumber: Gen[PortNumber] =
NetGens.genPortNumber
// genPortNumber: GenT[PortNumber] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@2e46ca8c
// )

val genSystemPortNumber: Gen[SystemPortNumber] =
NetGens.genSystemPortNumber
// genSystemPortNumber: GenT[SystemPortNumber] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@1c57d4c4
// )

val genUserPortNumber: Gen[UserPortNumber] =
NetGens.genUserPortNumber
// genUserPortNumber: GenT[UserPortNumber] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@2a0c8b90
// )

val genDynamicPortNumber: Gen[DynamicPortNumber] =
NetGens.genDynamicPortNumber
// genDynamicPortNumber: GenT[DynamicPortNumber] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@533b4b33
// )

val genNonSystemPortNumber: Gen[NonSystemPortNumber] =
NetGens.genNonSystemPortNumber
// genNonSystemPortNumber: GenT[NonSystemPortNumber] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@3e0d67e5
// )
import hedgehog.*
import hedgehog.runner.*

import hedgehog.extra.refined.NetGens

object NetGensExampleSpec extends Properties {
override def tests: List[Test] = List(
property(
"Example for genPortNumber",
testExampleForGenPortNumber
).withTests(5), // only for documentation to show fewer logs
property(
"Example for genSystemPortNumber",
testExampleForGenSystemPortNumber
).withTests(5), // only for documentation to show fewer logs
property(
"Example for genUserPortNumber",
testExampleForGenUserPortNumber
).withTests(5), // only for documentation to show fewer logs
property(
"Example for genDynamicPortNumber",
testExampleForGenDynamicPortNumber
).withTests(5), // only for documentation to show fewer logs
property(
"Example for genNonSystemPortNumber",
testExampleForGenNonSystemPortNumber
).withTests(5), // only for documentation to show fewer logs
)

def testExampleForGenPortNumber: Property =
for {
p <- NetGens.genPortNumber.log("p")
} yield {
println(s"p: $p") // only for documentation to show the value
Result.all(List(
Result.diffNamed(s"The value [$p] must be >= 0", p.value, 0)(_ >= _),
Result.diffNamed(s"The value [$p] must be <= 65535", p.value, 65535)(_ <= _),
))
}

def testExampleForGenSystemPortNumber: Property =
for {
p <- NetGens.genSystemPortNumber.log("p")
} yield {
println(s"p: $p") // only for documentation to show the value
Result.all(List(
Result.diffNamed(s"The value [$p] must be >= 0", p.value, 0)(_ >= _),
Result.diffNamed(s"The value [$p] must be <= 1023", p.value, 1023)(_ <= _),
))
}

def testExampleForGenUserPortNumber: Property =
for {
p <- NetGens.genUserPortNumber.log("p")
} yield {
println(s"p: $p") // only for documentation to show the value
Result.all(List(
Result.diffNamed(s"The value [$p] must be >= 1024", p.value, 1024)(_ >= _),
Result.diffNamed(s"The value [$p] must be <= 49151", p.value, 49151)(_ <= _),
))
}

def testExampleForGenDynamicPortNumber: Property =
for {
p <- NetGens.genDynamicPortNumber.log("p")
} yield {
println(s"p: $p") // only for documentation to show the value
Result.all(List(
Result.diffNamed(s"The value [$p] must be >= 49152", p.value, 49152)(_ >= _),
Result.diffNamed(s"The value [$p] must be <= 65535", p.value, 65535)(_ <= _),
))
}

def testExampleForGenNonSystemPortNumber: Property =
for {
p <- NetGens.genNonSystemPortNumber.log("p")
} yield {
println(s"p: $p") // only for documentation to show the value
Result.all(List(
Result.diffNamed(s"The value [$p] must be >= 1024", p.value, 1024)(_ >= _),
Result.diffNamed(s"The value [$p] must be <= 65535", p.value, 65535)(_ <= _),
))
}
}

// This is only for doc. Your test code should be run by sbt (or maybe another build tool)
NetGensExampleSpec.main(Array.empty)
// Using random seed: 82988393652
// p: 2911
// p: 8014
// p: 4112
// p: 49683
// p: 8501
// + repl.MdocSession$MdocApp0$NetGensExampleSpec$.Example for genPortNumber: OK, passed 5 tests
// p: 47
// p: 178
// p: 75
// p: 553
// p: 379
// + repl.MdocSession$MdocApp0$NetGensExampleSpec$.Example for genSystemPortNumber: OK, passed 5 tests
// p: 7456
// p: 15314
// p: 6193
// p: 32255
// p: 16441
// + repl.MdocSession$MdocApp0$NetGensExampleSpec$.Example for genUserPortNumber: OK, passed 5 tests
// p: 52403
// p: 51004
// p: 52617
// p: 58885
// p: 58461
// + repl.MdocSession$MdocApp0$NetGensExampleSpec$.Example for genDynamicPortNumber: OK, passed 5 tests
// p: 8977
// p: 6740
// p: 19091
// p: 29757
// p: 23150
// + repl.MdocSession$MdocApp0$NetGensExampleSpec$.Example for genNonSystemPortNumber: OK, passed 5 tests