org.scalautils

Explicitly

trait Explicitly extends AnyRef

Provides ScalaTest's “explicitly DSL,” which facilitates the explicit specification of an Equality[T] or a Uniformity[T] where Equality[T] is taken implicitly.

The Explicitly DSL can be used with the === and !== operators of ScalaUtils as well as the should 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 in T's companion object). That implicit equality definition will then be picked up and used when that type is compared for equality with the equal, be, and contain 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 implicit Equality[String] in scope, you can force a comparison to use the default equality with this syntax:

// In production code:
if ((result === "hello")(decided by defaultEquality)) true else false

// In tests: result should equal ("hello") (decided by defaultEquality)

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 as trimmed and lowerCased that return Normalization[String] instances that normalize by trimming and lower-casing, respectively. If you bring those into scope by mixing in or importing the members of StringNormalizations, you could use the explicitly DSL like this:

// In production code:
if ((result === "hello")(after being lowerCased)) true else false

// In tests: result should equal ("hello") (after being lowerCased and trimmed)

If you prefer not to use English-like DSLs in your production code, you can alternatively not use the Explicitly trait and instead write:

// To explicitly specify an Equality instance, just specify it:
if ((result === "hello")(Equality.default)) true else false

// To base an Equality instance on a Uniformity, just // call toEquality on it: if ((result === "hello")(lowerCased.toEquality)) true else false

Source
Explicitly.scala
Linear Supertypes
AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Explicitly
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Type Members

  1. class DecidedByEquality[A] extends Equality[A]

    This class is part of the ScalaUtils “explicitly DSL”.

  2. class DecidedWord extends AnyRef

    This class is part of the ScalaUtils “explicitly DSL”.

  3. class DeterminedByEquivalence[T] extends Equivalence[T]

    This class is part of the ScalaUtils “explicitly DSL”.

  4. class DeterminedWord extends AnyRef

    This class is part of the ScalaUtils “explicitly DSL”.

  5. class TheAfterWord extends AnyRef

    This class is part of the ScalaUtils “explicitly DSL”.

Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. val after: TheAfterWord

    This field enables syntax such as the following:

    This field enables syntax such as the following:

    result should equal ("hello") (after being lowerCased)
                                   ^
    

  7. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  8. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  9. val decided: DecidedWord

    This field enables syntax such as the following:

    This field enables syntax such as the following:

    result should equal ("hello") (decided by defaultEquality)
                                   ^
    

  10. val determined: DeterminedWord

    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)
                                   ^
    

  11. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  12. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  13. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  14. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  15. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  16. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  17. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  18. final def notify(): Unit

    Definition Classes
    AnyRef
  19. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  20. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  21. def toString(): String

    Definition Classes
    AnyRef → Any
  22. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  23. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  24. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()

Inherited from AnyRef

Inherited from Any

Ungrouped