@@ -6,159 +6,136 @@ namespace AWS.Lambda.Powertools.Common.Tests;
6
6
7
7
public class ConsoleWrapperTests : IDisposable
8
8
{
9
+ private StringWriter _writer ;
10
+
11
+ public ConsoleWrapperTests ( )
12
+ {
13
+ // Setup a new StringWriter for each test
14
+ _writer = new StringWriter ( ) ;
15
+ // Reset static state for clean testing
16
+ ConsoleWrapper . ResetForTest ( ) ;
17
+ }
18
+
9
19
[ Fact ]
10
20
public void WriteLine_Should_Write_To_Console ( )
11
21
{
12
22
// Arrange
13
23
var consoleWrapper = new ConsoleWrapper ( ) ;
14
- var writer = new StringWriter ( ) ;
15
- ConsoleWrapper . SetOut ( writer ) ;
24
+ ConsoleWrapper . SetOut ( _writer ) ;
16
25
17
26
// Act
18
27
consoleWrapper . WriteLine ( "test message" ) ;
19
28
20
29
// Assert
21
- Assert . Equal ( $ "test message{ Environment . NewLine } ", writer . ToString ( ) ) ;
30
+ Assert . Equal ( $ "test message{ Environment . NewLine } ", _writer . ToString ( ) ) ;
22
31
}
23
32
24
33
[ Fact ]
25
34
public void Error_Should_Write_To_Error_Console ( )
26
35
{
27
36
// Arrange
28
37
var consoleWrapper = new ConsoleWrapper ( ) ;
29
- var writer = new StringWriter ( ) ;
30
- ConsoleWrapper . SetOut ( writer ) ;
31
- Console . SetError ( writer ) ;
38
+ ConsoleWrapper . SetOut ( _writer ) ;
39
+ Console . SetError ( _writer ) ;
32
40
33
41
// Act
34
42
consoleWrapper . Error ( "error message" ) ;
35
- writer . Flush ( ) ;
43
+ _writer . Flush ( ) ;
36
44
37
45
// Assert
38
- Assert . Equal ( $ "error message{ Environment . NewLine } ", writer . ToString ( ) ) ;
46
+ Assert . Equal ( $ "error message{ Environment . NewLine } ", _writer . ToString ( ) ) ;
39
47
}
40
48
41
49
[ Fact ]
42
50
public void SetOut_Should_Override_Console_Output ( )
43
51
{
44
52
// Arrange
45
53
var consoleWrapper = new ConsoleWrapper ( ) ;
46
- var writer = new StringWriter ( ) ;
47
- ConsoleWrapper . SetOut ( writer ) ;
54
+ ConsoleWrapper . SetOut ( _writer ) ;
48
55
49
56
// Act
50
57
consoleWrapper . WriteLine ( "test message" ) ;
51
58
52
59
// Assert
53
- Assert . Equal ( $ "test message{ Environment . NewLine } ", writer . ToString ( ) ) ;
60
+ Assert . Equal ( $ "test message{ Environment . NewLine } ", _writer . ToString ( ) ) ;
54
61
}
55
62
56
63
[ Fact ]
57
64
public void OverrideLambdaLogger_Should_Override_Console_Out ( )
58
65
{
59
- // Arrange
60
- var originalOut = Console . Out ;
61
- try
62
- {
63
- var consoleWrapper = new ConsoleWrapper ( ) ;
64
-
65
- // Act - create a custom StringWriter and set it after constructor
66
- // but before WriteLine (which triggers OverrideLambdaLogger)
67
- var writer = new StringWriter ( ) ;
68
- ConsoleWrapper . SetOut ( writer ) ;
69
-
70
- consoleWrapper . WriteLine ( "test message" ) ;
71
-
72
- // Assert
73
- Assert . Equal ( $ "test message{ Environment . NewLine } ", writer . ToString ( ) ) ;
74
- }
75
- finally
76
- {
77
- // Restore original console out
78
- ConsoleWrapper . ResetForTest ( ) ;
79
- }
66
+ // Arrange
67
+ var consoleWrapper = new ConsoleWrapper ( ) ;
68
+ ConsoleWrapper . SetOut ( _writer ) ;
69
+
70
+ // Act
71
+ consoleWrapper . WriteLine ( "test message" ) ;
72
+
73
+ // Assert
74
+ Assert . Equal ( $ "test message{ Environment . NewLine } ", _writer . ToString ( ) ) ;
75
+ }
76
+
77
+ [ Fact ]
78
+ public void WriteLine_WritesMessageToConsole ( )
79
+ {
80
+ // Arrange
81
+ var consoleWrapper = new ConsoleWrapper ( ) ;
82
+ ConsoleWrapper . SetOut ( _writer ) ;
83
+
84
+ // Act
85
+ consoleWrapper . WriteLine ( "Test message" ) ;
86
+
87
+ // Assert
88
+ var output = _writer . ToString ( ) ;
89
+ Assert . Contains ( "Test message" , output ) ;
90
+ }
91
+
92
+ [ Fact ]
93
+ public void SetOut_OverridesConsoleOutput ( )
94
+ {
95
+ // Act
96
+ ConsoleWrapper . SetOut ( _writer ) ;
97
+ Console . WriteLine ( "Test override" ) ;
98
+
99
+ // Assert
100
+ var output = _writer . ToString ( ) ;
101
+ Assert . Contains ( "Test override" , output ) ;
80
102
}
81
-
103
+
82
104
[ Fact ]
83
- public void WriteLine_WritesMessageToConsole ( )
84
- {
85
- // Arrange
86
- var consoleWrapper = new ConsoleWrapper ( ) ;
87
- var originalOutput = Console . Out ;
88
- using var stringWriter = new StringWriter ( ) ;
89
- ConsoleWrapper . SetOut ( stringWriter ) ;
90
-
91
- try
92
- {
93
- // Act
94
- consoleWrapper . WriteLine ( "Test message" ) ;
95
-
96
- // Assert
97
- var output = stringWriter . ToString ( ) ;
98
- Assert . Contains ( "Test message" , output ) ;
99
- }
100
- finally
101
- {
102
- // Restore original output
103
- ConsoleWrapper . ResetForTest ( ) ;
104
- }
105
- }
105
+ public void StaticWriteLine_FormatsLogMessageCorrectly ( )
106
+ {
107
+ // Arrange
108
+ ConsoleWrapper . SetOut ( _writer ) ;
109
+
110
+ // Act - Using reflection to call internal static method
111
+ typeof ( ConsoleWrapper )
112
+ . GetMethod ( "WriteLine" , System . Reflection . BindingFlags . NonPublic | System . Reflection . BindingFlags . Static , null , new [ ] { typeof ( string ) , typeof ( string ) } , null )
113
+ ? . Invoke ( null , new object [ ] { "INFO" , "Test log message" } ) ;
114
+
115
+ // Assert
116
+ var output = _writer . ToString ( ) ;
117
+ Assert . Matches ( @"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z\tINFO\tTest log message" , output ) ;
118
+ }
119
+
120
+ [ Fact ]
121
+ public void ClearOutputResetFlag_ResetsFlag ( )
122
+ {
123
+ // Arrange
124
+ var consoleWrapper = new ConsoleWrapper ( ) ;
125
+ ConsoleWrapper . SetOut ( _writer ) ;
106
126
107
- [ Fact ]
108
- public void SetOut_OverridesConsoleOutput ( )
109
- {
110
- // Arrange
111
- var originalOutput = Console . Out ;
112
- using var stringWriter = new StringWriter ( ) ;
113
-
114
- try
115
- {
116
- // Act
117
- typeof ( ConsoleWrapper )
118
- . GetMethod ( "SetOut" , System . Reflection . BindingFlags . NonPublic | System . Reflection . BindingFlags . Static )
119
- ? . Invoke ( null , new object [ ] { stringWriter } ) ;
120
-
121
- Console . WriteLine ( "Test override" ) ;
122
-
123
- // Assert
124
- var output = stringWriter . ToString ( ) ;
125
- Assert . Contains ( "Test override" , output ) ;
126
- }
127
- finally
128
- {
129
- // Restore original output
130
- ConsoleWrapper . ResetForTest ( ) ;
131
- }
132
- }
127
+ // Act
128
+ consoleWrapper . WriteLine ( "First message" ) ; // Should set the reset flag
129
+ ConsoleWrapper . ClearOutputResetFlag ( ) ;
130
+ consoleWrapper . WriteLine ( "Second message" ) ; // Should set it again
133
131
134
- [ Fact ]
135
- public void StaticWriteLine_FormatsLogMessageCorrectly ( )
136
- {
137
- // Arrange
138
- var originalOutput = Console . Out ;
139
- using var stringWriter = new StringWriter ( ) ;
140
- ConsoleWrapper . SetOut ( stringWriter ) ;
141
-
142
- try
143
- {
144
- // Act
145
- typeof ( ConsoleWrapper )
146
- . GetMethod ( "WriteLine" , System . Reflection . BindingFlags . NonPublic | System . Reflection . BindingFlags . Static , null , new [ ] { typeof ( string ) , typeof ( string ) } , null )
147
- ? . Invoke ( null , new object [ ] { "INFO" , "Test log message" } ) ;
148
-
149
- // Assert
150
- var output = stringWriter . ToString ( ) ;
151
- Assert . Matches ( @"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z\tINFO\tTest log message" , output ) ;
152
- }
153
- finally
154
- {
155
- // Restore original output
156
- ConsoleWrapper . ResetForTest ( ) ;
157
- }
158
- }
159
-
160
- public void Dispose ( )
161
- {
162
- ConsoleWrapper . ResetForTest ( ) ;
163
- }
132
+ // Assert
133
+ Assert . Equal ( $ "First message{ Environment . NewLine } Second message{ Environment . NewLine } ", _writer . ToString ( ) ) ;
134
+ }
135
+
136
+ public void Dispose ( )
137
+ {
138
+ ConsoleWrapper . ResetForTest ( ) ;
139
+ _writer ? . Dispose ( ) ;
140
+ }
164
141
}
0 commit comments