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