2 // TraceTest.cs - NUnit Test Cases for System.Diagnostics.Trace
4 // Jonathan Pryor (jonpryor@vt.edu)
9 // We want tracing enabled, so...
12 using NUnit.Framework;
15 using System.Diagnostics;
17 namespace MonoTests.System.Diagnostics {
19 public class TraceTest : TestCase {
21 private StringWriter buffer;
22 private TraceListener listener;
25 : base ("System.Diagnostics.Trace testsuite")
29 public TraceTest (string name)
34 protected override void SetUp ()
36 // We don't want to deal with the default listener, which can send the
37 // output to various places (Debug stream, Console.Out, ...)
38 // Trace.Listeners.Remove ("Default");
40 buffer = new StringWriter ();
41 listener = new TextWriterTraceListener (buffer, "TestOutput");
42 Trace.Listeners.Clear ();
43 Trace.Listeners.Add (listener);
44 Trace.AutoFlush = true;
48 protected override void TearDown ()
50 // Trace.Listeners.Add (new DefaultTraceListener ());
51 Trace.Listeners.Remove (listener);
54 public static ITest Suite {
56 return new TestSuite (typeof (TraceTest));
60 // Make sure that when we get the output we expect....
61 public void TestTracing ()
64 "Entering Main" + Environment.NewLine +
65 "Exiting Main" + Environment.NewLine;
67 Trace.WriteLine ("Entering Main");
68 Trace.WriteLine ("Exiting Main");
70 AssertEquals ("#Tr01", value, buffer.ToString ());
73 // Make sure we get the output we expect in the presence of indenting...
74 public void TestIndent ()
77 "List of errors:" + Environment.NewLine +
78 " Error 1: File not found" + Environment.NewLine +
79 " Error 2: Directory not found" + Environment.NewLine +
80 "End of list of errors" + Environment.NewLine;
82 Trace.WriteLine ("List of errors:");
84 Trace.WriteLine ("Error 1: File not found");
85 Trace.WriteLine ("Error 2: Directory not found");
87 Trace.WriteLine ("End of list of errors");
89 AssertEquals ("#In01", value, buffer.ToString());
92 // Make sure that TraceListener properties (IndentLevel, IndentSize) are
93 // modified when the corresponding Trace properties are changed.
94 public void TestAddedTraceListenerProperties ()
96 TraceListener t1 = new TextWriterTraceListener (Console.Out);
97 TraceListener t2 = new TextWriterTraceListener (Console.Error);
98 Trace.Listeners.Add(t1);
99 Trace.Listeners.Add(t2);
101 const int ExpectedSize = 5;
102 const int ExpectedLevel = 2;
104 Trace.IndentSize = ExpectedSize;
105 Trace.IndentLevel = ExpectedLevel;
107 foreach (TraceListener t in Trace.Listeners) {
108 string ids = "#TATLP-S-" + t.Name;
109 string idl = "#TATLP-L-" + t.Name;
110 AssertEquals (ids, ExpectedSize, t.IndentSize);
111 AssertEquals (idl, ExpectedLevel, t.IndentLevel);
114 Trace.Listeners.Remove(t1);
115 Trace.Listeners.Remove(t2);
118 // Make sure that the TraceListener properties (IndentLevel, IndentSize)
119 // are properly modified when the TraceListener is added to the
121 public void TestListeners_Add_Values()
123 const int ExpectedLevel = 5;
124 const int ExpectedSize = 3;
125 Trace.IndentLevel = ExpectedLevel;
126 Trace.IndentSize = ExpectedSize;
127 TraceListener tl = new TextWriterTraceListener(Console.Out);
129 tl.IndentLevel = 2*ExpectedLevel;
130 tl.IndentSize = 2*ExpectedSize;
132 Trace.Listeners.Add(tl);
134 // Assert that the listener we added has been set to the correct indent
136 AssertEquals ("#LATL-L", ExpectedLevel, tl.IndentLevel);
137 AssertEquals ("#LATL-S", ExpectedSize, tl.IndentSize);
139 // Assert that all listeners in the collection have the same level.
140 foreach (TraceListener t in Trace.Listeners)
142 string idl = "#LATL-L:" + t.Name;
143 string ids = "#LATL-S:" + t.Name;
144 AssertEquals(idl, ExpectedLevel, t.IndentLevel);
145 AssertEquals(ids, ExpectedSize, t.IndentSize);
149 // IndentSize, IndentLevel are thread-static