我假设你想要一个已经排序的任意整数数组,对吧?如果是这种情况,您可以使用以下任一方法获取Gen[Array[Int]]
:
val genIntArray = Gen.containerOf[Array, Int](
Gen.chooseNum(Int.MinValue, Int.MaxValue)
)
Run Code Online (Sandbox Code Playgroud)
要么:
val genIntArray = implicitly[Arbitrary[Array[Int]]].arbitrary
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用map
修改生成器对其结果进行排序:
val genSortedIntArray = genIntArray.map(_.sorted)
Run Code Online (Sandbox Code Playgroud)
现在你可以运行genSortedIntArray.sample.get
几次来说服自己结果是一个随机整数的排序数组.
如果你想要一个Arbitrary
有序的整数数组,最好定义一个包装器而不是隐藏默认值Arbitrary[Array[Int]]
.例如,您可以编写以下内容:
case class SortedIntArray(value: Array[Int]) extends AnyVal
object SortedIntArray {
implicit val arb: Arbitrary[SortedIntArray] = Arbitrary(
genSortedIntArray.map(SortedIntArray(_))
)
}
Run Code Online (Sandbox Code Playgroud)
然后:
forAll { (a: SortedIntArray) =>
confirmThatMyFunctionOnSortedIntArraysWorks(a.value)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
811 次 |
最近记录: |