TextCapture
The TextCapture class intercepts console output and writes it
to the current execution context, if one is present on the thread.
If no execution context is found, the output is written to a
default destination, normally the original destination of the
intercepted output.
using System.IO;
using System.Text;
namespace NUnit.Framework.Internal.Execution
{
public class TextCapture : TextWriter
{
private TextWriter _defaultWriter;
public override Encoding Encoding => _defaultWriter.Encoding;
public TextCapture(TextWriter defaultWriter)
{
_defaultWriter = defaultWriter;
}
public override void Write(char value)
{
TestExecutionContext currentContext = TestExecutionContext.CurrentContext;
if (currentContext != null && currentContext.CurrentResult != null)
currentContext.CurrentResult.OutWriter.Write(value);
else
_defaultWriter.Write(value);
}
public override void Write(string value)
{
TestExecutionContext currentContext = TestExecutionContext.CurrentContext;
if (currentContext != null && currentContext.CurrentResult != null)
currentContext.CurrentResult.OutWriter.Write(value);
else
_defaultWriter.Write(value);
}
public override void WriteLine(string value)
{
TestExecutionContext currentContext = TestExecutionContext.CurrentContext;
if (currentContext != null && currentContext.CurrentResult != null)
currentContext.CurrentResult.OutWriter.WriteLine(value);
else
_defaultWriter.WriteLine(value);
}
}
}