public void Flush_FlushesInternalWriters()
        {
            var traceWriter = new TestTraceWriter(TraceLevel.Error);
            var compositeWriter = new CompositeTraceWriter(new[] { traceWriter });

            string message = "Test trace";
            compositeWriter.Error(message);
            compositeWriter.Flush();

            Assert.True(traceWriter.Flushed);
        }
        public void Trace_CallsInnerWriterTrace()
        {
            var traceWriter = new TestTraceWriter(TraceLevel.Verbose);
            var compositeWriter = new CompositeTraceWriter(new[] { traceWriter });

            string message = "Test trace";
            compositeWriter.Verbose(message);

            TraceEvent trace = traceWriter.Traces.FirstOrDefault();

            Assert.NotNull(trace);
            Assert.Equal(TraceLevel.Verbose, trace.Level);
            Assert.Equal(message, trace.Message);
        }
        public void Trace_RespectsInnerWriterLevel()
        {
            var traceWriter = new TestTraceWriter(TraceLevel.Error);
            var compositeWriter = new CompositeTraceWriter(new[] { traceWriter });

            string message = "Test trace";
            compositeWriter.Verbose(message);
            compositeWriter.Error(message);

            Assert.Equal(1, traceWriter.Traces.Count);

            TraceEvent trace = traceWriter.Traces.First();

            Assert.Equal(TraceLevel.Error, trace.Level);
            Assert.Equal(message, trace.Message);
        }
        private object[] ProcessInputParameters(object[] parameters)
        {
            for (int i = 0; i < parameters.Length; i++)
            {
                TraceWriter writer = parameters[i] as TraceWriter;
                if (writer != null)
                {
                    parameters[i] = new CompositeTraceWriter(new[] { writer, TraceWriter });
                }
            }

            return parameters;
        }