Trait ConversionCheckedTripleEquals has been deprecated and will be removed in a future version of Scalactic. Please use TypeCheckedTripleEquals with a type annotation instead.
Trait ConversionCheckedTripleEquals has been deprecated because code that uses it can break if you
change the equality policy to TripleEquals. For example, because JavaConversions provides
an implicit conversion between java.util.Set and scala.collection.mutable.Set,
an equality comparison under ConversionCheckedTripleEquals can yield true:
scala> import collection.JavaConversions._ import collection.JavaConversions._ scala> import collection.mutable import collection.mutable scala> import ConversionCheckedTripleEquals._ import ConversionCheckedTripleEquals._ scala> mutable.Set.empty[String] === new java.util.HashSet[String] res0: Boolean = true
If code written under ConversionCheckedTripleEquals is left unchanged, but the policy
is changed to TripleEquals, the equality comparison will now yield false:
scala> import TripleEquals._ import TripleEquals._ scala> mutable.Set.empty[String] === (new java.util.HashSet[String]) res1: Boolean = false
The above change from true to false happens 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 so explicitly, by forcing
the implicit conversion via a type annotation (following an expression with a colon and
the desired type). Here's an example:
scala> mutable.Set.empty[String] === (new java.util.HashSet[String]: mutable.Set[String]) res3: Boolean = true
To get rid of the deprecation warning, you can use TypeCheckedTripleEquals instead of
ConversionCheckedTripleEquals, 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 = true
ConversionCheckedTripleEquals has been deprecated and will be removed in a future version of Scalactic. Please use TypeCheckedTripleEquals with a type annotation instead
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].