Object

catslib

TraverseSection

Related Doc: package catslib

Permalink

object TraverseSection extends FlatSpec with Matchers with Section

In functional programming it is very common to encode "effects" as data types - common effects include Option for possibly missing values, Xor and Validated for possible errors, and Future for asynchronous computations.

These effects tend to show up in functions working on a single piece of data - for instance parsing a single String into an Int, validating a login, or asynchronously fetching website information for a user.

import cats.data.Xor
import scala.concurrent.Future

def parseInt(s: String): Option[Int] = ???

trait SecurityError
trait Credentials

def validateLogin(cred: Credentials): Xor[SecurityError, Unit] = ???

trait Profile
trait User

def userInfo(user: User): Future[Profile] = ???

Each function asks only for the data it actually needs; in the case of userInfo, a single User. We certainly could write one that takes a List[User] and fetch profile for all of them, would be a bit strange. If we just wanted to fetch the profile of just one user, we would either have to wrap it in a List or write a separate function that takes in a single user anyways. More fundamentally, functional programming is about building lots of small, independent pieces and composing them to make larger and larger pieces - does this hold true in this case?

Given just User => Future[Profile], what should we do if we want to fetch profiles for a List[User]? We could try familiar combinators like map.

def profilesFor(users: List[User]) = users.map(userInfo)

Note the return type List[Future[Profile]]. This makes sense given the type signatures, but seems unwieldy. We now have a list of asynchronous values, and to work with those values we must then use the combinators on Future for every single one. It would be nicer instead if we could get the aggregate result in a single Future, say a Future[List[Profile]].

As it turns out, the Future companion object has a traverse method on it. However, that method is specialized to standard library collections and Futures - there exists a much more generalized form that would allow us to parse a List[String] or validate credentials for a List[User].

Enter Traverse.

The type class

At center stage of Traverse is the traverse method.

trait Traverse[F[_]] {
def traverse[G[_] : Applicative, A, B](fa: F[A])(f: A => G[B]): G[F[B]]
}

In our above example, F is List, and G is Option, Xor, or Future. For the profile example, traverse says given a List[User] and a function User => Future[Profile], it can give you a Future[List[Profile]].

Abstracting away the G (still imagining F to be List), traverse says given a collection of data, and a function that takes a piece of data and returns an effectful value, it will traverse the collection, applying the function and aggregating the effectful values (in a List) as it goes.

In the most general form, F[_] is some sort of context which may contain a value (or several). While List tends to be among the most general cases, there also exist Traverse instances for Option, Xor, and Validated (among others).

Linear Supertypes
Section, Matchers, Explicitly, MatcherWords, Tolerance, FlatSpec, FlatSpecLike, Documenting, Alerting, Notifying, Informing, CanVerb, MustVerb, ShouldVerb, TestRegistration, Suite, Serializable, AbstractSuite, Assertions, TripleEquals, TripleEqualsSupport, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. TraverseSection
  2. Section
  3. Matchers
  4. Explicitly
  5. MatcherWords
  6. Tolerance
  7. FlatSpec
  8. FlatSpecLike
  9. Documenting
  10. Alerting
  11. Notifying
  12. Informing
  13. CanVerb
  14. MustVerb
  15. ShouldVerb
  16. TestRegistration
  17. Suite
  18. Serializable
  19. AbstractSuite
  20. Assertions
  21. TripleEquals
  22. TripleEqualsSupport
  23. AnyRef
  24. Any
  1. Hide All
  2. Show all
Visibility
  1. Public
  2. All

Type Members

  1. final class AWord extends AnyRef

    Permalink
    Definition Classes
    Matchers
  2. final class AnWord extends AnyRef

    Permalink
    Definition Classes
    Matchers
  3. sealed class AnyShouldWrapper[T] extends AnyRef

    Permalink
    Definition Classes
    Matchers
  4. class AssertionsHelper extends AnyRef

    Permalink
    Definition Classes
    Assertions
  5. final class BehaviorWord extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  6. class CheckingEqualizer[L] extends AnyRef

    Permalink
    Definition Classes
    TripleEqualsSupport
  7. class DecidedByEquality[A] extends Equality[A]

    Permalink
    Definition Classes
    Explicitly
  8. class DecidedWord extends AnyRef

    Permalink
    Definition Classes
    Explicitly
  9. class DeterminedByEquivalence[T] extends Equivalence[T]

    Permalink
    Definition Classes
    Explicitly
  10. class DeterminedWord extends AnyRef

    Permalink
    Definition Classes
    Explicitly
  11. class Equalizer[L] extends AnyRef

    Permalink
    Definition Classes
    TripleEqualsSupport
  12. final class HavePropertyMatcherGenerator extends AnyRef

    Permalink
    Definition Classes
    Matchers
  13. final class IgnoreVerbString extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  14. final class IgnoreVerbStringTaggedAs extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  15. final class IgnoreWord extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  16. final class InAndIgnoreMethods extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  17. final class InAndIgnoreMethodsAfterTaggedAs extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  18. final class ItVerbString extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  19. final class ItVerbStringTaggedAs extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  20. final class ItWord extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  21. final class KeyWord extends AnyRef

    Permalink
    Definition Classes
    Matchers
  22. class LegacyCheckingEqualizer[L] extends AnyRef

    Permalink
    Definition Classes
    TripleEqualsSupport
  23. class LegacyEqualizer[L] extends AnyRef

    Permalink
    Definition Classes
    TripleEqualsSupport
  24. trait NoArgTest extends () ⇒ Outcome with TestData

    Permalink
    Attributes
    protected
    Definition Classes
    Suite
  25. final class PlusOrMinusWrapper[T] extends AnyRef

    Permalink
    Definition Classes
    Tolerance
  26. final class RegexWord extends AnyRef

    Permalink
    Definition Classes
    Matchers
  27. final class RegexWrapper extends AnyRef

    Permalink
    Definition Classes
    Matchers
  28. class ResultOfBeWordForAny[T] extends AnyRef

    Permalink
    Definition Classes
    Matchers
  29. sealed class ResultOfBeWordForCollectedAny[T] extends AnyRef

    Permalink
    Definition Classes
    Matchers
  30. final class ResultOfBeWordForCollectedArray[T] extends ResultOfBeWordForCollectedAny[Array[T]]

    Permalink
    Definition Classes
    Matchers
  31. final class ResultOfCollectedAny[T] extends AnyRef

    Permalink
    Definition Classes
    Matchers
  32. final class ResultOfContainWordForCollectedAny[T] extends AnyRef

    Permalink
    Definition Classes
    Matchers
  33. final class ResultOfEndWithWordForCollectedString extends AnyRef

    Permalink
    Definition Classes
    Matchers
  34. final class ResultOfEndWithWordForString extends AnyRef

    Permalink
    Definition Classes
    Matchers
  35. final class ResultOfEvaluatingApplication extends AnyRef

    Permalink
    Definition Classes
    Matchers
  36. final class ResultOfFullyMatchWordForCollectedString extends AnyRef

    Permalink
    Definition Classes
    Matchers
  37. final class ResultOfFullyMatchWordForString extends AnyRef

    Permalink
    Definition Classes
    Matchers
  38. final class ResultOfHaveWordForCollectedExtent[A] extends AnyRef

    Permalink
    Definition Classes
    Matchers
  39. final class ResultOfHaveWordForExtent[A] extends AnyRef

    Permalink
    Definition Classes
    Matchers
  40. final class ResultOfIncludeWordForCollectedString extends AnyRef

    Permalink
    Definition Classes
    Matchers
  41. final class ResultOfIncludeWordForString extends AnyRef

    Permalink
    Definition Classes
    Matchers
  42. sealed class ResultOfNotWordForCollectedAny[T] extends AnyRef

    Permalink
    Definition Classes
    Matchers
  43. final class ResultOfProduceInvocation[T] extends AnyRef

    Permalink
    Definition Classes
    Matchers
  44. final class ResultOfStartWithWordForCollectedString extends AnyRef

    Permalink
    Definition Classes
    Matchers
  45. final class ResultOfStartWithWordForString extends AnyRef

    Permalink
    Definition Classes
    Matchers
  46. trait StringCanWrapperForVerb extends AnyRef

    Permalink
    Definition Classes
    CanVerb
  47. trait StringMustWrapperForVerb extends AnyRef

    Permalink
    Definition Classes
    MustVerb
  48. final class StringShouldWrapper extends AnyShouldWrapper[String] with org.scalatest.Matchers.StringShouldWrapperForVerb

    Permalink
    Definition Classes
    Matchers
  49. trait StringShouldWrapperForVerb extends AnyRef

    Permalink
    Definition Classes
    ShouldVerb
  50. class TheAfterWord extends AnyRef

    Permalink
    Definition Classes
    Explicitly
  51. final class TheSameInstanceAsPhrase extends AnyRef

    Permalink
    Definition Classes
    Matchers
  52. final class TheyVerbString extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  53. final class TheyVerbStringTaggedAs extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  54. final class TheyWord extends AnyRef

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  55. final class ValueWord extends AnyRef

    Permalink
    Definition Classes
    Matchers

Value Members

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

    Permalink
    Definition Classes
    AnyRef → Any
  2. def !==[T](right: Spread[T]): TripleEqualsInvocationOnSpread[T]

    Permalink
    Definition Classes
    TripleEqualsSupport
  3. def !==(right: Null): TripleEqualsInvocation[Null]

    Permalink
    Definition Classes
    TripleEqualsSupport
  4. def !==[T](right: T): TripleEqualsInvocation[T]

    Permalink
    Definition Classes
    TripleEqualsSupport
  5. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  6. def <[T](right: T)(implicit arg0: Ordering[T]): ResultOfLessThanComparison[T]

    Permalink
    Definition Classes
    Matchers
  7. def <=[T](right: T)(implicit arg0: Ordering[T]): ResultOfLessThanOrEqualToComparison[T]

    Permalink
    Definition Classes
    Matchers
  8. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  9. def ===[T](right: Spread[T]): TripleEqualsInvocationOnSpread[T]

    Permalink
    Definition Classes
    TripleEqualsSupport
  10. def ===(right: Null): TripleEqualsInvocation[Null]

    Permalink
    Definition Classes
    TripleEqualsSupport
  11. def ===[T](right: T): TripleEqualsInvocation[T]

    Permalink
    Definition Classes
    TripleEqualsSupport
  12. def >[T](right: T)(implicit arg0: Ordering[T]): ResultOfGreaterThanComparison[T]

    Permalink
    Definition Classes
    Matchers
  13. def >=[T](right: T)(implicit arg0: Ordering[T]): ResultOfGreaterThanOrEqualToComparison[T]

    Permalink
    Definition Classes
    Matchers
  14. def a[T](implicit arg0: Manifest[T]): ResultOfATypeInvocation[T]

    Permalink
    Definition Classes
    Matchers
  15. val a: AWord

    Permalink
    Definition Classes
    Matchers
  16. val after: TheAfterWord

    Permalink
    Definition Classes
    Explicitly
  17. def alert: Alerter

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike → Alerting
  18. def all(xs: String)(implicit collecting: Collecting[Char, String]): ResultOfCollectedAny[Char]

    Permalink
    Definition Classes
    Matchers
  19. def all[K, V, JMAP[k, v] <: Map[k, v]](xs: JMAP[K, V])(implicit collecting: Collecting[Entry[K, V], JMAP[K, V]]): ResultOfCollectedAny[Entry[K, V]]

    Permalink
    Definition Classes
    Matchers
  20. def all[E, C[_]](xs: C[E])(implicit collecting: Collecting[E, C[E]]): ResultOfCollectedAny[E]

    Permalink
    Definition Classes
    Matchers
  21. def allOf(firstEle: Any, secondEle: Any, remainingEles: Any*): ResultOfAllOfApplication

    Permalink
    Definition Classes
    Matchers
  22. def an[T](implicit arg0: Manifest[T]): ResultOfAnTypeInvocation[T]

    Permalink
    Definition Classes
    Matchers
  23. val an: AnWord

    Permalink
    Definition Classes
    Matchers
  24. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  25. macro def assert(condition: Boolean, clue: Any): Unit

    Permalink
    Definition Classes
    Assertions
  26. macro def assert(condition: Boolean): Unit

    Permalink
    Definition Classes
    Assertions
  27. macro def assertCompiles(code: String): Unit

    Permalink
    Definition Classes
    Assertions
  28. macro def assertDoesNotCompile(code: String): Unit

    Permalink
    Definition Classes
    Assertions
  29. def assertResult(expected: Any)(actual: Any): Unit

    Permalink
    Definition Classes
    Assertions
  30. def assertResult(expected: Any, clue: Any)(actual: Any): Unit

    Permalink
    Definition Classes
    Assertions
  31. macro def assertTypeError(code: String): Unit

    Permalink
    Definition Classes
    Assertions
  32. val assertionsHelper: AssertionsHelper

    Permalink
    Definition Classes
    Assertions
  33. macro def assume(condition: Boolean, clue: Any): Unit

    Permalink
    Definition Classes
    Assertions
  34. macro def assume(condition: Boolean): Unit

    Permalink
    Definition Classes
    Assertions
  35. def atLeast(num: Int, xs: String)(implicit collecting: Collecting[Char, String]): ResultOfCollectedAny[Char]

    Permalink
    Definition Classes
    Matchers
  36. def atLeast[K, V, JMAP[k, v] <: Map[k, v]](num: Int, xs: JMAP[K, V])(implicit collecting: Collecting[Entry[K, V], JMAP[K, V]]): ResultOfCollectedAny[Entry[K, V]]

    Permalink
    Definition Classes
    Matchers
  37. def atLeast[E, C[_]](num: Int, xs: C[E])(implicit collecting: Collecting[E, C[E]]): ResultOfCollectedAny[E]

    Permalink
    Definition Classes
    Matchers
  38. def atLeastOneOf(firstEle: Any, secondEle: Any, remainingEles: Any*): ResultOfAtLeastOneOfApplication

    Permalink
    Definition Classes
    Matchers
  39. def atMost(num: Int, xs: String)(implicit collecting: Collecting[Char, String]): ResultOfCollectedAny[Char]

    Permalink
    Definition Classes
    Matchers
  40. def atMost[K, V, JMAP[k, v] <: Map[k, v]](num: Int, xs: JMAP[K, V])(implicit collecting: Collecting[Entry[K, V], JMAP[K, V]]): ResultOfCollectedAny[Entry[K, V]]

    Permalink
    Definition Classes
    Matchers
  41. def atMost[E, C[_]](num: Int, xs: C[E])(implicit collecting: Collecting[E, C[E]]): ResultOfCollectedAny[E]

    Permalink
    Definition Classes
    Matchers
  42. def atMostOneOf(firstEle: Any, secondEle: Any, remainingEles: Any*): ResultOfAtMostOneOfApplication

    Permalink
    Definition Classes
    Matchers
  43. val be: BeWord

    Permalink
    Definition Classes
    MatcherWords
  44. val behave: BehaveWord

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  45. val behavior: BehaviorWord

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  46. def between(from: Int, upTo: Int, xs: String)(implicit collecting: Collecting[Char, String]): ResultOfCollectedAny[Char]

    Permalink
    Definition Classes
    Matchers
  47. def between[K, V, JMAP[k, v] <: Map[k, v]](from: Int, upTo: Int, xs: JMAP[K, V])(implicit collecting: Collecting[Entry[K, V], JMAP[K, V]]): ResultOfCollectedAny[Entry[K, V]]

    Permalink
    Definition Classes
    Matchers
  48. def between[E, C[_]](from: Int, upTo: Int, xs: C[E])(implicit collecting: Collecting[E, C[E]]): ResultOfCollectedAny[E]

    Permalink
    Definition Classes
    Matchers
  49. def cancel(cause: Throwable): Nothing

    Permalink
    Definition Classes
    Assertions
  50. def cancel(message: String, cause: Throwable): Nothing

    Permalink
    Definition Classes
    Assertions
  51. def cancel(message: String): Nothing

    Permalink
    Definition Classes
    Assertions
  52. def cancel(): Nothing

    Permalink
    Definition Classes
    Assertions
  53. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  54. val compile: CompileWord

    Permalink
    Definition Classes
    MatcherWords
  55. val contain: ContainWord

    Permalink
    Definition Classes
    MatcherWords
  56. def conversionCheckedConstraint[A, B](implicit equivalenceOfA: Equivalence[A], cnv: (B) ⇒ A): Constraint[A, B]

    Permalink
    Definition Classes
    TripleEquals → TripleEqualsSupport
  57. def convertEquivalenceToAToBConstraint[A, B](equivalenceOfB: Equivalence[B])(implicit ev: <:<[A, B]): Constraint[A, B]

    Permalink
    Definition Classes
    TripleEquals → TripleEqualsSupport
  58. def convertEquivalenceToAToBConversionConstraint[A, B](equivalenceOfB: Equivalence[B])(implicit ev: (A) ⇒ B): Constraint[A, B]

    Permalink
    Definition Classes
    TripleEquals → TripleEqualsSupport
  59. def convertEquivalenceToBToAConstraint[A, B](equivalenceOfA: Equivalence[A])(implicit ev: <:<[B, A]): Constraint[A, B]

    Permalink
    Definition Classes
    TripleEquals → TripleEqualsSupport
  60. def convertEquivalenceToBToAConversionConstraint[A, B](equivalenceOfA: Equivalence[A])(implicit ev: (B) ⇒ A): Constraint[A, B]

    Permalink
    Definition Classes
    TripleEquals → TripleEqualsSupport
  61. implicit def convertNumericToPlusOrMinusWrapper[T](pivot: T)(implicit arg0: Numeric[T]): PlusOrMinusWrapper[T]

    Permalink
    Definition Classes
    Tolerance
  62. implicit def convertSymbolToHavePropertyMatcherGenerator(symbol: Symbol): HavePropertyMatcherGenerator

    Permalink
    Definition Classes
    Matchers
  63. implicit def convertToAnyShouldWrapper[T](o: T): AnyShouldWrapper[T]

    Permalink
    Definition Classes
    Matchers
  64. def convertToCheckingEqualizer[T](left: T): CheckingEqualizer[T]

    Permalink
    Definition Classes
    TripleEquals → TripleEqualsSupport
  65. implicit def convertToEqualizer[T](left: T): Equalizer[T]

    Permalink
    Definition Classes
    TripleEquals → TripleEqualsSupport
  66. implicit def convertToInAndIgnoreMethods(resultOfStringPassedToVerb: ResultOfStringPassedToVerb): InAndIgnoreMethods

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  67. implicit def convertToInAndIgnoreMethodsAfterTaggedAs(resultOfTaggedAsInvocation: ResultOfTaggedAsInvocation): InAndIgnoreMethodsAfterTaggedAs

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  68. def convertToLegacyCheckingEqualizer[T](left: T): LegacyCheckingEqualizer[T]

    Permalink
    Definition Classes
    TripleEquals → TripleEqualsSupport
  69. def convertToLegacyEqualizer[T](left: T): LegacyEqualizer[T]

    Permalink
    Definition Classes
    TripleEquals → TripleEqualsSupport
  70. implicit def convertToRegexWrapper(o: Regex): RegexWrapper

    Permalink
    Definition Classes
    Matchers
  71. implicit def convertToStringCanWrapper(o: String): StringCanWrapperForVerb

    Permalink
    Definition Classes
    CanVerb
  72. implicit def convertToStringMustWrapper(o: String): StringMustWrapperForVerb

    Permalink
    Definition Classes
    MustVerb
  73. implicit def convertToStringShouldWrapper(o: String): StringShouldWrapper

    Permalink
    Definition Classes
    Matchers → ShouldVerb
  74. val decided: DecidedWord

    Permalink
    Definition Classes
    Explicitly
  75. def defaultEquality[A]: Equality[A]

    Permalink
    Definition Classes
    TripleEqualsSupport
  76. val defined: DefinedWord

    Permalink
    Definition Classes
    MatcherWords
  77. def definedAt[T](right: T): ResultOfDefinedAt[T]

    Permalink
    Definition Classes
    Matchers
  78. val determined: DeterminedWord

    Permalink
    Definition Classes
    Explicitly
  79. val empty: EmptyWord

    Permalink
    Definition Classes
    MatcherWords
  80. val endWith: EndWithWord

    Permalink
    Definition Classes
    MatcherWords
  81. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  82. def equal(o: Null): Matcher[AnyRef]

    Permalink
    Definition Classes
    Matchers
  83. def equal[T](spread: Spread[T]): Matcher[T]

    Permalink
    Definition Classes
    Matchers
  84. def equal(right: Any): MatcherFactory1[Any, Equality]

    Permalink
    Definition Classes
    MatcherWords
  85. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  86. def every(xs: String)(implicit collecting: Collecting[Char, String]): ResultOfCollectedAny[Char]

    Permalink
    Definition Classes
    Matchers
  87. def every[K, V, JMAP[k, v] <: Map[k, v]](xs: JMAP[K, V])(implicit collecting: Collecting[Entry[K, V], JMAP[K, V]]): ResultOfCollectedAny[Entry[K, V]]

    Permalink
    Definition Classes
    Matchers
  88. def every[E, C[_]](xs: C[E])(implicit collecting: Collecting[E, C[E]]): ResultOfCollectedAny[E]

    Permalink
    Definition Classes
    Matchers
  89. def exactly(num: Int, xs: String)(implicit collecting: Collecting[Char, String]): ResultOfCollectedAny[Char]

    Permalink
    Definition Classes
    Matchers
  90. def exactly[K, V, JMAP[k, v] <: Map[k, v]](num: Int, xs: JMAP[K, V])(implicit collecting: Collecting[Entry[K, V], JMAP[K, V]]): ResultOfCollectedAny[Entry[K, V]]

    Permalink
    Definition Classes
    Matchers
  91. def exactly[E, C[_]](num: Int, xs: C[E])(implicit collecting: Collecting[E, C[E]]): ResultOfCollectedAny[E]

    Permalink
    Definition Classes
    Matchers
  92. final def execute: Unit

    Permalink
    Definition Classes
    Suite
  93. final def execute(testName: String, configMap: ConfigMap, color: Boolean, durations: Boolean, shortstacks: Boolean, fullstacks: Boolean, stats: Boolean): Unit

    Permalink
    Definition Classes
    Suite
  94. val exist: ExistWord

    Permalink
    Definition Classes
    MatcherWords
  95. def expectedTestCount(filter: Filter): Int

    Permalink
    Definition Classes
    Suite → AbstractSuite
  96. def fail(cause: Throwable): Nothing

    Permalink
    Definition Classes
    Assertions
  97. def fail(message: String, cause: Throwable): Nothing

    Permalink
    Definition Classes
    Assertions
  98. def fail(message: String): Nothing

    Permalink
    Definition Classes
    Assertions
  99. def fail(): Nothing

    Permalink
    Definition Classes
    Assertions
  100. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  101. val fullyMatch: FullyMatchWord

    Permalink
    Definition Classes
    MatcherWords
  102. final def getClass(): Class[_]

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

    Permalink
    Definition Classes
    AnyRef → Any
  104. val have: HaveWord

    Permalink
    Definition Classes
    MatcherWords
  105. val ignore: IgnoreWord

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  106. def inOrder(firstEle: Any, secondEle: Any, remainingEles: Any*): ResultOfInOrderApplication

    Permalink
    Definition Classes
    Matchers
  107. def inOrderOnly[T](firstEle: Any, secondEle: Any, remainingEles: Any*): ResultOfInOrderOnlyApplication

    Permalink
    Definition Classes
    Matchers
  108. val include: IncludeWord

    Permalink
    Definition Classes
    MatcherWords
  109. def info: Informer

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike → Informing
  110. def intercept[T <: AnyRef](f: ⇒ Any)(implicit manifest: Manifest[T]): T

    Permalink
    Definition Classes
    Assertions
  111. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  112. val it: ItWord

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  113. val key: KeyWord

    Permalink
    Definition Classes
    Matchers
  114. val length: LengthWord

    Permalink
    Definition Classes
    MatcherWords
  115. def lowPriorityConversionCheckedConstraint[A, B](implicit equivalenceOfB: Equivalence[B], cnv: (A) ⇒ B): Constraint[A, B]

    Permalink
    Definition Classes
    TripleEquals → TripleEqualsSupport
  116. def lowPriorityTypeCheckedConstraint[A, B](implicit equivalenceOfB: Equivalence[B], ev: <:<[A, B]): Constraint[A, B]

    Permalink
    Definition Classes
    TripleEquals → TripleEqualsSupport
  117. def markup: Documenter

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike → Documenting
  118. val matchPattern: MatchPatternWord

    Permalink
    Definition Classes
    MatcherWords
  119. def message(expectedMessage: String): ResultOfMessageWordApplication

    Permalink
    Definition Classes
    Matchers
  120. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  121. def nestedSuites: IndexedSeq[Suite]

    Permalink
    Definition Classes
    Suite → AbstractSuite
  122. def no(xs: String)(implicit collecting: Collecting[Char, String]): ResultOfCollectedAny[Char]

    Permalink
    Definition Classes
    Matchers
  123. def no[K, V, JMAP[k, v] <: Map[k, v]](xs: JMAP[K, V])(implicit collecting: Collecting[Entry[K, V], JMAP[K, V]]): ResultOfCollectedAny[Entry[K, V]]

    Permalink
    Definition Classes
    Matchers
  124. def no[E, C[_]](xs: C[E])(implicit collecting: Collecting[E, C[E]]): ResultOfCollectedAny[E]

    Permalink
    Definition Classes
    Matchers
  125. val noException: NoExceptionWord

    Permalink
    Definition Classes
    MatcherWords
  126. def noneOf(firstEle: Any, secondEle: Any, remainingEles: Any*): ResultOfNoneOfApplication

    Permalink
    Definition Classes
    Matchers
  127. val not: NotWord

    Permalink
    Definition Classes
    MatcherWords
  128. def note: Notifier

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike → Notifying
  129. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  130. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  131. def of[T](implicit ev: Manifest[T]): ResultOfOfTypeInvocation[T]

    Permalink
    Definition Classes
    Matchers
  132. def oneOf(firstEle: Any, secondEle: Any, remainingEles: Any*): ResultOfOneOfApplication

    Permalink
    Definition Classes
    Matchers
  133. def only(xs: Any*): ResultOfOnlyApplication

    Permalink
    Definition Classes
    Matchers
  134. def pending: PendingNothing

    Permalink
    Definition Classes
    Suite
  135. def pendingUntilFixed(f: ⇒ Unit): Unit

    Permalink
    Definition Classes
    Suite
  136. def produce[T](implicit arg0: Manifest[T]): ResultOfProduceInvocation[T]

    Permalink
    Definition Classes
    Matchers
  137. val readable: ReadableWord

    Permalink
    Definition Classes
    MatcherWords
  138. val regex: RegexWord

    Permalink
    Definition Classes
    Matchers
  139. final def registerIgnoredTest(testText: String, testTags: Tag*)(testFun: ⇒ Unit): Unit

    Permalink
    Definition Classes
    FlatSpecLike → TestRegistration
  140. final def registerTest(testText: String, testTags: Tag*)(testFun: ⇒ Unit): Unit

    Permalink
    Definition Classes
    FlatSpecLike → TestRegistration
  141. def rerunner: Option[String]

    Permalink
    Definition Classes
    Suite → AbstractSuite
  142. def run(testName: Option[String], args: Args): Status

    Permalink
    Definition Classes
    FlatSpecLike → Suite → AbstractSuite
  143. final def run(testName: Option[String], reporter: Reporter, stopper: Stopper, filter: Filter, configMap: Map[String, Any], distributor: Option[Distributor], tracker: Tracker): Status

    Permalink
    Definition Classes
    AbstractSuite
  144. def runNestedSuites(args: Args): Status

    Permalink
    Attributes
    protected
    Definition Classes
    Suite → AbstractSuite
  145. def runTest(testName: String, args: Args): Status

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike → Suite → AbstractSuite
  146. def runTests(testName: Option[String], args: Args): Status

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike → Suite → AbstractSuite
  147. def sequencing(res0: Option[List[Int]], res1: Option[List[Int]]): Unit

    Permalink

    Notice that in the Xor case, should any string fail to parse the entire traversal is considered a failure.

    Notice that in the Xor case, should any string fail to parse the entire traversal is considered a failure. Moreover, once it hits its first bad parse, it will not attempt to parse any others down the line (similar behavior would be found with using Option as the effect). Contrast this with Validated where even if one bad parse is hit, it will continue trying to parse the others, accumulating any and all errors as it goes. The behavior of traversal is closely tied with the Applicative behavior of the data type.

    Going back to our Future example, we can write an Applicative instance for Future that runs each Future concurrently. Then when we traverse a List[A] with an A => Future[B], we can imagine the traversal as a scatter-gather. Each A creates a concurrent computation that will produce a B (the scatter), and as the Futures complete they will be gathered back into a List.

    Playing with Reader

    Another interesting effect we can use is Reader. Recall that a Reader[E, A] is a type alias for Kleisli[Id, E, A] which is a wrapper around E => A.

    If we fix E to be some sort of environment or configuration, we can use the Reader applicative in our traverse.

    import cats.data.Reader
    
    trait Context
    trait Topic
    trait Result
    
    type Job[A] = Reader[Context, A]
    
    def processTopic(topic: Topic): Job[Result] = ???

    We can imagine we have a data pipeline that processes a bunch of data, each piece of data being categorized by a topic. Given a specific topic, we produce a Job that processes that topic. (Note that since a Job is just a Reader/Kleisli, one could write many small Jobs and compose them together into one Job that is used/returned by processTopic.)

    Corresponding to our bunches of data are bunches of topics, a List[Topic] if you will. Since Reader has an Applicative instance, we can traverse over this list with processTopic.

    def processTopics(topics: List[Topic]) =
    topics.traverse(processTopic)

    Note the nice return type - Job[List[Result]]. We now have one aggregate Job that when run, will go through each topic and run the topic-specific job, collecting results as it goes. We say "when run" because a Job is some function that requires a Context before producing the value we want.

    One example of a "context" can be found in the Spark project. In Spark, information needed to run a Spark job (where the master node is, memory allocated, etc.) resides in a SparkContext. Going back to the above example, we can see how one may define topic-specific Spark jobs (type Job[A] = Reader[SparkContext, A]) and then run several Spark jobs on a collection of topics via traverse. We then get back a Job[List[Result]], which is equivalent to SparkContext => List[Result]. When finally passed a SparkContext, we can run the job and get our results back.

    Moreover, the fact that our aggregate job is not tied to any specific SparkContext allows us to pass in a SparkContext pointing to a production cluster, or (using the exact same job) pass in a test SparkContext that just runs locally across threads. This makes testing our large job nice and easy.

    Finally, this encoding ensures that all the jobs for each topic run on the exact same cluster. At no point do we manually pass in or thread a SparkContext through - that is taken care for us by the (applicative) effect of Reader and therefore by traverse.

    Sequencing

    Sometimes you may find yourself with a collection of data, each of which is already in an effect, for instance a List[Option[A]]. To make this easier to work with, you want a Option[List[A]]. Given Option has an Applicative instance, we can traverse over the list with the identity function.

  148. implicit val shorthandSharedTestRegistrationFunction: (String) ⇒ BehaveWord

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  149. implicit val shorthandTestRegistrationFunction: (String, String, String) ⇒ ResultOfStringPassedToVerb

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  150. val size: SizeWord

    Permalink
    Definition Classes
    MatcherWords
  151. val sorted: SortedWord

    Permalink
    Definition Classes
    MatcherWords
  152. val startWith: StartWithWord

    Permalink
    Definition Classes
    MatcherWords
  153. final val styleName: String

    Permalink
    Definition Classes
    FlatSpecLike → Suite → AbstractSuite
  154. def suiteId: String

    Permalink
    Definition Classes
    Suite
  155. def suiteName: String

    Permalink
    Definition Classes
    Suite
  156. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  157. def tags: Map[String, Set[String]]

    Permalink
    Definition Classes
    FlatSpecLike → Suite → AbstractSuite
  158. def testDataFor(testName: String, theConfigMap: ConfigMap): TestData

    Permalink
    Definition Classes
    FlatSpecLike → Suite
  159. def testNames: Set[String]

    Permalink
    Definition Classes
    FlatSpecLike → Suite → AbstractSuite
  160. def the[T](implicit arg0: Manifest[T]): ResultOfTheTypeInvocation[T]

    Permalink
    Definition Classes
    Matchers
  161. def theSameElementsAs(xs: GenTraversable[_]): ResultOfTheSameElementsAsApplication

    Permalink
    Definition Classes
    Matchers
  162. def theSameElementsInOrderAs(xs: GenTraversable[_]): ResultOfTheSameElementsInOrderAsApplication

    Permalink
    Definition Classes
    Matchers
  163. val theSameInstanceAs: TheSameInstanceAsPhrase

    Permalink
    Definition Classes
    Matchers
  164. val they: TheyWord

    Permalink
    Attributes
    protected
    Definition Classes
    FlatSpecLike
  165. def thrownBy(fun: ⇒ Any): ResultOfThrownByApplication

    Permalink
    Definition Classes
    Matchers
  166. def toString(): String

    Permalink
    Definition Classes
    FlatSpec → AnyRef → Any
  167. def trap[T](f: ⇒ T): Throwable

    Permalink
    Definition Classes
    Assertions
  168. def traverseuFunction(res0: List[Int], res1: Boolean): Unit

    Permalink

    The type signature of Traverse appears highly abstract, and indeed it is - what traverse does as it walks the F[A] depends on the effect of the function.

    Choose your effect

    The type signature of Traverse appears highly abstract, and indeed it is - what traverse does as it walks the F[A] depends on the effect of the function. Let's see some examples where F is taken to be List.

    Note in the following code snippet we are using traverseU instead of traverse. traverseU is for all intents and purposes the same as traverse, but with some type-level trickery to allow it to infer the Applicative[Xor[A, ?]] and Applicative[Validated[A, ?]] instances - scalac has issues inferring the instances for data types that do not trivially satisfy the F[_] shape required by Applicative.

    import cats.Semigroup
    import cats.data.{NonEmptyList, OneAnd, Validated, ValidatedNel, Xor}
    import cats.std.list._
    import cats.syntax.traverse._
    
    def parseIntXor(s: String): Xor[NumberFormatException, Int] =
    Xor.catchOnly[NumberFormatException](s.toInt)
    
    def parseIntValidated(s: String): ValidatedNel[NumberFormatException, Int] =
    Validated.catchOnly[NumberFormatException](s.toInt).toValidatedNel

    We can now traverse structures that contain strings parsing them into integers and accumulating failures with Xor.

  169. def traverseuValidated(res0: Boolean): Unit

    Permalink

    We need proof that NonEmptyList[A] is a Semigroup for there to be an Applicative instance for ValidatedNel.

    We need proof that NonEmptyList[A] is a Semigroup for there to be an Applicative instance for ValidatedNel.

    implicit def nelSemigroup[A]: Semigroup[NonEmptyList[A]] =
      OneAnd.oneAndSemigroupK[List].algebra[A]

    Now that we've provided such evidence, we can use ValidatedNel as an applicative.

  170. def traversingForEffects(res0: Option[Unit], res1: Option[Unit]): Unit

    Permalink

    Traverse provides a convenience method sequence that does exactly this.

    Traverse provides a convenience method sequence that does exactly this.

    List(Option(1), Option(2), Option(3)).sequence
    List(Option(1), None, Option(3)).sequence

    Traversing for effect

    Sometimes our effectful functions return a Unit value in cases where there is no interesting value to return (e.g. writing to some sort of store).

    trait Data
    def writeToStore(data: Data): Future[Unit] = ???

    If we traverse using this, we end up with a funny type.

    import cats.std.future._
    import scala.concurrent.ExecutionContext.Implicits.global
    
    def writeManyToStore(data: List[Data]) =
    data.traverse(writeToStore)

    We end up with a Future[List[Unit]]! A List[Unit] is not of any use to us, and communicates the same amount of information as a single Unit does.

    Traversing solely for the sake of the effect (ignoring any values that may be produced, Unit or otherwise) is common, so Foldable (superclass of Traverse) provides traverse_ and sequence_ methods that do the same thing as traverse and sequence but ignores any value produced along the way, returning Unit at the end.

  171. val typeCheck: TypeCheckWord

    Permalink
    Definition Classes
    MatcherWords
  172. def typeCheckedConstraint[A, B](implicit equivalenceOfA: Equivalence[A], ev: <:<[B, A]): Constraint[A, B]

    Permalink
    Definition Classes
    TripleEquals → TripleEqualsSupport
  173. implicit def unconstrainedEquality[A, B](implicit equalityOfA: Equality[A]): Constraint[A, B]

    Permalink
    Definition Classes
    TripleEquals → TripleEqualsSupport
  174. val value: ValueWord

    Permalink
    Definition Classes
    Matchers
  175. final def wait(): Unit

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

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  178. def withClue[T](clue: Any)(fun: ⇒ T): T

    Permalink
    Definition Classes
    Assertions
  179. def withFixture(test: NoArgTest): Outcome

    Permalink
    Attributes
    protected
    Definition Classes
    Suite → AbstractSuite
  180. val writable: WritableWord

    Permalink
    Definition Classes
    MatcherWords

Deprecated Value Members

  1. def assert(o: Option[String]): Unit

    Permalink
    Definition Classes
    Assertions
    Annotations
    @deprecated
    Deprecated

    This method has been deprecated in favor of macro assertion and will be removed in a future version of ScalaTest. If you need this, please copy the source code into your own trait instead.

  2. def assert(o: Option[String], clue: Any): Unit

    Permalink
    Definition Classes
    Assertions
    Annotations
    @deprecated
    Deprecated

    This method has been deprecated in favor of macro assertion and will be removed in a future version of ScalaTest. If you need this, please copy the source code into your own trait instead.

  3. def assume(o: Option[String]): Unit

    Permalink
    Definition Classes
    Assertions
    Annotations
    @deprecated
    Deprecated

    This method has been deprecated in favor of macro assumption and will be removed in a future version of ScalaTest. If you need this, please copy the source code into your own trait instead.

  4. def assume(o: Option[String], clue: Any): Unit

    Permalink
    Definition Classes
    Assertions
    Annotations
    @deprecated
    Deprecated

    This method has been deprecated in favor of macro assumption and will be removed in a future version of ScalaTest. If you need this, please copy the source code into your own trait instead.

  5. def evaluating(fun: ⇒ Any): ResultOfEvaluatingApplication

    Permalink
    Definition Classes
    Matchers
    Annotations
    @deprecated
    Deprecated

    Please use 'an [Exception] should be thrownBy { ... }' syntax instead

  6. def expect(expected: Any)(actual: Any): Unit

    Permalink
    Definition Classes
    Assertions
    Annotations
    @deprecated
    Deprecated

    This expect method has been deprecated. Please replace all invocations of expect with an identical invocation of assertResult instead.

  7. def expect(expected: Any, clue: Any)(actual: Any): Unit

    Permalink
    Definition Classes
    Assertions
    Annotations
    @deprecated
    Deprecated

    This expect method has been deprecated. Please replace all invocations of expect with an identical invocation of assertResult instead.

  8. def expectResult(expected: Any)(actual: Any): Unit

    Permalink
    Definition Classes
    Assertions
    Annotations
    @deprecated
    Deprecated

    This expectResult method has been deprecated. Please replace all invocations of expectResult with an identical invocation of assertResult instead.

  9. def expectResult(expected: Any, clue: Any)(actual: Any): Unit

    Permalink
    Definition Classes
    Assertions
    Annotations
    @deprecated
    Deprecated

    This expectResult method has been deprecated. Please replace all invocations of expectResult with an identical invocation of assertResult instead.

Inherited from Section

Inherited from Matchers

Inherited from Explicitly

Inherited from MatcherWords

Inherited from Tolerance

Inherited from FlatSpec

Inherited from FlatSpecLike

Inherited from Documenting

Inherited from Alerting

Inherited from Notifying

Inherited from Informing

Inherited from CanVerb

Inherited from MustVerb

Inherited from ShouldVerb

Inherited from TestRegistration

Inherited from Suite

Inherited from Serializable

Inherited from AbstractSuite

Inherited from Assertions

Inherited from TripleEquals

Inherited from TripleEqualsSupport

Inherited from AnyRef

Inherited from Any

Ungrouped