All Downloads are FREE. Search and download functionalities are using the official Maven repository.

.scalaz-specs2_2.9.3.0.1.5.source-code.ScalazMatchers.scala Maven / Gradle / Ivy

The newest version!
package org.specs2.scalaz

import scalaz._

import org.specs2.matcher._

trait ScalazMatchers extends ValidationMatchers { outer =>

  /** Equality matcher with a [[scalaz.Equal]] typeclass */
  def equal[T : Equal : Show](expected: T): Matcher[T] = new Matcher[T] {
    def apply[S <: T](actual: Expectable[S]): MatchResult[S] = {
      val actualT = actual.value.asInstanceOf[T]
      def test = Equal[T].equal(expected, actualT)
      def koMessage = "%s !== %s".format(Show[T].shows(actualT), Show[T].shows(expected))
      def okMessage = "%s === %s".format(Show[T].shows(actualT), Show[T].shows(expected))
      Matcher.result(test, okMessage, koMessage, actual)
    }
  }

  class ScalazBeHaveMatchers[T : Equal : Show](result: MatchResult[T]) {
    def equal(t: T) = result(outer.equal[T](t)(Equal[T], Show[T]))
  }

  implicit def scalazBeHaveMatcher[T : Equal : Show](result: MatchResult[T]) = new ScalazBeHaveMatchers(result)

}

object ScalazMatchers extends ScalazMatchers

// vim: expandtab:ts=2:sw=2




© 2015 - 2025 Weber Informatics LLC | Privacy Policy