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")
- Alphabetic
- By Inheritance
- TestConsole
- Serializable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
final
case class
Data(input: List[String] = List.empty, output: Vector[String] = Vector.empty, errOutput: Vector[String] = Vector.empty) extends Product with Serializable
The state of the
TestConsole. - trait Service extends Restorable
- case class Test(consoleState: Ref[Data], live: Live.Service, debugState: FiberRef[Boolean]) extends console.Console.Service with Service with Product with Serializable
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
- val any: ZLayer[Console with TestConsole, Nothing, Console with TestConsole]
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
val
clearInput: URIO[TestConsole, Unit]
Accesses a
TestConsoleinstance in the environment and clears the input buffer. -
val
clearOutput: URIO[TestConsole, Unit]
Accesses a
TestConsoleinstance in the environment and clears the output buffer. -
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
def
debug[R <: TestConsole, E, A](zio: ZIO[R, E, A]): ZIO[R, E, A]
Accesses a
TestConsoleinstance in the environment and runs the specified effect with theTestConsoleset to debug mode, so that console output is rendered to standard output in addition to being written to the output buffer. - val debug: ZLayer[Live, Nothing, Console with TestConsole]
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
feedLines(lines: String*): URIO[TestConsole, Unit]
Accesses a
TestConsoleinstance in the environment and writes the specified sequence of strings to the input buffer. -
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
make(data: Data, debug: Boolean = true): ZLayer[Live, Nothing, Console with TestConsole]
Constructs a new
Testobject that implements theTestConsoleinterface.Constructs a new
Testobject that implements theTestConsoleinterface. This can be useful for mixing in with implementations of other interfaces. -
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()
-
val
output: ZIO[TestConsole, Nothing, Vector[String]]
Accesses a
TestConsoleinstance in the environment and returns the contents of the output buffer. -
val
outputErr: ZIO[TestConsole, Nothing, Vector[String]]
Accesses a
TestConsoleinstance in the environment and returns the contents of the error buffer. -
val
save: ZIO[TestConsole, Nothing, UIO[Unit]]
Accesses a
TestConsoleinstance in the environment and saves the console state in an effect which, when run, will restore theTestConsoleto the saved state. -
def
silent[R <: TestConsole, E, A](zio: ZIO[R, E, A]): ZIO[R, E, A]
Accesses a
TestConsoleinstance in the environment and runs the specified effect with theTestConsoleset to silent mode, so that console output is only written to the output buffer and not rendered to standard output. - val silent: ZLayer[Live, Nothing, Console with TestConsole]
-
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( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()