This class is part of the ScalaUtils “explicitly DSL”.”“
This class is part of the ScalaUtils “explicitly DSL”.”“
This class is part of the ScalaUtils “explicitly DSL”.”“
This class is part of the ScalaUtils “explicitly DSL”.”“
This class is part of the ScalaUtils “explicitly DSL”.”“
This field enables syntax such as the following:
This field enables syntax such as the following:
result should equal ("hello") (after being lowerCased)
^
This field enables syntax such as the following:
This field enables syntax such as the following:
result should equal ("hello") (decided by defaultEquality)
^
This field enables syntax such as the following, given an
Equivalence[String]
named myStringEquivalence
:
This field enables syntax such as the following, given an
Equivalence[String]
named myStringEquivalence
:
result should equal ("hello") (determined by myStringEquivalence)
^
Provides ScalaTest's “explicitly DSL,” which facilitates the explicit specification of an
Equality[T]
or aUniformity[T]
whereEquality[T]
is taken implicitly.The Explicitly DSL can be used with the
===
and!==
operators of ScalaUtils as well as theshould
equal
,be
,contain
, and===
syntax of ScalaTest matchers.If you want to customize equality for a type in general, you would likely want to place an implicit
Equality[T]
for that type in scope (or inT
's companion object). That implicit equality definition will then be picked up and used when that type is compared for equality with theequal
,be
, andcontain
matchers in ScalaTest tests and with===
in both tests and production code. If you just want to use a custom equality for a single comparison, however, you may prefer to pass it explicitly. For example, if you have an implicitEquality[String]
in scope, you can force a comparison to use the default equality with this syntax:The explicitly DSL also provides support for specifying a one-off equality that is based on a normalization. For example, ScalaUtils offers a
StringNormalizations
trait that provides methods such astrimmed
andlowerCased
that returnNormalization[String]
instances that normalize by trimming and lower-casing, respectively. If you bring those into scope by mixing in or importing the members ofStringNormalizations
, you could use the explicitly DSL like this:If you prefer not to use English-like DSLs in your production code, you can alternatively not use the
Explicitly
trait and instead write: