2

如何为第二个参数 someBoundedInt 编写一个生成器,它将在为 minmaxBound 生成的值之间随机生成一个 Int?

val boundedIntProperty = forAll {
  (minmaxBound: (Int,Int), someBoundedInt: Int) => 
    minmaxBound._1 <= someBoundedInt && someBoundedInt <= minmaxBound._2

}
4

1 回答 1

6

您可以forAll像这样嵌套调用:

val boundedIntProperty = forAll { (minBound: Int, maxBound: Int) =>
  forAll( Gen.choose(minBound, maxBound) ) { someBoundedInt =>
    ...
  }
}

请注意,上面的,有时minBound可能会更大maxBound,这将导致Gen.choose失败(不产生值)。因此,您可能也想以更智能的方式生成界限。

于 2014-01-21T13:57:25.187 回答