Merge pull request #3142 from henricm/fix-for-win-mono_string_to_utf8
[mono.git] / mcs / nunit24 / NUnitCore / core / TextCapture.cs
1 // ****************************************************************\r
2 // Copyright 2008, Charlie Poole\r
3 // This is free software licensed under the NUnit license. You may\r
4 // obtain a copy of the license at http://nunit.org/?p=license&r=2.4\r
5 // ****************************************************************\r
6 \r
7 using System.IO;\r
8 \r
9 namespace NUnit.Core\r
10 {\r
11     /// <summary>\r
12     /// Abstract base for classes that capture text output\r
13     /// and redirect it to a TextWriter.\r
14     /// </summary>\r
15     public abstract class TextCapture\r
16     {\r
17         #region Private Fields\r
18         /// <summary>\r
19         /// True if capture is enabled\r
20         /// </summary>\r
21         private bool enabled;\r
22 \r
23         /// <summary>\r
24         /// The TextWriter to which text is redirected\r
25         /// </summary>\r
26         private TextWriter writer;\r
27         #endregion\r
28 \r
29         #region Properties\r
30         /// <summary>\r
31         /// The TextWriter to which text is redirected\r
32         /// </summary>\r
33         public TextWriter Writer\r
34         {\r
35             get { return writer; }\r
36             set\r
37             {\r
38                 writer = value;\r
39 \r
40                 if (writer != null && enabled)\r
41                     StartCapture();\r
42             }\r
43         }\r
44 \r
45         /// <summary>\r
46         /// Controls whether text is captured or not\r
47         /// </summary>\r
48         public bool Enabled\r
49         {\r
50             get { return enabled; }\r
51             set\r
52             {\r
53                 if (enabled != value)\r
54                 {\r
55                     if (writer != null && enabled)\r
56                         StopCapture();\r
57 \r
58                     enabled = value;\r
59 \r
60                     if (writer != null && enabled && DefaultThreshold != "Off")\r
61                         StartCapture();\r
62                 }\r
63             }\r
64         }\r
65 \r
66         /// <summary>\r
67         /// Returns the default threshold value, which represents\r
68         /// the degree of verbosity of the output text stream.\r
69         /// Returns "None" in the base class. Derived classes that\r
70         /// support verbosity levels should override it.\r
71         /// </summary>\r
72         public virtual string DefaultThreshold\r
73         {\r
74             get { return "None"; }\r
75         }\r
76         #endregion\r
77 \r
78         #region Abstract Members\r
79         /// <summary>\r
80         /// Override this to perform whatever actions are needed\r
81         /// to start capturing text and sending it to the Writer.\r
82         /// </summary>\r
83         protected abstract void StartCapture();\r
84 \r
85         /// <summary>\r
86         /// Override this to perform whatever actions are needed\r
87         /// to flush remaining output and stop capturing text.\r
88         /// The Writer should not be changed, allowing capture\r
89         /// to be restarted at a future point.\r
90         /// </summary>\r
91         protected abstract void StopCapture();\r
92         #endregion\r
93     }\r
94 \r
95 }\r