using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace Elsa.Testing.Shared; /// /// Captures lines of text. /// public class CapturingTextWriter : TextWriter { private readonly ICollection _lines = new List(); private IList _line = new List(); public IReadOnlyCollection Lines => _lines.ToList(); public override Encoding Encoding => Console.Out.Encoding; public override void Write(char value) { if (value == '\n') { FlushLine(); _line = new List(); return; } _line.Add(value); } protected override void Dispose(bool disposing) { if (_line.Count > 0) FlushLine(); base.Dispose(disposing); } private void FlushLine() { if (_line.Count > 0 && _line.Last() == '\r') _line.RemoveAt(_line.Count - 1); _lines.Add(new string(_line.ToArray())); } }