1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4 
5 using System.IO;
6 using Xunit;
7 
8 namespace System.Diagnostics.TextWriterTraceListenerTests
9 {
10     public class TextWriterTraceListener_WriteTests : FileCleanupTestBase
11     {
12         private readonly Stream _stream;
13         private readonly string _fileName;
14         private const string TestMessage = "HelloWorld";
15 
TextWriterTraceListener_WriteTests()16         public TextWriterTraceListener_WriteTests()
17         {
18             _fileName = $"{GetTestFilePath()}.xml";
19             CommonUtilities.DeleteFile(_fileName);
20             _stream = new FileStream(_fileName, FileMode.OpenOrCreate, FileAccess.Write);
21         }
22 
23         [Fact]
TestWrite()24         public void TestWrite()
25         {
26             using (var target = new TextWriterTraceListener(_stream))
27             {
28                 target.Write(TestMessage);
29             }
30 
31             Assert.Contains(TestMessage, File.ReadAllText(_fileName));
32         }
33 
34         [Fact]
TestWriteLine()35         public void TestWriteLine()
36         {
37             using (var target = new TextWriterTraceListener(_stream))
38             {
39                 target.WriteLine(TestMessage);
40             }
41 
42             string expected = TestMessage + Environment.NewLine;
43             Assert.Contains(expected, File.ReadAllText(_fileName));
44         }
45 
46         [Fact]
TestFlush()47         public void TestFlush()
48         {
49             using (var target = new TextWriterTraceListener(_stream))
50             {
51                 target.Write(TestMessage);
52                 target.Flush();
53             }
54         }
55 
56         [Fact]
TestWriteAfterDisposeShouldNotThrow()57         public void TestWriteAfterDisposeShouldNotThrow()
58         {
59             var target = new TextWriterTraceListener(_stream);
60             target.Dispose();
61 
62             target.WriteLine(TestMessage);
63             target.Write(TestMessage);
64             target.Flush();
65         }
66 
67         [Fact]
TestWriterPropery()68         public void TestWriterPropery()
69         {
70             var testWriter = new StreamWriter(_stream);
71             using (var target = new TextWriterTraceListener())
72             {
73                 Assert.Null(target.Writer);
74                 target.Writer = testWriter;
75                 Assert.NotNull(target.Writer);
76                 Assert.Same(testWriter, target.Writer);
77             }
78         }
79 
Dispose(bool disposing)80         protected override void Dispose(bool disposing)
81         {
82             _stream.Dispose();
83             base.Dispose(disposing);
84         }
85     }
86 }
87