trait
PartialFunctionValues extends AnyRef
Type Members
-
class
Valuable[A, B] extends AnyRef
Value Members
-
final
def
!=(arg0: AnyRef): Boolean
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: AnyRef): Boolean
-
final
def
==(arg0: Any): Boolean
-
final
def
asInstanceOf[T0]: T0
-
def
clone(): AnyRef
-
implicit
def
convertPartialFunctionToValuable[A, B](pf: PartialFunction[A, B]): Valuable[A, B]
-
final
def
eq(arg0: AnyRef): Boolean
-
def
equals(arg0: Any): Boolean
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
Inherited from AnyRef
Inherited from Any
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: