private static PreviousOutputHolder SetOutputCore(TextWriter output) { lock (_outputStack) { var holder = new PreviousOutputHolder(Console.Out); Console.SetOut(output); _outputStack.Push(holder); return(holder); } }
private static void RestoreOutputCore(PreviousOutputHolder output) { lock (_outputStack) { var popCount = _outputStack.TakeWhile(t => t != output).Count(); if (popCount < _outputStack.Count) { for (var i = 0; i < popCount; i++) { _outputStack.Pop(); } Code.AssertState(output == _outputStack.Peek(), "Bug"); Console.SetOut(_outputStack.Pop().Output); } } }
private static void RestoreOutputCore(PreviousOutputHolder output) { lock (_outputStack) { var popCount = _outputStack.TakeWhile(t => t != output).Count(); if (popCount < _outputStack.Count) { for (var i = 0; i < popCount; i++) { _outputStack.Pop(); } Code.BugIf(output != _outputStack.Peek(), "Capture output stack disbalanced."); System.Console.SetOut(_outputStack.Pop().Output); } } }