Inside

org.scalatest.Inside
See theInside companion object
trait Inside

Trait containing the inside construct, which allows you to make statements about nested object graphs using pattern matching.

For example, given the following case classes:

case class Address(street: String, city: String, state: String, zip: String)
case class Name(first: String, middle: String, last: String)
case class Record(name: Name, address: Address, age: Int)

You could write:

inside (rec) { case Record(name, address, age) =>
 inside (name) { case Name(first, middle, last) =>
   first should be ("Sally")
   middle should be ("Ann")
   last should be ("Jones")
 }
 inside (address) { case Address(street, city, state, zip) =>
   street should startWith ("25")
   city should endWith ("Angeles")
   state should equal ("CA")
   zip should be ("12345")
 }
 age should be < 99
}

If an assertion fails, the error message will include the toString of each value passed to inside clauses enclosing the failed assertion. For example, if rec in the previous expression was defined like this:

val rec = Record(
 Name("Sally", "Anna", "Jones"),
 Address("25 Main St", "Los Angeles", "CA", "12345"),
 38
)

The error message will read:

"Ann[a]" was not equal to "Ann[]", inside Name(Sally,Anna,Jones),
inside Record(Name(Sally,Anna,Jones),Address(25 Main St,Los Angeles,CA,12345),38)

Attributes

Companion
object
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object Inside.type

Members list

Value members

Concrete methods

inline def inside[T, U](value: T)(pf: PartialFunction[T, U]): U

Inspects inside the passed value using the passed partial function.

Inspects inside the passed value using the passed partial function.

The inside method checks to see whether the partial function passed as the second curried parameter is defined at the value passed as the first parameter, and if so, passes that value to the partial function.

If the partial function is not defined at the passed value, inside will throw a TestFailedException with a detail message describing the problem. Otherwise, if the partial function returns normally, inside will return normally. If the partial function completes abruptly with an exception that mixes in ModifiableMessage (such as TestFailedException), inside will append the value's toString of to the exception's detail message, and rethrow it. If the exception thrown by the partial function does not mix in ModifiableMessage, inside completes abruptly with that same exception.

Value parameters

pf

the partial function to use to inspect inside the passed value

value

the value inside of which to inspect

Attributes

Throws
TestFailedException

if the passed partial function is not defined at the passed value