protected virtual void Dispose(bool disposing) { if (disposed) { return; } if (disposing) { SystemConsole.SetOut(originalOutput); stringWriter?.Dispose(); } disposed = true; }
static MDebug() { Directory.CreateDirectory(Path.GetDirectoryName(LogPath)); if (File.Exists(LogPath)) { if (File.Exists(OldLogPath)) { File.Delete(OldLogPath); //TODO Keep it? } File.Move(LogPath, OldLogPath); } LogWriter = new StreamWriter(LogPath); LogWriter.AutoFlush = true; SConsole.SetOut(new CustomTextWriter(SConsole.Out, LogWriter)); Application.logMessageReceived += LogCallback; }
public Stream Redirect(Action action) { var standardOut = SysConsole.Out; Stream result = null; //We want not to dispose writer because we need to keep the underling stream open var writer = new StreamWriter(new MemoryStream()); SysConsole.SetOut(writer); action?.Invoke(); writer.Flush(); result = writer.BaseStream; SysConsole.SetOut(standardOut); result.Position = 0; return(result); }
public void StandardIOComplies() { #region In, Out, Error // Assert. Assert.Same(Base.In, Facade.In); Assert.Same(Base.Out, Facade.Out); Assert.Same(Base.Error, Facade.Error); #endregion #region SetIn, SetOut, SetError // Base/Facade // Act. Base.SetIn(TestIn); Base.SetOut(TestOut); Base.SetError(TestError); // Assert. Assert.Same(Base.In, Facade.In); Assert.Same(Base.Out, Facade.Out); Assert.Same(Base.Error, Facade.Error); // Teardown. Base.SetIn(BaseIn); Base.SetOut(BaseOut); Base.SetError(BaseError); // Facade/Base // Act. Facade.SetIn(TestIn); Facade.SetOut(TestOut); Facade.SetError(TestError); // Assert. Assert.Same(Facade.In, Base.In); Assert.Same(Facade.Out, Base.Out); Assert.Same(Facade.Error, Base.Error); #endregion #region WriteLine, ReadLine, Clear // Base/Facade // Act. Base.WriteLine("Hello, world!"); // Assert. TestStream.Position = 0; Assert.Equal("Hello, world!", Facade.ReadLine()); // Act. Base.Clear(); // Assert. Assert.Equal(string.Empty, Facade.ReadLine()); // Facade/Base // Act. Facade.WriteLine("Hello, world!"); // Assert. TestStream.Position = 0; Assert.Equal("Hello, world!", Base.ReadLine()); // Act. Facade.Clear(); // Assert. Assert.Equal(string.Empty, Base.ReadLine()); #endregion #region Teardown // Act. Base.SetIn(BaseIn); Base.SetOut(BaseOut); Base.SetError(BaseError); // Assert. Assert.Same(BaseIn, Facade.In); Assert.Same(BaseOut, Facade.Out); Assert.Same(BaseError, Facade.Error); #endregion }
/// <summary> /// Creates a new instance of <see cref="ConsoleOutput"/>. /// </summary> public ConsoleOutput() { originalOutput = SystemConsole.Out; stringWriter = new StringWriter(); SystemConsole.SetOut(stringWriter); }