Object

zio.test.environment

TestConsole

Related Doc: package environment

Permalink

object TestConsole extends Serializable

TestConsole provides a testable interface for programs interacting with the console by modeling input and output as reading from and writing to input and output buffers maintained by TestConsole and backed by a Ref.

All calls to putStr and putStrLn using the TestConsole will write the string to the output buffer and all calls to getStrLn will take a string from the input buffer. To facilitate debugging, by default output will also be rendered to standard output. You can enable or disable this for a scope using debug, silent, or the corresponding test aspects.

TestConsole has several methods to access and manipulate the content of these buffers including feedLines to feed strings to the input buffer that will then be returned by calls to getStrLn, output to get the content of the output buffer from calls to putStr and putStrLn, and clearInput and clearOutput to clear the respective buffers.

Together, these functions make it easy to test programs interacting with the console.

import zio.console._
import zio.test.environment.TestConsole
import zio.ZIO

val sayHello = for {
  name <- getStrLn
  _    <- putStrLn("Hello, " + name + "!")
} yield ()

for {
  _ <- TestConsole.feedLines("John", "Jane", "Sally")
  _ <- ZIO.collectAll(List.fill(3)(sayHello))
  result <- TestConsole.output
} yield result == Vector("Hello, John!\n", "Hello, Jane!\n", "Hello, Sally!\n")
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. TestConsole
  2. Serializable
  3. Serializable
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. final case class Data(input: List[String] = List.empty, output: Vector[String] = Vector.empty) extends Product with Serializable

    Permalink

    The state of the TestConsole.

  2. trait Service extends Restorable

    Permalink
  3. case class Test(consoleState: Ref[Data], live: Live.Service, debugState: FiberRef[Boolean]) extends console.Console.Service with Service with Product with Serializable

    Permalink

Value Members

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

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

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

    Permalink
    Definition Classes
    AnyRef → Any
  4. val any: ZLayer[Console with TestConsole, Nothing, Console with TestConsole]

    Permalink
  5. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  6. val clearInput: ZIO[TestConsole, Nothing, Unit]

    Permalink

    Accesses a TestConsole instance in the environment and clears the input buffer.

  7. val clearOutput: ZIO[TestConsole, Nothing, Unit]

    Permalink

    Accesses a TestConsole instance in the environment and clears the output buffer.

  8. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  9. def debug[R <: TestConsole, E, A](zio: ZIO[R, E, A]): ZIO[R, E, A]

    Permalink

    Accesses a TestConsole instance in the environment and runs the specified effect with the TestConsole set to debug mode, so that console output is rendered to standard output in addition to being written to the output buffer.

  10. val debug: ZLayer[Live, Nothing, Console with TestConsole]

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

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

    Permalink
    Definition Classes
    AnyRef → Any
  13. def feedLines(lines: String*): ZIO[TestConsole, Nothing, Unit]

    Permalink

    Accesses a TestConsole instance in the environment and writes the specified sequence of strings to the input buffer.

  14. def finalize(): Unit

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

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

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

    Permalink
    Definition Classes
    Any
  18. def make(data: Data, debug: Boolean = true): ZLayer[Live, Nothing, Console with TestConsole]

    Permalink

    Constructs a new Test object that implements the TestConsole interface.

    Constructs a new Test object that implements the TestConsole interface. This can be useful for mixing in with implementations of other interfaces.

  19. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  20. final def notify(): Unit

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

    Permalink
    Definition Classes
    AnyRef
  22. val output: ZIO[TestConsole, Nothing, Vector[String]]

    Permalink

    Accesses a TestConsole instance in the environment and returns the contents of the output buffer.

  23. val save: ZIO[TestConsole, Nothing, UIO[Unit]]

    Permalink

    Accesses a TestConsole instance in the environment and saves the console state in an effect which, when run, will restore the TestConsole to the saved state.

  24. def silent[R <: TestConsole, E, A](zio: ZIO[R, E, A]): ZIO[R, E, A]

    Permalink

    Accesses a TestConsole instance in the environment and runs the specified effect with the TestConsole set to silent mode, so that console output is only written to the output buffer and not rendered to standard output.

  25. val silent: ZLayer[Live, Nothing, Console with TestConsole]

    Permalink
  26. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  27. def toString(): String

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

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

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped