Enables collections of Outcome
s to be flattened into a collections of contained exceptions.
Enables collections of Outcome
s 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 Outcome
s
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
Outcome
that contains an implicit method that enables collections ofOutcome
s to be flattened into a collections of contained exceptions.