Constructs a new MatchResult with passed matches, rawFailureMessage, and
rawNegativeFailureMessage fields.
Constructs a new MatchResult with passed matches, rawFailureMessage, and
rawNegativeFailureMessage fields. The rawMidSentenceFailureMessage will return the same
string as rawFailureMessage, and the rawMidSentenceNegatedFailureMessage will return the
same string as rawNegatedFailureMessage. failureMessageArgs, negatedFailureMessageArgs,
midSentenceFailureMessageArgs, midSentenceNegatedFailureMessageArgs will be Vector.empty
and Prettifier.default will be used.
indicates whether or not the matcher matched
raw failure message to report if a match fails
raw message with a meaning opposite to that of the failure message
indicates whether or not the matcher matched
raw failure message to report if a match fails
raw message with a meaning opposite to that of the failure message
raw failure message suitable for appearing mid-sentence
raw negated failure message suitable for appearing mid-sentence
arguments for constructing failure message to report if a match fails
arguments for constructing message with a meaning opposite to that of the failure message
arguments for constructing failure message suitable for appearing mid-sentence
arguments for constructing negated failure message suitable for appearing mid-sentence
a Prettifier to prettify arguments before constructing the messages
Construct failure message to report if a match fails, using rawFailureMessage, failureMessageArgs and prettifier
Construct failure message to report if a match fails, using rawFailureMessage, failureMessageArgs and prettifier
failure message to report if a match fails
arguments for constructing failure message to report if a match fails
indicates whether or not the matcher matched
Construct failure message suitable for appearing mid-sentence, using rawMidSentenceFailureMessage, midSentenceFailureMessageArgs and prettifier
Construct failure message suitable for appearing mid-sentence, using rawMidSentenceFailureMessage, midSentenceFailureMessageArgs and prettifier
failure message suitable for appearing mid-sentence
arguments for constructing failure message suitable for appearing mid-sentence
Construct negated failure message suitable for appearing mid-sentence, using rawMidSentenceNegatedFailureMessage, midSentenceNegatedFailureMessageArgs and prettifier
Construct negated failure message suitable for appearing mid-sentence, using rawMidSentenceNegatedFailureMessage, midSentenceNegatedFailureMessageArgs and prettifier
negated failure message suitable for appearing mid-sentence
arguments for constructing negated failure message suitable for appearing mid-sentence
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.
a negated version of this MatchResult
Construct message with a meaning opposite to that of the failure message, using rawNegatedFailureMessage, negatedFailureMessageArgs and prettifier
Construct message with a meaning opposite to that of the failure message, using rawNegatedFailureMessage, negatedFailureMessageArgs and prettifier
message with a meaning opposite to that of the failure message
arguments for constructing message with a meaning opposite to that of the failure message
a Prettifier to prettify arguments before constructing the messages
raw failure message to report if a match fails
raw failure message suitable for appearing mid-sentence
raw negated failure message suitable for appearing mid-sentence
raw message with a meaning opposite to that of the failure message
The result of a match operation, such as one performed by a
MatcherorBeMatcher, 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 aPrettifier. Using the default constructor, failure messages will be constructed lazily (when required).A
MatchResult'smatchesfield indicates whether a match succeeded. If it succeeded,matcheswill betrue. There are four methods,failureMessage,negatedfailureMessage,midSentenceFailureMessageandnegatedMidSentenceFailureMessagethat 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 (matchesisfalse), thefailureMessage(ormidSentenceFailure—more on that below) will be reported to help the user understand what went wrong.Understanding
negatedFailureMessageThe
negatedFailureMessageexists so that it can become thefailureMessageif the matcher is inverted, which happens, for instance, if it is passed tonot. Here's an example:The
Matcher[Int]that results from passing 7 toequal, which is assigned to theequalSevenvariable, will compareInts passed to itsapplymethod with 7. If 7 is passed, theequalSevenmatch will succeed. If anything other than 7 is passed, it will fail. By contrast, thenotEqualSevenmatcher, which results from passingequalSeventonot, does just the opposite. If 7 is passed, thenotEqualSevenmatch will fail. If anything other than 7 is passed, it will succeed.For example, if 8 is passed,
equalSeven'sMatchResultwill contain:expression: equalSeven(8) matches: false failureMessage: 8 did not equal 7 negatedFailureMessage: 8 equaled 7Although the
negatedFailureMessageis nonsensical, it will not be reported to the user. Only thefailureMessage, which does actually explain what caused the failure, will be reported by the user. If you pass 8 tonotEqualSeven'sapplymethod, by contrast, thefailureMessageandnegatedFailureMessagewill be:expression: notEqualSeven(8) matches: true failureMessage: 8 equaled 7 negatedFailureMessage: 8 did not equal 7Note that the messages are swapped from the
equalSevenmessages. This swapping was effectively performed by thenotmatcher, which in addition to swapping thefailureMessageandnegatedFailureMessage, also inverted thematchesvalue. Thus when you pass the same value to bothequalSevenandnotEqualSeventhematchesfield of oneMatchResultwill betrueand the otherfalse. Because thematchesfield of theMatchResultreturned bynotEqualSeven(8)istrue, the nonsensicalfailureMessage, "8 equaled 7", will not be reported to the user.If 7 is passed, by contrast, the
failureMessageandnegatedFailureMessageofequalSevenwill be:expression: equalSeven(7) matches: true failureMessage: 7 did not equal 7 negatedFailureMessage: 7 equaled 7In this case
equalSeven'sfailureMessageis nonsensical, but because the match succeeded, the nonsensical message will not be reported to the user. If you pass 7 tonotEqualSeven'sapplymethod, you'll get:expression: notEqualSeven(7) matches: false failureMessage: 7 equaled 7 negatedFailureMessage: 7 did not equal 7Again the messages are swapped from the
equalSevenmessages, but this time, thefailureMessagemakes sense and explains what went wrong: thenotEqualSevenmatch 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" messagesWhen a ScalaTest matcher expression that involves
andororfails, the failure message that results is composed from the failure messages of the left and right matcher operatnds toandor or. For example:This above expression would fail with the following failure message reported to the user:
This works fine, but what if the failure messages being combined begin with a capital letter, such as:
A combination of two such failure messages might result in an abomination of English punctuation, such as:
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
midSentenceFailureMessageexists for this situation. If the failure message is used at the beginning of the sentence,failureMessagewill be used. But if it appears mid-sentence, or at the end of the sentence,midSentenceFailureMessagewill 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
orexpression involving to matchers would make any English teacher proud:indicates whether or not the matcher matched
raw failure message to report if a match fails
raw message with a meaning opposite to that of the failure message
raw failure message suitable for appearing mid-sentence
raw negated failure message suitable for appearing mid-sentence
arguments for constructing failure message to report if a match fails
arguments for constructing message with a meaning opposite to that of the failure message
arguments for constructing failure message suitable for appearing mid-sentence
arguments for constructing negated failure message suitable for appearing mid-sentence
a
Prettifierto prettify arguments before constructing the messages