sealed case class MatchResult(matches: Boolean, rawFailureMessage: String, rawNegatedFailureMessage: String, rawMidSentenceFailureMessage: String, rawMidSentenceNegatedFailureMessage: String, failureMessageArgs: IndexedSeq[Any], negatedFailureMessageArgs: IndexedSeq[Any], midSentenceFailureMessageArgs: IndexedSeq[Any], midSentenceNegatedFailureMessageArgs: IndexedSeq[Any]) extends Product with Serializable
The result of a match operation, such as one performed by a Matcher
or
BeMatcher
, which
contains one field that indicates whether the match succeeded, four fields that provide
raw failure messages to report under different circumstances, four fields providing
arguments used to construct the final failure messages using raw failure messages
and a Prettifier
. Using the default constructor,
failure messages will be constructed lazily (when required).
A MatchResult
's matches
field indicates whether a match succeeded. If it succeeded,
matches
will be true
.
There are four methods, failureMessage
, negatedfailureMessage
, midSentenceFailureMessage
and negatedMidSentenceFailureMessage
that can be called to get final failure message strings, one of which will be
presented to the user in case of a match failure. If a match succeeds, none of these strings will be used, because no failure
message will be reported (i.e., because there was no failure to report). If a match fails (matches
is false
),
the failureMessage
(or midSentenceFailure
—more on that below) will be reported to help the user understand what went wrong.
Understanding negatedFailureMessage
The negatedFailureMessage
exists so that it can become the failureMessage
if the matcher is inverted,
which happens, for instance, if it is passed to not
. Here's an example:
val equalSeven = equal (7) val notEqualSeven = not (equalSeven)
The Matcher[Int]
that results from passing 7 to equal
, which is assigned to the equalSeven
variable, will compare Int
s passed to its
apply
method with 7. If 7 is passed, the equalSeven
match will succeed. If anything other than 7 is passed, it
will fail. By contrast, the notEqualSeven
matcher, which results from passing equalSeven
to not
, does
just the opposite. If 7 is passed, the notEqualSeven
match will fail. If anything other than 7 is passed, it will succeed.
For example, if 8 is passed, equalSeven
's MatchResult
will contain:
expression: equalSeven(8) matches: false failureMessage: 8 did not equal 7 negatedFailureMessage: 8 equaled 7
Although the negatedFailureMessage
is nonsensical, it will not be reported to the user. Only the failureMessage
,
which does actually explain what caused the failure, will be reported by the user. If you pass 8 to notEqualSeven
's apply
method, by contrast, the failureMessage
and negatedFailureMessage
will be:
expression: notEqualSeven(8) matches: true failureMessage: 8 equaled 7 negatedFailureMessage: 8 did not equal 7
Note that the messages are swapped from the equalSeven
messages. This swapping was effectively performed by the not
matcher,
which in addition to swapping the failureMessage
and negatedFailureMessage
, also inverted the
matches
value. Thus when you pass the same value to both equalSeven
and notEqualSeven
the matches
field of one MatchResult
will be true
and the other false
. Because the
matches
field of the MatchResult
returned by notEqualSeven(8)
is true
,
the nonsensical failureMessage
, "8 equaled 7
", will not be reported to the user.
If 7 is passed, by contrast, the failureMessage
and negatedFailureMessage
of equalSeven
will be:
expression: equalSeven(7) matches: true failureMessage: 7 did not equal 7 negatedFailureMessage: 7 equaled 7
In this case equalSeven
's failureMessage
is nonsensical, but because the match succeeded, the nonsensical message will
not be reported to the user.
If you pass 7 to notEqualSeven
's apply
method, you'll get:
expression: notEqualSeven(7) matches: false failureMessage: 7 equaled 7 negatedFailureMessage: 7 did not equal 7
Again the messages are swapped from the equalSeven
messages, but this time, the failureMessage
makes sense
and explains what went wrong: the notEqualSeven
match failed because the number passed did in fact equal 7. Since
the match failed, this failure message, "7 equaled 7
", will be reported to the user.
Understanding the "midSentence
" messages
When a ScalaTest matcher expression that involves and
or or
fails, the failure message that
results is composed from the failure messages of the left and right matcher operatnds to and
or or.
For example:
8 should (equal (7) or equal (9))
This above expression would fail with the following failure message reported to the user:
8 did not equal 7, and 8 did not equal 9
This works fine, but what if the failure messages being combined begin with a capital letter, such as:
The name property did not equal "Ricky"
A combination of two such failure messages might result in an abomination of English punctuation, such as:
The name property did not equal "Ricky", and The name property did not equal "Bobby"
Because ScalaTest is an internationalized application, taking all of its strings from a property file
enabling it to be localized, it isn't a good idea to force the first character to lower case. Besides,
it might actually represent a String value which should stay upper case. The midSentenceFailureMessage
exists for this situation. If the failure message is used at the beginning of the sentence, failureMessage
will be used. But if it appears mid-sentence, or at the end of the sentence, midSentenceFailureMessage
will be used. Given these failure message strings:
failureMessage: The name property did not equal "Bobby" midSentenceFailureMessage: the name property did not equal "Bobby"
The resulting failure of the or
expression involving to matchers would make any English teacher proud:
The name property did not equal "Ricky", and the name property did not equal "Bobby"
- matches
indicates whether or not the matcher matched
- rawFailureMessage
raw failure message to report if a match fails
- rawNegatedFailureMessage
raw message with a meaning opposite to that of the failure message
- rawMidSentenceFailureMessage
raw failure message suitable for appearing mid-sentence
- rawMidSentenceNegatedFailureMessage
raw negated failure message suitable for appearing mid-sentence
- failureMessageArgs
arguments for constructing failure message to report if a match fails
- negatedFailureMessageArgs
arguments for constructing message with a meaning opposite to that of the failure message
- midSentenceFailureMessageArgs
arguments for constructing failure message suitable for appearing mid-sentence
- midSentenceNegatedFailureMessageArgs
arguments for constructing negated failure message suitable for appearing mid-sentence
- Source
- MatchResult.scala
- Alphabetic
- By Inheritance
- MatchResult
- Serializable
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new MatchResult(matches: Boolean, rawFailureMessage: String, rawNegatedFailureMessage: String)
Constructs a new
MatchResult
with passedmatches
,rawFailureMessage
, andrawNegativeFailureMessage
fields.Constructs a new
MatchResult
with passedmatches
,rawFailureMessage
, andrawNegativeFailureMessage
fields. TherawMidSentenceFailureMessage
will return the same string asrawFailureMessage
, and therawMidSentenceNegatedFailureMessage
will return the same string asrawNegatedFailureMessage
.failureMessageArgs
,negatedFailureMessageArgs
,midSentenceFailureMessageArgs
,midSentenceNegatedFailureMessageArgs
will beVector.empty
andPrettifier.default
will be used.- matches
indicates whether or not the matcher matched
- rawFailureMessage
raw failure message to report if a match fails
- rawNegatedFailureMessage
raw message with a meaning opposite to that of the failure message
- new MatchResult(matches: Boolean, rawFailureMessage: String, rawNegatedFailureMessage: String, rawMidSentenceFailureMessage: String, rawMidSentenceNegatedFailureMessage: String, failureMessageArgs: IndexedSeq[Any], negatedFailureMessageArgs: IndexedSeq[Any], midSentenceFailureMessageArgs: IndexedSeq[Any], midSentenceNegatedFailureMessageArgs: IndexedSeq[Any])
- matches
indicates whether or not the matcher matched
- rawFailureMessage
raw failure message to report if a match fails
- rawNegatedFailureMessage
raw message with a meaning opposite to that of the failure message
- rawMidSentenceFailureMessage
raw failure message suitable for appearing mid-sentence
- rawMidSentenceNegatedFailureMessage
raw negated failure message suitable for appearing mid-sentence
- failureMessageArgs
arguments for constructing failure message to report if a match fails
- negatedFailureMessageArgs
arguments for constructing message with a meaning opposite to that of the failure message
- midSentenceFailureMessageArgs
arguments for constructing failure message suitable for appearing mid-sentence
- midSentenceNegatedFailureMessageArgs
arguments for constructing negated failure message suitable for appearing mid-sentence
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
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def failureMessage(implicit prettifier: Prettifier): String
Construct failure message to report if a match fails, using
rawFailureMessage
,failureMessageArgs
andprettifier
Construct failure message to report if a match fails, using
rawFailureMessage
,failureMessageArgs
andprettifier
- returns
failure message to report if a match fails
- val failureMessageArgs: IndexedSeq[Any]
- def finalize(): Unit
- Attributes
- protected[java.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
- val matches: Boolean
- def midSentenceFailureMessage(implicit prettifier: Prettifier): String
Construct failure message suitable for appearing mid-sentence, using
rawMidSentenceFailureMessage
,midSentenceFailureMessageArgs
andprettifier
Construct failure message suitable for appearing mid-sentence, using
rawMidSentenceFailureMessage
,midSentenceFailureMessageArgs
andprettifier
- returns
failure message suitable for appearing mid-sentence
- val midSentenceFailureMessageArgs: IndexedSeq[Any]
- def midSentenceNegatedFailureMessage(implicit prettifier: Prettifier): String
Construct negated failure message suitable for appearing mid-sentence, using
rawMidSentenceNegatedFailureMessage
,midSentenceNegatedFailureMessageArgs
andprettifier
Construct negated failure message suitable for appearing mid-sentence, using
rawMidSentenceNegatedFailureMessage
,midSentenceNegatedFailureMessageArgs
andprettifier
- returns
negated failure message suitable for appearing mid-sentence
- val midSentenceNegatedFailureMessageArgs: IndexedSeq[Any]
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def negated: MatchResult
Get a negated version of this MatchResult, matches field will be negated and all messages field will be substituted with its counter-part.
Get a negated version of this MatchResult, matches field will be negated and all messages field will be substituted with its counter-part.
- returns
a negated version of this MatchResult
- def negatedFailureMessage(implicit prettifier: Prettifier): String
Construct message with a meaning opposite to that of the failure message, using
rawNegatedFailureMessage
,negatedFailureMessageArgs
andprettifier
Construct message with a meaning opposite to that of the failure message, using
rawNegatedFailureMessage
,negatedFailureMessageArgs
andprettifier
- returns
message with a meaning opposite to that of the failure message
- val negatedFailureMessageArgs: IndexedSeq[Any]
- 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
- val rawFailureMessage: String
- val rawMidSentenceFailureMessage: String
- val rawMidSentenceNegatedFailureMessage: String
- val rawNegatedFailureMessage: String
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- 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()