MatcherProducers

Provides an implicit conversion on functions that produce Matchers, i.e., T => Matcher[T] that enables you to modify error messages when composing Matchers.

For an example of using MatcherProducers, see the Composing matchers section in the main documentation for trait Matcher.

Companion:
object
class Object
trait Matchable
class Any
object MatcherProducers.type

Type members

Classlikes

class Composifier[T](f: T => Matcher[T])

Class used via an implicit conversion that adds composeTwice, mapResult, and mapArgs methods to functions that produce a Matcher.

Class used via an implicit conversion that adds composeTwice, mapResult, and mapArgs methods to functions that produce a Matcher.

Implicits

Implicits

implicit def convertToComposifier[T](f: T => Matcher[T]): Composifier[T]

Implicit conversion that converts a function of T => Matcher[T] to an object that has composeTwice, mapResult and mapArgs methods.

Implicit conversion that converts a function of T => Matcher[T] to an object that has composeTwice, mapResult and mapArgs methods.

The following shows how this trait is used to compose twice and modify error messages:

import org.scalatest._
import matchers._
import MatcherProducers._

val f = be > (_: Int)
val g = (_: String).toInt

// f composeTwice g means: (f compose g) andThen (_ compose g)
val beAsIntsGreaterThan =
 f composeTwice g mapResult { mr =>
   mr.copy(
     failureMessageArgs =
       mr.failureMessageArgs.map((LazyArg(_) { "\"" + _.toString + "\".toInt"})),
     negatedFailureMessageArgs =
       mr.negatedFailureMessageArgs.map((LazyArg(_) { "\"" + _.toString + "\".toInt"})),
     midSentenceFailureMessageArgs =
       mr.midSentenceFailureMessageArgs.map((LazyArg(_) { "\"" + _.toString + "\".toInt"})),
     midSentenceNegatedFailureMessageArgs =
       mr.midSentenceNegatedFailureMessageArgs.map((LazyArg(_) { "\"" + _.toString + "\".toInt"}))
   )
 }

"7" should beAsIntsGreaterThan ("8")

The last assertion will fail with message like this:

"7".toInt was not greater than "8".toInt
Type parameters:
T

the type used by function f

Value parameters:
f

a function that takes a T and return a Matcher[T]

Returns:

an object that has composeTwice, mapResult and mapArgs methods.