TraceTest.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. //
  2. // TraceTest.cs - NUnit Test Cases for System.Diagnostics.Trace
  3. //
  4. // Jonathan Pryor ([email protected])
  5. //
  6. // (C) Jonathan Pryor
  7. //
  8. // We want tracing enabled, so...
  9. #define TRACE
  10. using NUnit.Framework;
  11. using System;
  12. using System.IO;
  13. using System.Diagnostics;
  14. namespace MonoTests.System.Diagnostics {
  15. public class TraceTest : TestCase {
  16. private StringWriter buffer;
  17. private TraceListener listener;
  18. public TraceTest ()
  19. : base ("System.Diagnostics.Trace testsuite")
  20. {
  21. }
  22. public TraceTest (string name)
  23. : base(name)
  24. {
  25. }
  26. protected override void SetUp ()
  27. {
  28. // We don't want to deal with the default listener, which can send the
  29. // output to various places (Debug stream, Console.Out, ...)
  30. // Trace.Listeners.Remove ("Default");
  31. buffer = new StringWriter ();
  32. listener = new TextWriterTraceListener (buffer, "TestOutput");
  33. Trace.Listeners.Clear ();
  34. Trace.Listeners.Add (listener);
  35. Trace.AutoFlush = true;
  36. }
  37. protected override void TearDown ()
  38. {
  39. // Trace.Listeners.Add (new DefaultTraceListener ());
  40. Trace.Listeners.Remove (listener);
  41. }
  42. public static ITest Suite {
  43. get {
  44. return new TestSuite (typeof (TraceTest));
  45. }
  46. }
  47. // Make sure that when we get the output we expect....
  48. public void TestTracing ()
  49. {
  50. Trace.IndentLevel = 0;
  51. Trace.IndentSize = 4;
  52. string value =
  53. "Entering Main" + Environment.NewLine +
  54. "Exiting Main" + Environment.NewLine;
  55. Trace.WriteLine ("Entering Main");
  56. Trace.WriteLine ("Exiting Main");
  57. AssertEquals ("#Tr01", value, buffer.ToString ());
  58. }
  59. // Make sure we get the output we expect in the presence of indenting...
  60. public void TestIndent ()
  61. {
  62. Trace.IndentLevel = 0;
  63. Trace.IndentSize = 4;
  64. string value =
  65. "List of errors:" + Environment.NewLine +
  66. " Error 1: File not found" + Environment.NewLine +
  67. " Error 2: Directory not found" + Environment.NewLine +
  68. "End of list of errors" + Environment.NewLine;
  69. Trace.WriteLine ("List of errors:");
  70. Trace.Indent ();
  71. Trace.WriteLine ("Error 1: File not found");
  72. Trace.WriteLine ("Error 2: Directory not found");
  73. Trace.Unindent ();
  74. Trace.WriteLine ("End of list of errors");
  75. AssertEquals ("#In01", value, buffer.ToString());
  76. }
  77. // Make sure that TraceListener properties (IndentLevel, IndentSize) are
  78. // modified when the corresponding Trace properties are changed.
  79. public void TestAddedTraceListenerProperties ()
  80. {
  81. TraceListener t1 = new TextWriterTraceListener (Console.Out);
  82. TraceListener t2 = new TextWriterTraceListener (Console.Error);
  83. Trace.Listeners.Add(t1);
  84. Trace.Listeners.Add(t2);
  85. const int ExpectedSize = 5;
  86. const int ExpectedLevel = 2;
  87. Trace.IndentSize = ExpectedSize;
  88. Trace.IndentLevel = ExpectedLevel;
  89. foreach (TraceListener t in Trace.Listeners) {
  90. string ids = "#TATLP-S-" + t.Name;
  91. string idl = "#TATLP-L-" + t.Name;
  92. AssertEquals (ids, ExpectedSize, t.IndentSize);
  93. AssertEquals (idl, ExpectedLevel, t.IndentLevel);
  94. }
  95. Trace.Listeners.Remove(t1);
  96. Trace.Listeners.Remove(t2);
  97. }
  98. // Make sure that the TraceListener properties (IndentLevel, IndentSize)
  99. // are properly modified when the TraceListener is added to the
  100. // collection.
  101. public void TestListeners_Add_Values()
  102. {
  103. const int ExpectedLevel = 0;
  104. const int ExpectedSize = 4;
  105. Trace.IndentLevel = ExpectedLevel;
  106. Trace.IndentSize = ExpectedSize;
  107. TraceListener tl = new TextWriterTraceListener(Console.Out);
  108. tl.IndentLevel = 2*ExpectedLevel;
  109. tl.IndentSize = 2*ExpectedSize;
  110. Trace.Listeners.Add(tl);
  111. // Assert that the listener we added has been set to the correct indent
  112. // level.
  113. AssertEquals ("#LATL-L", ExpectedLevel, tl.IndentLevel);
  114. AssertEquals ("#LATL-S", ExpectedSize, tl.IndentSize);
  115. // Assert that all listeners in the collection have the same level.
  116. foreach (TraceListener t in Trace.Listeners)
  117. {
  118. string idl = "#LATL-L:" + t.Name;
  119. string ids = "#LATL-S:" + t.Name;
  120. AssertEquals(idl, ExpectedLevel, t.IndentLevel);
  121. AssertEquals(ids, ExpectedSize, t.IndentSize);
  122. }
  123. }
  124. // IndentSize, IndentLevel are thread-static
  125. }
  126. }