static (int, string, string) Run(Func <int> fn, TextReader stdIn) { using (Swap.ConsoleIn(stdIn)) using (var stdOutWriter = new StringWriter()) using (Swap.ConsoleOut(stdOutWriter)) using (var stdErrorWriter = new StringWriter()) using (Swap.ConsoleError(stdErrorWriter)) { int exitCode = fn(); string stdOut = stdOutWriter.ToString(); string stdError = stdErrorWriter.ToString(); return(exitCode, stdOut, stdError); } }
public static IDisposable ConsoleIn() => Swap.ConsoleIn(TextReader.Null);