【发布时间】:2017-07-16 08:25:01
【问题描述】:
我有以下属性:
import org.scalacheck.Prop.propBoolean
def elementsAreReversed(list: List[Int], reversed: List[Int]): Boolean =
if (list.isEmpty) true else {
val lastIdx = list.size - 1
list.zipWithIndex.forall { case (element, index) =>
element == reversed(lastIdx - index)
}
}
val propReversed = Prop.forAll { list: List[Int] =>
val reversed = list.reverse
if (list.isEmpty)
list == reversed
else {
val hasSameSize = reversed.size == list.size
val hasAllElements = list.forall(reversed.contains)
// It works until I add a label here:
hasSameSize && hasAllElements && elementsAreReversed(list, reversed)
}
如果添加标签,它会中断:
hasSameSize :| " a label which doesn't let the code compile" &&
hasAllElements &&
elementsAreReversed(list, reversed)
编译器给了我以下信息:
错误:(47, 36) Any => org.scalacheck.Prop 没有可用的隐式视图。 val propReversed = Prop.forAll { list: List[Int] =>
错误:(47, 36) forAll 方法的参数不足:
(隐式 p: Any => org.scalacheck.Prop, 隐式 a1: org.scalacheck.Arbitrary[List[Int]], 隐式 s1: org.scalacheck.Shrink[List[Int]], 隐式 pp1: List [整数] => org.scalacheck.util.Pretty) org.scalacheck.Prop。未指定的值参数 p, a1, s1...
val propReversed = Prop.forAll { list: List[Int] =>
我正在使用 ScalaCheck 版本1.13.4
【问题讨论】:
标签: scala unit-testing scalacheck