[NUI] Rebase develnui (DevelNUI only patches --> master) (#3910)
[platform/core/csapi/tizenfx.git] / test / Tizen.NUI.Devel.Tests.Ubuntu / nunit.framework / Internal / Execution / EventListenerTextWriter.cs
1 // ***********************************************************************
2 // Copyright (c) 2007-2016 Charlie Poole
3 //
4 // Permission is hereby granted, free of charge, to any person obtaining
5 // a copy of this software and associated documentation files (the
6 // "Software"), to deal in the Software without restriction, including
7 // without limitation the rights to use, copy, modify, merge, publish,
8 // distribute, sublicense, and/or sell copies of the Software, and to
9 // permit persons to whom the Software is furnished to do so, subject to
10 // the following conditions:
11 // 
12 // The above copyright notice and this permission notice shall be
13 // included in all copies or substantial portions of the Software.
14 // 
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 // ***********************************************************************
23 #define PORTABLE
24 #define TIZEN
25 #define NUNIT_FRAMEWORK
26 #define NUNITLITE
27 #define NET_4_5
28 #define PARALLEL
29 #if !NETCF && !SILVERLIGHT && !PORTABLE
30 using System;
31 using System.IO;
32 using System.Text;
33 using NUnit.Framework.Interfaces;
34
35 namespace NUnit.Framework.Internal.Execution
36 {
37     /// <summary>
38     /// EventListenerTextWriter sends text output to the currently active
39     /// ITestEventListener in the form of a TestOutput object. If no event 
40     /// listener is active in the contet, or if there is no context,
41     /// the output is forwarded to the supplied default writer.
42     /// </summary>
43         public class EventListenerTextWriter : TextWriter
44         {
45         private TextWriter _defaultWriter;
46                 private string _streamName;
47
48         /// <summary>
49         /// Construct an EventListenerTextWriter
50         /// </summary>
51         /// <param name="streamName">The name of the stream to use for events</param>
52         /// <param name="defaultWriter">The default writer to use if no listener is available</param>
53                 public EventListenerTextWriter( string streamName, TextWriter defaultWriter )
54                 {
55                         _streamName = streamName;
56             _defaultWriter = defaultWriter;
57                 }
58
59         /// <summary>
60         /// Write a single char
61         /// </summary>
62         override public void Write(char aChar)
63         {
64             if (!TrySendToListener(aChar.ToString()))
65                 _defaultWriter.Write(aChar);
66         }
67
68         /// <summary>
69         /// Write a string
70         /// </summary>
71         override public void Write(string aString)
72         {
73             if (!TrySendToListener(aString))
74                 _defaultWriter.Write(aString);
75         }
76
77         /// <summary>
78         /// Write a string followed by a newline
79         /// </summary>
80         override public void WriteLine(string aString)
81         {
82             if (!TrySendToListener(aString + Environment.NewLine))
83                 _defaultWriter.WriteLine(aString);
84         }
85
86         /// <summary>
87         /// Get the Encoding for this TextWriter
88         /// </summary>
89         override public System.Text.Encoding Encoding
90                 {
91                         get { return Encoding.Default; }
92                 }
93
94         private bool TrySendToListener(string text)
95         {
96             var context = TestExecutionContext.GetTestExecutionContext();
97             if (context == null || context.Listener == null)
98                 return false;
99
100             string testName = context.CurrentTest != null
101                 ? context.CurrentTest.FullName
102                 : null;
103             context.Listener.TestOutput(new TestOutput(text, _streamName, testName));
104             return true;
105         }
106         }
107 }
108 #endif