TestConsole

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")
class Object
trait Matchable
class Any

Type members

Classlikes

final case class Data(input: List[String], output: Vector[String], errOutput: Vector[String])

The state of the TestConsole.

The state of the TestConsole.

trait Service extends Restorable
case class Test(consoleState: Ref[Data], live: Service, debugState: FiberRef[Boolean]) extends Service with Service

Value members

Concrete methods

def debug[R <: TestConsole, E, A](zio: ZIO[R, E, A]): ZIO[R, E, A]

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.

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.

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

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

def make(data: Data, debug: Boolean): ZLayer[Live, Nothing, Console & TestConsole]

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

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

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

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.

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.

Concrete fields

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

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

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

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

val debug: ZLayer[Live, Nothing, Console & TestConsole]

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

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

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

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

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

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.

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.