Specs2 bindings for Scalaz
This library is currently available for Scala binary versions 2.10, 2.11, and 2.12.
To use the latest version, include the following dependency in your build.sbt:
// for Scalaz 7.2.x and specs2 4.0.x
libraryDependencies += "org.typelevel" %% "scalaz-specs2" % "0.5.2" % "test"With the ScalazMatchers trait you can use your Equal[T] typeclass instance to check the equality of 2 values:
a must equal(b)
With ValidationMatchers, you can check Validation instances for success or failure:
1.success must beSuccessful1.fail must beFailing
You can verify what's the validated value:
1.success must beSuccessful (1)1.success must not be successful (2)1.fail must be failing (1)1.fail must not be failing (2)
You can also pattern match on this value
List(1, 2).success must beSuccessful.like { case 1 :: _ => ok }List(1, 2).fail must beFailing.like { case 1 :: _ => ok }
With DisjunctionMatchers, you can check \/ instances for left or right:
The below examples are based on this type:
val res: String \/ Int = ...
You can verify what's the value:
res must be_\/-.which { r => r must_== 3 }res must be_-\/.which { l => l must_== "foo "}
You can also pattern match on this value
res must be_\/-.like { case 3 => ok }res must be_-\/.like { case "foo" => Ok }
The following example illustrates how to verify type class instances for your own datatypes under the assumption that they are in scope.
class TryTest extends Spec {
implicit def TryArbitrary[A](implicit a: Arbitrary[A]): Arbitrary[Try[A]] =
// ...
checkAll(monad.laws[Try])
checkAll(traverse.laws[Try])
checkAll(plus.laws[Try])
checkAll(equal.laws[Try[Int]])
}Internally, it uses ScalaCheck to generate input data.
