0 | module Control.RIO.Mock.Console
2 | import Control.RIO.Console
10 | constructor MkMockOut
11 | stdOut : IORef (SnocList String)
12 | errOut : IORef (SnocList String)
16 | mkMockOut : IO MockOut
17 | mkMockOut = [| MkMockOut (newIORef [<]) (newIORef [<]) |]
23 | consoleOut : MockOut -> ConsoleOut
26 | (\s => modifyIORef m.stdOut (:< s))
27 | (\s => modifyIORef m.errOut (:< s))
34 | constructor MkMockIn
35 | charIn : IORef (Stream Char)
36 | lineIn : IORef (Stream String)
40 | mkMockIn : Stream Char -> Stream String -> IO MockIn
41 | mkMockIn cs ss = [| MkMockIn (newIORef cs) (newIORef ss) |]
43 | getHead : IORef (Stream a) -> IO a
44 | getHead ref = readIORef ref >>= \(h :: t) => writeIORef ref t $> h
49 | console : MockIn -> ConsoleIn