Wrapper class that adds a valueAt
method to PartialFunction
, allowing
you to make statements like:
Wrapper class that adds a valueAt
method to PartialFunction
, allowing
you to make statements like:
pf.valueAt("VI") should equal (6)
Implicit conversion that adds a valueAt
method to PartialFunction
.
Implicit conversion that adds a valueAt
method to PartialFunction
.
the PartialFunction
on which to add the valueAt
method
Trait that provides an implicit conversion that adds a
valueAt
method toPartialFunction
, which will return the value (result) of the function applied to the argument passed tovalueAt
, or throwTestFailedException
if the partial function is not defined at the argument.This construct allows you to express in one statement that a partial function should be defined for a particular input, and that its result value should meet some expectation. Here's an example:
Or, using an assertion instead of a matcher expression:
Were you to simply invoke
apply
on thePartialFunction
, passing in an input value, if the partial function wasn't defined at that input, it would throw some exception, but likely not one that provides a stack depth:The
NoSuchElementException
thrown in this situation would cause the test to fail, but without providing a stack depth pointing to the failing line of test code. This stack depth, provided byTestFailedException
(and a few other ScalaTest exceptions), makes it quicker for users to navigate to the cause of the failure. WithoutPartialFunctionValues
, to get a stack depth exception you would need to make two statements, like this:The
PartialFunctionValues
trait allows you to state that more concisely: