Search code examples
scalascalactic

Scalactic Accumulation's withGood of Seq


How can I accumulate Scalactic's Or using withGood on a Seq[Or]?

So I have something like following code:

val cs: Seq[BigDecimal Or ErrorMessage]

so I need to do something when all values in cs are Good like this

Accumulation.withGood(cs){...}

Any help is appreciated


Solution

  • Or, per http://www.scalactic.org/user_guide/OrAndEvery:

    object worksheet {
      println("Welcome to the Scala worksheet")   //> Welcome to the Scala worksheet
    
      import org.scalactic._
      import Accumulation._
    
      val test1: Seq[Or[Long, Every[ErrorMessage]]] = Seq(
          Good(1L),
          Good(2L),
          Bad(One("An error")),
          Good(4L),
          Bad(One("Another error"))
          )                                       //> test1  : Seq[org.scalactic.Or[Long,org.scalactic.Every[org.scalactic.ErrorMe
                                                  //| ssage]]] = List(Good(1), Good(2), Bad(One(An error)), Good(4), Bad(One(Anoth
                                                  //| er error)))
      val test2: Seq[Or[Long, Every[ErrorMessage]]] = Seq(
          Good(1L),
          Good(2L),
          Good(3L),
          Good(4L),
          Good(5L)
          )                                       //> test2  : Seq[org.scalactic.Or[Long,org.scalactic.Every[org.scalactic.ErrorMe
                                                  //| ssage]]] = List(Good(1), Good(2), Good(3), Good(4), Good(5))
    
      test1.combined                              //> res0: org.scalactic.Or[Seq[Long],org.scalactic.Every[org.scalactic.ErrorMess
                                                  //| age]] = Bad(Many(An error, Another error))
    
      test2.combined                              //> res1: org.scalactic.Or[Seq[Long],org.scalactic.Every[org.scalactic.ErrorMess
                                                  //| age]] = Good(List(1, 2, 3, 4, 5))
    }