如何为特定列表内容编写属性测试

时间:2017-11-08 09:54:13

标签: scala scalacheck property-testing

我有以下功能,我想用ScalaCheck测试它:

object Windows {

  val Directory = "^[a-zA-Z]:\\\\(((?![<>:\"/\\\\|?*]).)+((?<![ .])\\\\)?)*$".r


  def arePathsValid(paths: List[String]): Eval[List[String]] = {
    Foldable[List]
      .foldRight(paths, Eval.later(List.empty[String]))((a: String, b: Eval[List[String]]) => {
        Directory.findFirstIn(a) match {
          case Some(a) => b.map(a :: _)
          case None => b
        }
      })
  }
}

我试着开始:

val propPaths = forAll { l: List[String] => ??? }

但是无法为该属性编写实现。

String中应该随机生成的List应该有一个Windows模式路径,例如:

C:\temp\foo

如何进行属性实现?

1 个答案:

答案 0 :(得分:1)

您可以像这样添加Windows路径前缀:

val strGen = Gen.alphaStr // Or any other String generator
val windowsPathGen = strGen.map("C:\temp\foo" + _)