Enables collections of Outcomes to be flattened into a collections of contained exceptions.
Enables collections of Outcomes to be flattened into a collections of contained exceptions.
Here's an example:
scala> import org.scalatest._
import org.scalatest._
scala> import prop.TableDrivenPropertyChecks._
import prop.TableDrivenPropertyChecks._
scala> val squares = // (includes errors)
| Table(
| ("x", "square"),
| ( 0 , 0 ),
| ( 1 , 1 ),
| ( 2 , 4 ),
| ( 3 , 8 ),
| ( 4 , 16 ),
| ( 5 , 26 ),
| ( 6 , 36 )
| )
squares: org.scalatest.prop.TableFor2[Int,Int] =
TableFor2((x,square), (0,0), (1,1), (2,4), (3,8), (4,16), (5,26), (6,36))
Given the above table, which includes some errors, you can obtain an IndexedSeq of the Outcomes
of executing an assertion on each row of the table with outcomeOf, like this:
scala> import OutcomeOf._
import OutcomeOf._
scala> import Matchers._
import Matchers._
scala> val outcomes = for ((x, square) <- squares) yield outcomeOf { square shouldEqual x * x }
outcomes: IndexedSeq[org.scalatest.Outcome] =
Vector(Succeeded, Succeeded, Succeeded,
Failed(org.scalatest.exceptions.TestFailedException: 8 did not equal 9), Succeeded,
Failed(org.scalatest.exceptions.TestFailedException: 26 did not equal 25), Succeeded)
Now you have a collection of all the outcomes, including successful ones. If you just want the Failed and Canceled outcomes, which
contain exceptions, you can filter out anything that isn't "exceptional," like this:
scala> outcomes.filter(_.isExceptional) res1: IndexedSeq[org.scalatest.Outcome] = Vector(Failed(org.scalatest.exceptions.TestFailedException: 8 did not equal 9), Failed(org.scalatest.exceptions.TestFailedException: 26 did not equal 25))
But if you just wanted the contained exceptions, you can (thanks to this implicit method) invoke flatten on your collection:
scala> outcomes.flatten res2: IndexedSeq[Throwable] = Vector(org.scalatest.exceptions.TestFailedException: 8 did not equal 9, org.scalatest.exceptions.TestFailedException: 26 did not equal 25)
Companion object for trait
Outcomethat contains an implicit method that enables collections ofOutcomes to be flattened into a collections of contained exceptions.