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

teststate.data.Result.scala Maven / Gradle / Ivy

There is a newer version: 3.1.0
Show newest version
package teststate.data


sealed abstract class Result[+Err] extends Product with Serializable {
  def failure: Option[Err]
  def +[e >: Err](r: Result[e]): Result[e]
}

object Result {
  def empty[E]: Result[E] = Skip

  case object Pass extends Result[Nothing] {
    override def failure = None
    override def +[e](r: Result[e]): Result[e] = r match {
      case Pass | Skip => Pass
      case Fail(_)     => r
    }
  }

  case object Skip extends Result[Nothing] {
    override def failure = None
    override def +[e](r: Result[e]): Result[e] = r
  }

  final case class Fail[+Err](error: Err) extends Result[Err] {
    override def failure = Some(error)
    override def +[e >: Err](r: Result[e]): Result[e] = this
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy