public void Trace_AppliesLevelFilter()
        {
            try
            {
                var traceWriter = new ConsoleTraceWriter(TraceLevel.Info);
                using (var writer = new StringWriter())
                {
                    Console.SetOut(writer);

                    traceWriter.Verbose("Test Verbose");
                    traceWriter.Info("Test Info");
                    traceWriter.Warning("Test Warning");
                    traceWriter.Error("Test Error");

                    traceWriter.Flush();

                    string   output = writer.ToString();
                    string[] lines  = output.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

                    Assert.Equal(3, lines.Length);
                    Assert.Equal("Test Info", lines[0]);
                    Assert.Equal("Test Warning", lines[1]);
                    Assert.Equal("Test Error", lines[2]);
                    Assert.False(output.Contains("Trace Verbose"));
                }
            }
            finally
            {
                var standardOutput = new StreamWriter(Console.OpenStandardOutput());
                standardOutput.AutoFlush = true;
                Console.SetOut(standardOutput);
            }
        }
        public void Flush_FlushesInnerWriters()
        {
            _mockTextWriter.Setup(p => p.Flush());
            _mockTraceWriter.Setup(p => p.Flush());
            _mockTraceWriter2.Setup(p => p.Flush());

            _traceWriter.Flush();

            _mockTextWriter.VerifyAll();
            _mockTraceWriter.VerifyAll();
            _mockTraceWriter2.VerifyAll();
        }