refined TimeGens
Import
import hedgehog.*
import hedgehog.extra.refined.TimeGens
import eu.timepit.refined.types.time.*
Time-part generators
val genMonth: Gen[Month] =
TimeGens.genMonth
// genMonth: GenT[Month] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@6fc5bb86
// )
val genBusinessHour: Gen[Hour] =
TimeGens.genHourMinMax(Hour.unsafeFrom(9), Hour.unsafeFrom(17))
// genBusinessHour: GenT[Hour] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@ddf4802
// )
val genSecond: Gen[Second] =
TimeGens.genSecond
// genSecond: GenT[Second] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@4ccec55d
// )
val genMillis: Gen[Millis] =
TimeGens.genMillis
// genMillis: GenT[Millis] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@5e9d5197
// )
import hedgehog.*
import hedgehog.runner.*
import hedgehog.extra.refined.TimeGens
import eu.timepit.refined.types.time.*
object TimeGensExampleSpec extends Properties {
override def tests: List[Test] = List(
property(
"Example for genMonth",
testExampleForGenMonth
).withTests(5), // only for documentation to show fewer logs
property(
"Example for genBusinessHour",
testExampleForGenBusinessHour
).withTests(5), // only for documentation to show fewer logs
property(
"Example for genSecond",
testExampleForGenSecond
).withTests(5), // only for documentation to show fewer logs
property(
"Example for genMillis",
testExampleForGenMillis
).withTests(5), // only for documentation to show fewer logs
)
def testExampleForGenMonth: Property =
for {
n <- TimeGens.genMonth.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 <= 12", n.value, 12)(_ <= _),
))
}
def testExampleForGenBusinessHour: Property =
for {
n <- TimeGens.genHourMinMax(Hour.unsafeFrom(9), Hour.unsafeFrom(17)).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 >= 9", n.value, 9)(_ >= _),
Result.diffNamed(s"The value [$n] must be <= 17", n.value, 17)(_ <= _),
))
}
def testExampleForGenSecond: Property =
for {
n <- TimeGens.genSecond.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", n.value, 0)(_ >= _),
Result.diffNamed(s"The value [$n] must be <= 59", n.value, 59)(_ <= _),
))
}
def testExampleForGenMillis: Property =
for {
n <- TimeGens.genMillis.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", n.value, 0)(_ >= _),
Result.diffNamed(s"The value [$n] must be <= 999", n.value, 999)(_ <= _),
))
}
}
// This is only for doc. Your test code should be run by sbt (or maybe another build tool)
TimeGensExampleSpec.main(Array.empty)
// Using random seed: 141214396682
// n: 1
// n: 5
// n: 6
// n: 6
// n: 12
// [32m+[0m repl.MdocSession$MdocApp0$TimeGensExampleSpec$.Example for genMonth: OK, passed 5 tests
// n: 9
// n: 11
// n: 10
// n: 11
// n: 16
// [32m+[0m repl.MdocSession$MdocApp0$TimeGensExampleSpec$.Example for genBusinessHour: OK, passed 5 tests
// n: 1
// n: 12
// n: 6
// n: 33
// n: 9
// [32m+[0m repl.MdocSession$MdocApp0$TimeGensExampleSpec$.Example for genSecond: OK, passed 5 tests
// n: 33
// n: 292
// n: 521
// n: 646
// n: 934
// [32m+[0m repl.MdocSession$MdocApp0$TimeGensExampleSpec$.Example for genMillis: OK, passed 5 tests
Bounded generators
val genFirstQuarterMonth: Gen[Month] =
TimeGens.genMonthMinMax(Month.unsafeFrom(1), Month.unsafeFrom(3))
// genFirstQuarterMonth: GenT[Month] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@1cc6c849
// )
val genFirstTenDays: Gen[Day] =
TimeGens.genDayMinMax(Day.unsafeFrom(1), Day.unsafeFrom(10))
// genFirstTenDays: GenT[Day] = GenT(
// run = hedgehog.core.GenT$$Lambda$11268/0x00007f0539e251c8@6b2e0c8b
// )
import hedgehog.*
import hedgehog.runner.*
import hedgehog.extra.refined.TimeGens
import eu.timepit.refined.types.time.*
object TimeGensBoundedExampleSpec extends Properties {
override def tests: List[Test] = List(
property(
"Example for genFirstQuarterMonth",
testExampleForGenFirstQuarterMonth
).withTests(5), // only for documentation to show fewer logs
property(
"Example for genFirstTenDays",
testExampleForGenFirstTenDays
).withTests(5), // only for documentation to show fewer logs
)
def testExampleForGenFirstQuarterMonth: Property =
for {
n <- TimeGens.genMonthMinMax(Month.unsafeFrom(1), Month.unsafeFrom(3)).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 <= 3", n.value, 3)(_ <= _),
))
}
def testExampleForGenFirstTenDays: Property =
for {
n <- TimeGens.genDayMinMax(Day.unsafeFrom(1), Day.unsafeFrom(10)).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 <= 10", n.value, 10)(_ <= _),
))
}
}
// This is only for doc. Your test code should be run by sbt (or maybe another build tool)
TimeGensBoundedExampleSpec.main(Array.empty)
// Using random seed: 141219709781
// n: 1
// n: 1
// n: 1
// n: 1
// n: 1
// [32m+[0m repl.MdocSession$MdocApp2$TimeGensBoundedExampleSpec$.Example for genFirstQuarterMonth: OK, passed 5 tests
// n: 1
// n: 3
// n: 6
// n: 1
// n: 8
// [32m+[0m repl.MdocSession$MdocApp2$TimeGensBoundedExampleSpec$.Example for genFirstTenDays: OK, passed 5 tests