final case class LazyArg(arg: Any)(f: (Any) => String) extends Product with Serializable
Transforms a given object's toString with a given function lazily.
This class is intended to be used with the mapResult method of
MatcherProducers, which you can use to
modify error messages when composing matchers. This class exists to enable those error messages
to be modified lazily, so that toString is invoked on the given
arg, and its result transformed by the given function f, only when and if
the toString method is invoked on the LazyArg. As a performance optimization, ScalaTest's
MatchResult avoids invoking toString on objects
until and unless an error message is actually needed, to minimize unecessary creation and concatenation
of strings. The LazyArg class enables this same performance optimization when composing
matchers.
The other design goal of LazyArg is to make the internal arg available for inspection
in an IDE. In a future version of ScalaTest, the args of MatchResult that were used
to create the error message will be included in the TestFailedException, so they can be inspected
in IDEs. This is why the arg field of LazyArg is public.
For an example of using LazyArg, see the Composing matchers
section in the main documentation for trait Matcher.
- arg
the argument
- f
a function that given the
argwill produce aString
- Source
- LazyArg.scala
- Alphabetic
- By Inheritance
- LazyArg
- Serializable
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new LazyArg(arg: Any)(f: (Any) => String)
- arg
the argument
- f
a function that given the
argwill produce aString
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- val arg: Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
Returns the result of invoking the function
f, passed to theLazyArgconstructor, on fieldarg.Returns the result of invoking the function
f, passed to theLazyArgconstructor, on fieldarg.- Definition Classes
- LazyArg → AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()