Class used via an implicit conversion to enable two objects to be compared with
=== and !== with a Boolean result and an enforced type constraint between
two object types.
Class used via an implicit conversion to enable two objects to be compared with
=== and !== with a Boolean result and an enforced type constraint between
two object types. For example:
assert(a === b) assert(c !== d)
You can also check numeric values against another with a tolerance. Here are some examples:
assert(a === (2.0 +- 0.1)) assert(c !== (2.0 +- 0.1))
Class used via an implicit conversion to enable any two objects to be compared with
=== and !== with a Boolean result and no enforced type constraint between
two object types.
Class used via an implicit conversion to enable any two objects to be compared with
=== and !== with a Boolean result and no enforced type constraint between
two object types. For example:
assert(a === b) assert(c !== d)
You can also check numeric values against another with a tolerance. Here are some examples:
assert(a === (2.0 +- 0.1)) assert(c !== (2.0 +- 0.1))
Returns a TripleEqualsInvocationOnSpread[T], given an Spread[T], to facilitate
the “<left> should !== (<pivot> +- <tolerance>)”
syntax of Matchers.
Returns a TripleEqualsInvocationOnSpread[T], given an Spread[T], to facilitate
the “<left> should !== (<pivot> +- <tolerance>)”
syntax of Matchers.
the Spread[T] against which to compare the left-hand value
a TripleEqualsInvocationOnSpread wrapping the passed Spread[T] value, with
expectingEqual set to false.
Returns a TripleEqualsInvocation[Null], given a null reference, to facilitate
the “<left> should !== null” syntax
of Matchers.
Returns a TripleEqualsInvocation[Null], given a null reference, to facilitate
the “<left> should !== null” syntax
of Matchers.
a null reference
a TripleEqualsInvocation wrapping the passed null value, with expectingEqual
set to false.
Returns a TripleEqualsInvocation[T], given an object of type T, to facilitate
the “<left> should !== <right>” syntax
of Matchers.
Returns a TripleEqualsInvocation[T], given an object of type T, to facilitate
the “<left> should !== <right>” syntax
of Matchers.
the right-hand side value for an equality assertion
a TripleEqualsInvocation wrapping the passed right value, with expectingEqual
set to false.
Returns a TripleEqualsInvocationOnSpread[T], given an Spread[T], to facilitate
the “<left> should === (<pivot> +- <tolerance>)”
syntax of Matchers.
Returns a TripleEqualsInvocationOnSpread[T], given an Spread[T], to facilitate
the “<left> should === (<pivot> +- <tolerance>)”
syntax of Matchers.
the Spread[T] against which to compare the left-hand value
a TripleEqualsInvocationOnSpread wrapping the passed Spread[T] value, with
expectingEqual set to true.
Returns a TripleEqualsInvocation[Null], given a null reference, to facilitate
the “<left> should === null” syntax
of Matchers.
Returns a TripleEqualsInvocation[Null], given a null reference, to facilitate
the “<left> should === null” syntax
of Matchers.
a null reference
a TripleEqualsInvocation wrapping the passed null value, with expectingEqual
set to true.
Returns a TripleEqualsInvocation[T], given an object of type T, to facilitate
the “<left> should === <right>” syntax
of Matchers.
Returns a TripleEqualsInvocation[T], given an object of type T, to facilitate
the “<left> should === <right>” syntax
of Matchers.
the right-hand side value for an equality assertion
a TripleEqualsInvocation wrapping the passed right value, with expectingEqual
set to true.
Provides an A CanEqual B instance for any two types A and B, enforcing the type constraint that B is
implicitly convertible to A, given an implicit Equivalence[A].
Provides an A CanEqual B instance for any two types A and B, enforcing the type constraint that B is
implicitly convertible to A, given an implicit Equivalence[A].
The returned Constraint's areEqual method uses the implicitly passed Equivalence[A]'s
areEquivalent method to determine equality.
This method is overridden and made implicit by subtraits
ConversionCheckedTripleEquals) and
overriden as non-implicit by the other subtraits in this package.
an Equivalence[A] type class to which the Constraint.areEqual method will delegate to determine equality.
an implicit conversion from B to A
an A CanEqual B instance whose areEqual method delegates to the areEquivalent method of
the passed Equivalence[A].
Provides a A CanEqual B for any two types A and B, enforcing the type constraint
that A must be a subtype of B, given an explicit Equivalence[B].
Provides a A CanEqual B for any two types A and B, enforcing the type constraint
that A must be a subtype of B, given an explicit Equivalence[B].
This method is used to enable the Explicitly DSL for
TypeCheckedTripleEquals by requiring an explicit Equivalance[B], but
taking an implicit function that provides evidence that A is a subtype of B.
The returned Constraint's areEqual method uses the implicitly passed Equivalence[B]'s
areEquivalent method to determine equality.
This method is overridden and made implicit by subtraits
LowPriorityTypeCheckedConstraint (extended by
TypeCheckedTripleEquals), and
overriden as non-implicit by the other subtraits in this package.
an Equivalence[B] type class to which the Constraint.areEqual method
will delegate to determine equality.
evidence that A is a subype of B
an A CanEqual B instance whose areEqual method delegates to the
areEquivalent method of the passed Equivalence[B].
Provides an A CanEqual B instance for any two types A and B, enforcing the type constraint that A is
implicitly convertible to B, given an explicit Equivalence[B].
Provides an A CanEqual B instance for any two types A and B, enforcing the type constraint that A is
implicitly convertible to B, given an explicit Equivalence[B].
This method is used to enable the Explicitly DSL for
ConversionCheckedTripleEquals by requiring an explicit Equivalance[B], but
taking an implicit function that converts from A to B.
The returned Constraint's areEqual method uses the implicitly passed Equivalence[B]'s
areEquivalent method to determine equality.
This method is overridden and made implicit by subtraits
LowPriorityConversionCheckedConstraint (extended by
ConversionCheckedTripleEquals), and
overriden as non-implicit by the other subtraits in this package.
an A CanEqual B instance whose areEqual method delegates to the areEquivalent method of
the passed Equivalence[B].
Provides an A CanEqual B instance for any two types A and B, enforcing the type constraint
that B must be a subtype of A, given an explicit Equivalence[A].
Provides an A CanEqual B instance for any two types A and B, enforcing the type constraint
that B must be a subtype of A, given an explicit Equivalence[A].
This method is used to enable the Explicitly DSL for
TypeCheckedTripleEquals by requiring an explicit Equivalance[B], but
taking an implicit function that provides evidence that A is a subtype of B. For example, under TypeCheckedTripleEquals,
this method (as an implicit method), would be used to compile this statement:
def closeEnoughTo1(num: Double): Boolean = (num === 1.0)(decided by forgivingEquality)
The returned Constraint's areEqual method uses the implicitly passed Equivalence[A]'s
areEquivalent method to determine equality.
This method is overridden and made implicit by subtraits
TypeCheckedTripleEquals) and
overriden as non-implicit by the other subtraits in this package.
evidence that B is a subype of A
an A CanEqual B instance whose areEqual method delegates to the areEquivalent method of
the passed Equivalence[A].
Provides an A CanEqual B instance for any two types A and B, enforcing the type constraint that B is
implicitly convertible to A, given an explicit Equivalence[A].
Provides an A CanEqual B instance for any two types A and B, enforcing the type constraint that B is
implicitly convertible to A, given an explicit Equivalence[A].
This method is used to enable the Explicitly DSL for
ConversionCheckedTripleEquals by requiring an explicit Equivalance[A], but
taking an implicit function that converts from B to A. For example, under ConversionCheckedTripleEquals,
this method (as an implicit method), would be used to compile this statement:
def closeEnoughTo1(num: Double): Boolean = (num === 1.0)(decided by forgivingEquality)
The returned Constraint's areEqual method uses the implicitly passed Equivalence[A]'s
areEquivalent method to determine equality.
This method is overridden and made implicit by subtraits
ConversionCheckedTripleEquals) and
overriden as non-implicit by the other subtraits in this package.
an Equivalence[A] type class to which the Constraint.areEqual method will delegate to determine equality.
an A CanEqual B instance whose areEqual method delegates to the areEquivalent method of
the passed Equivalence[A].
Converts to an CheckingEqualizer that provides === and !== operators
that result in Boolean and enforce a type constraint.
Converts to an CheckingEqualizer that provides === and !== operators
that result in Boolean and enforce a type constraint.
This method is overridden and made implicit by subtraits TypeCheckedTripleEquals and
ConversionCheckedTripleEquals, and overriden as
non-implicit by the other subtraits in this package.
the object whose type to convert to CheckingEqualizer.
NullPointerException if left is null.
Converts to an Equalizer that provides === and !== operators that
result in Boolean and enforce no type constraint.
Converts to an Equalizer that provides === and !== operators that
result in Boolean and enforce no type constraint.
This method is overridden and made implicit by subtrait TripleEquals and overriden as non-implicit by the other
subtraits in this package.
the object whose type to convert to Equalizer.
NullPointerException if left is null.
Returns an Equality[A] for any type A that determines equality
by first calling .deep on any Array (on either the left or right side),
then comparing the resulting objects with ==.
Returns an Equality[A] for any type A that determines equality
by first calling .deep on any Array (on either the left or right side),
then comparing the resulting objects with ==.
a default Equality for type A
Provides an A CanEqual B instance for any two types A and B, enforcing the type constraint that A is
implicitly convertible to B, given an implicit Equivalence[B].
Provides an A CanEqual B instance for any two types A and B, enforcing the type constraint that A is
implicitly convertible to B, given an implicit Equivalence[B].
The returned Constraint's areEqual method uses the implicitly passed Equivalence[B]'s
areEquivalent method to determine equality.
This method is overridden and made implicit by subtraits
LowPriorityConversionCheckedConstraint (extended by
ConversionCheckedTripleEquals), and
overriden as non-implicit by the other subtraits in this package.
an implicit conversion from A to B
an A CanEqual B instance whose areEqual method delegates to the areEquivalent method of
the passed Equivalence[B].
Provides an A CanEqual B for any two types A and B, enforcing the type constraint
that A must be a subtype of B, given an implicit Equivalence[B].
Provides an A CanEqual B for any two types A and B, enforcing the type constraint
that A must be a subtype of B, given an implicit Equivalence[B].
The returned Constraint's areEqual method uses the implicitly passed Equivalence[A]'s
areEquivalent method to determine equality.
This method is overridden and made implicit by subtraits
LowPriorityTypeCheckedConstraint (extended by
TypeCheckedTripleEquals), and
overriden as non-implicit by the other subtraits in this package.
an Equivalence[B] type class to which the Constraint.areEqual method
will delegate to determine equality.
evidence that A is a subype of B
an A CanEqual B instance whose areEqual method delegates to the
areEquivalent method of the passed Equivalence[B].
Provides an A CanEqual B instance for any two types A and B, enforcing the type constraint
that B must be a subtype of A, given an implicit Equivalence[A].
Provides an A CanEqual B instance for any two types A and B, enforcing the type constraint
that B must be a subtype of A, given an implicit Equivalence[A].
The returned Constraint's areEqual method uses the implicitly passed Equivalence[A]'s
areEquivalent method to determine equality.
This method is overridden and made implicit by subtraits
TypeCheckedTripleEquals) and
overriden as non-implicit by the other subtraits in this package.
evidence that B is a subype of A
an A CanEqual B instance whose areEqual method delegates to the areEquivalent method of
the passed Equivalence[A].
Provides an A CanEqual B instance for any two types A and B, with no type constraint enforced, given an
implicit Equality[A].
Provides an A CanEqual B instance for any two types A and B, with no type constraint enforced, given an
implicit Equality[A].
The returned Constraint's areEqual method uses the implicitly passed Equality[A]'s
areEqual method to determine equality.
This method is overridden and made implicit by subtraits TripleEquals and
overriden as non-implicit by the other subtraits in this package.
an Equality[A] type class to which the Constraint.areEqual method will delegate to determine equality.
an A CanEqual B instance whose areEqual method delegates to the areEqual method of
the passed Equality[A].
Trait
ConversionCheckedTripleEqualshas been deprecated and will be removed in a future version of Scalactic. Please useTypeCheckedTripleEqualswith a type annotation instead.Trait
ConversionCheckedTripleEqualshas been deprecated because code that uses it can break if you change the equality policy toTripleEquals. For example, becauseJavaConversionsprovides an implicit conversion betweenjava.util.Setandscala.collection.mutable.Set, an equality comparison underConversionCheckedTripleEqualscan yieldtrue:If code written under
ConversionCheckedTripleEqualsis left unchanged, but the policy is changed toTripleEquals, the equality comparison will now yieldfalse:The above change from
truetofalsehappens without any warning or complaint from the compiler. Thus it is quite error prone. A better way to achieve equality comparisons after an implicit conversion is to do soexplicitly, by forcing the implicit conversion via a type annotation (following an expression with a colon and the desired type). Here's an example:To get rid of the deprecation warning, you can use
TypeCheckedTripleEqualsinstead ofConversionCheckedTripleEquals, and add explicit type annotations where needed:scala> import TypeCheckedTripleEquals._ import TypeCheckedTripleEquals._ scala> mutable.Set.empty[String] === new java.util.HashSet[String] <console>:27: error: types scala.collection.mutable.Set[String] and java.util.HashSet[String] do not adhere to the type constraint selected for the === and !== operators; the missing implicit parameter is of type org.scalactic.CanEqual[scala.collection.mutable.Set[String],java.util.HashSet[String]] mutable.Set.empty[String] === (new java.util.HashSet[String]) ^ scala> mutable.Set.empty[String] === (new java.util.HashSet[String]: mutable.Set[String]) res4: Boolean = trueConversionCheckedTripleEquals has been deprecated and will be removed in a future version of Scalactic. Please use TypeCheckedTripleEquals with a type annotation instead