public void AddShouldAddTraceListenerToListOfTraceListeners()
        {
            var stringWriter         = new StringWriter();
            var traceListenerManager = new TraceListenerManager(stringWriter, stringWriter);
            var traceListener        = new TraceListenerWrapper(stringWriter);
            var originalCount        = Trace.Listeners.Count;

            traceListenerManager.Add(traceListener);
            var newCount = Trace.Listeners.Count;

            Assert.AreEqual(originalCount + 1, newCount);
            Assert.IsTrue(Trace.Listeners.Contains(traceListener));
        }
        public void DisposeShouldCallDisposeOnCorrespondingTraceListener()
        {
            var stringWriter         = new StringWriter();
            var traceListenerManager = new TraceListenerManager(stringWriter, stringWriter);

            StringWriter writer        = new StringWriter(new StringBuilder("DummyTrace"));
            var          traceListener = new TraceListenerWrapper(writer);

            traceListenerManager.Add(traceListener);
            traceListenerManager.Dispose(traceListener);

            // Tring to write after closing textWriter should throw exception
            Action shouldThrowException = () => writer.WriteLine("Try to write something");

            ActionUtility.ActionShouldThrowExceptionOfType(shouldThrowException, typeof(ObjectDisposedException));
        }
        public void RemoveShouldRemoveTraceListenerFromListOfTraceListeners()
        {
            var stringWriter         = new StringWriter();
            var traceListenerManager = new TraceListenerManager(stringWriter, stringWriter);
            var traceListener        = new TraceListenerWrapper(stringWriter);
            var originalCount        = Trace.Listeners.Count;

            traceListenerManager.Add(traceListener);
            var countAfterAdding = Trace.Listeners.Count;

            traceListenerManager.Remove(traceListener);
            var countAfterRemoving = Trace.Listeners.Count;

            Assert.AreEqual(originalCount + 1, countAfterAdding);
            Assert.AreEqual(countAfterAdding - 1, countAfterRemoving);
            Assert.IsFalse(Trace.Listeners.Contains(traceListener));
        }