trait TestConsole extends Restorable
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 print
and printLine
using the TestConsole
will write
the string to the output buffer and all calls to readLine
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 readLine
, output
to get the
content of the output buffer from calls to print
and printLine
, 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 <- readLine _ <- printLine("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")
- Alphabetic
- By Inheritance
- TestConsole
- Restorable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def clearInput(implicit trace: ZTraceElement): UIO[Unit]
- abstract def clearOutput(implicit trace: ZTraceElement): UIO[Unit]
- abstract def debug[R, E, A](zio: ZIO[R, E, A])(implicit trace: ZTraceElement): ZIO[R, E, A]
- abstract def feedLines(lines: String*)(implicit trace: ZTraceElement): UIO[Unit]
- abstract def output(implicit trace: ZTraceElement): UIO[Vector[String]]
- abstract def outputErr(implicit trace: ZTraceElement): UIO[Vector[String]]
- abstract def save(implicit trace: ZTraceElement): UIO[UIO[Unit]]
- Definition Classes
- Restorable
- abstract def silent[R, E, A](zio: ZIO[R, E, A])(implicit trace: ZTraceElement): ZIO[R, E, A]
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()