refined TimeGens
Import
import hedgehog.*
import hedgehog.extra.refined.TimeGens
import eu.timepit.refined.types.time.*
Time-part generators
val genMonthMinMax: Gen[Month] =
TimeGens.genMonthMinMax(Month.unsafeFrom(1), Month.unsafeFrom(12))
// genMonthMinMax: GenT[Month] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@4da9aa60
// )
val genMonth: Gen[Month] =
TimeGens.genMonth
// genMonth: GenT[Month] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@6e3205de
// )
val genDayMinMax: Gen[Day] =
TimeGens.genDayMinMax(Day.unsafeFrom(1), Day.unsafeFrom(31))
// genDayMinMax: GenT[Day] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@1d20e3cd
// )
val genDay: Gen[Day] =
TimeGens.genDay
// genDay: GenT[Day] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@74d3adab
// )
val genHourMinMax: Gen[Hour] =
TimeGens.genHourMinMax(Hour.unsafeFrom(0), Hour.unsafeFrom(23))
// genHourMinMax: GenT[Hour] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@e7cb356
// )
val genHour: Gen[Hour] =
TimeGens.genHour
// genHour: GenT[Hour] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@5dfa9b82
// )
val genMinuteMinMax: Gen[Minute] =
TimeGens.genMinuteMinMax(Minute.unsafeFrom(0), Minute.unsafeFrom(59))
// genMinuteMinMax: GenT[Minute] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@2ea3fa46
// )
val genMinute: Gen[Minute] =
TimeGens.genMinute
// genMinute: GenT[Minute] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@5ab33e1a
// )
val genSecondMinMax: Gen[Second] =
TimeGens.genSecondMinMax(Second.unsafeFrom(0), Second.unsafeFrom(59))
// genSecondMinMax: GenT[Second] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@14a8ad25
// )
val genSecond: Gen[Second] =
TimeGens.genSecond
// genSecond: GenT[Second] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@5262ead5
// )
val genMillisMinMax: Gen[Millis] =
TimeGens.genMillisMinMax(Millis.unsafeFrom(0), Millis.unsafeFrom(999))
// genMillisMinMax: GenT[Millis] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@7a08ddfd
// )
val genMillis: Gen[Millis] =
TimeGens.genMillis
// genMillis: GenT[Millis] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@34ef58b1
// )
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: 85948279675
// n: 2
// n: 2
// n: 3
// n: 1
// n: 3
// [32m+[0m repl.MdocSession$MdocApp0$TimeGensExampleSpec$.Example for genMonth: OK, passed 5 tests
// n: 10
// n: 10
// n: 9
// n: 13
// n: 9
// [32m+[0m repl.MdocSession$MdocApp0$TimeGensExampleSpec$.Example for genBusinessHour: OK, passed 5 tests
// n: 4
// n: 14
// n: 34
// n: 27
// n: 14
// [32m+[0m repl.MdocSession$MdocApp0$TimeGensExampleSpec$.Example for genSecond: OK, passed 5 tests
// n: 80
// n: 34
// n: 579
// n: 81
// n: 392
// [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(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@55d66f7e
// )
val genFirstTenDays: Gen[Day] =
TimeGens.genDayMinMax(Day.unsafeFrom(1), Day.unsafeFrom(10))
// genFirstTenDays: GenT[Day] = GenT(
// hedgehog.core.GenT$$Lambda$11543/0x00007fa1b9e8a6e0@36e60613
// )
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: 85954710677
// n: 1
// n: 1
// n: 2
// n: 2
// n: 1
// [32m+[0m repl.MdocSession$MdocApp2$TimeGensBoundedExampleSpec$.Example for genFirstQuarterMonth: OK, passed 5 tests
// n: 2
// n: 2
// n: 2
// n: 8
// n: 6
// [32m+[0m repl.MdocSession$MdocApp2$TimeGensBoundedExampleSpec$.Example for genFirstTenDays: OK, passed 5 tests