Constructs a new MatchResult with passed matches, failureMessage, andnegativeFailureMessage fields.
Constructs a new MatchResult with passed matches, failureMessage, andnegativeFailureMessage fields. The midSentenceFailureMessage will return the same
string as failureMessage, and the midSentenceNegatedFailureMessage will return the
same string as negatedFailureMessage.
indicates whether or not the matcher matched
a failure message to report if a match fails
a message with a meaning opposite to that of the failure message
o != arg0 is the same as !(o == (arg0)).
o != arg0 is the same as !(o == (arg0)).
the object to compare against this object for dis-equality.
false if the receiver object is equivalent to the argument; true otherwise.
o == arg0 is the same as if (o eq null) arg0 eq null else o.equals(arg0).
o == arg0 is the same as if (o eq null) arg0 eq null else o.equals(arg0).
the object to compare against this object for equality.
true if the receiver object is equivalent to the argument; false otherwise.
o == arg0 is the same as o.equals(arg0).
o == arg0 is the same as o.equals(arg0).
the object to compare against this object for equality.
true if the receiver object is equivalent to the argument; false otherwise.
This method is used to cast the receiver object to be of type T0.
This method is used to cast the receiver object to be of type T0.
Note that the success of a cast at runtime is modulo Scala's erasure semantics. Therefore the expression1.asInstanceOf[String] will throw a ClassCastException at runtime, while the expressionList(1).asInstanceOf[List[String]] will not. In the latter example, because the type argument is erased as
part of compilation it is not possible to check whether the contents of the list are of the requested typed.
the receiver object.
This method creates and returns a copy of the receiver object.
This method creates and returns a copy of the receiver object.
The default implementation of the clone method is platform dependent.
a copy of the receiver object.
This method is used to test whether the argument (arg0) is a reference to the
receiver object (this).
This method is used to test whether the argument (arg0) is a reference to the
receiver object (this).
The eq method implements an [http://en.wikipedia.org/wiki/Equivalence_relation equivalence relation] on
non-null instances of AnyRef:
* It is reflexive: for any non-null instance x of type AnyRef, x.eq(x) returns true.
* It is symmetric: for any non-null instances x and y of type AnyRef, x.eq(y) returns true if and
only if y.eq(x) returns true.
* It is transitive: for any non-null instances x, y, and z of type AnyRef if x.eq(y) returns true and y.eq(z) returns true, then x.eq(z) returns true.
Additionally, the eq method has three other properties.
* It is consistent: for any non-null instances x and y of type AnyRef, multiple invocations of
x.eq(y) consistently returns true or consistently returns false.
* For any non-null instance x of type AnyRef, x.eq(null) and null.eq(x) returns false.
* null.eq(null) returns true.
When overriding the equals or hashCode methods, it is important to ensure that their behavior is
consistent with reference equality. Therefore, if two objects are references to each other (o1 eq o2), they
should be equal to each other (o1 == o2) and they should hash to the same value (o1.hashCode == o2.hashCode).
the object to compare against this object for reference equality.
true if the argument is a reference to the receiver object; false otherwise.
This method is used to compare the receiver object (this) with the argument object (arg0) for equivalence.
This method is used to compare the receiver object (this) with the argument object (arg0) for equivalence.
The default implementations of this method is an [http://en.wikipedia.org/wiki/Equivalence_relation equivalence
relation]:
* It is reflexive: for any instance x of type Any, x.equals(x) should return true.
* It is symmetric: for any instances x and y of type Any, x.equals(y) should return true if and
only if y.equals(x) returns true.
* It is transitive: for any instances x, y, and z of type AnyRef if x.equals(y) returns true and
y.equals(z) returns true, then x.equals(z) should return true.
If you override this method, you should verify that your implementation remains an equivalence relation.
Additionally, when overriding this method it is often necessary to override hashCode to ensure that objects
that are "equal" (o1.equals(o2) returns true) hash to the same
scala.Int
(o1.hashCode.equals(o2.hashCode)).
the object to compare against this object for equality.
true if the receiver object is equivalent to the argument; false otherwise.
This method is called by the garbage collector on the receiver object when garbage collection determines that there are no more references to the object.
This method is called by the garbage collector on the receiver object when garbage collection determines that there are no more references to the object.
The details of when and if the finalize method are invoked, as well as the interaction between finalizeand non-local returns and exceptions, are all platform dependent.
Returns a representation that corresponds to the dynamic class of the receiver object.
Returns a representation that corresponds to the dynamic class of the receiver object.
The nature of the representation is platform dependent.
a representation that corresponds to the dynamic class of the receiver object.
Returns a hash code value for the object.
Returns a hash code value for the object.
The default hashing algorithm is platform dependent.
Note that it is allowed for two objects to have identical hash codes (o1.hashCode.equals(o2.hashCode)) yet
not be equal (o1.equals(o2) returns false). A degenerate implementation could always return 0.
However, it is required that if two objects are equal (o1.equals(o2) returns true) that they have
identical hash codes (o1.hashCode.equals(o2.hashCode)). Therefore, when overriding this method, be sure
to verify that the behavior is consistent with the equals method.
the hash code value for the object.
This method is used to test whether the dynamic type of the receiver object is T0.
This method is used to test whether the dynamic type of the receiver object is T0.
Note that the test result of the test is modulo Scala's erasure semantics. Therefore the expression1.isInstanceOf[String] will return false, while the expression List(1).isInstanceOf[List[String]] will
return true. In the latter example, because the type argument is erased as part of compilation it is not
possible to check whether the contents of the list are of the requested typed.
true if the receiver object is an instance of erasure of type T0; false otherwise.
o.ne(arg0) is the same as !(o.eq(arg0)).
o.ne(arg0) is the same as !(o.eq(arg0)).
the object to compare against this object for reference dis-equality.
false if the argument is not a reference to the receiver object; true otherwise.
Wakes up a single thread that is waiting on the receiver object's monitor.
Wakes up a single thread that is waiting on the receiver object's monitor.
Wakes up all threads that are waiting on the receiver object's monitor.
Wakes up all threads that are waiting on the receiver object's monitor.
use productIterator instead
Returns a string representation of the object.
Returns a string representation of the object.
The default representation is platform dependent.
a string representation of the object.
The result of a match operation, such as one performed by a
MatcherorBeMatcher, which contains one field that indicates whether the match succeeded and four fields that provide failure messages to report under different circumstances.A
MatchResult'smatchesfield indicates whether a match succeeded. If it succeeded,matcheswill betrue. The other four fields contain 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:The resulting failure of the
orexpression involving to matchers would make any English teacher proud:indicates whether or not the matcher matched
a failure message to report if a match fails
a message with a meaning opposite to that of the failure message
a failure message suitable for appearing mid-sentence
a negated failure message suitable for appearing mid-sentence
authors:
Bill Venners