@@ -42,7 +42,7 @@ public void Log_is_noop_when_not_enabled()
4242 // ARRANGE
4343 var logger = new LogDisplayLogger ( "Test" )
4444 {
45- RecordLine = Mock . Of < Action < string , string [ ] > > ( MockBehavior . Strict ) ,
45+ RecordLine = Mock . Of < Action < string , object [ ] > > ( MockBehavior . Strict ) ,
4646 } ;
4747
4848 // ACT
@@ -55,7 +55,7 @@ public void Log_is_noop_when_message_is_empty()
5555 // ARRANGE
5656 var logger = new LogDisplayLogger ( "Test" )
5757 {
58- RecordLine = Mock . Of < Action < string , string [ ] > > ( MockBehavior . Strict ) ,
58+ RecordLine = Mock . Of < Action < string , object [ ] > > ( MockBehavior . Strict ) ,
5959 } ;
6060
6161 // ACT
@@ -68,7 +68,7 @@ public void Log_throws_when_formatter_is_null()
6868 // ARRANGE
6969 var logger = new LogDisplayLogger ( "Test" )
7070 {
71- RecordLine = Mock . Of < Action < string , string [ ] > > ( MockBehavior . Strict ) ,
71+ RecordLine = Mock . Of < Action < string , object [ ] > > ( MockBehavior . Strict ) ,
7272 } ;
7373
7474 // ACT & ASSERT
@@ -79,34 +79,96 @@ public void Log_throws_when_formatter_is_null()
7979 public void Log_includes_exception ( )
8080 {
8181 // ARRANGE
82- var logger = new LogDisplayLogger ( "Test" )
82+ var logger = new LogDisplayLogger ( "Test" , new LogDisplayLoggerOptions
83+ {
84+ TimestampFormat = "G" ,
85+ } )
8386 {
84- RecordLine = Mock . Of < Action < string , string [ ] > > ( ) ,
87+ RecordLine = Mock . Of < Action < string , object [ ] > > ( ) ,
8588 } ;
8689
8790 // ACT
88- logger . Log ( LogLevel . Information , new Exception ( "TestException" ) , "TestMessage" ) ;
91+ logger . Log ( LogLevel . Debug , new Exception ( "TestException" ) , "TestMessage" ) ;
8992
9093 // ASSERT
9194 Mock . Get ( logger . RecordLine ) . Verify ( invoke => invoke (
9295 It . Is < string > ( s => s . Contains ( "TestMessage" ) && s . Contains ( "TestException" ) ) ,
93- It . Is < string [ ] > ( p => p . Length == 0 ) ) , Times . Once ) ;
96+ It . Is < object [ ] > ( p => p . Length == 0 ) ) , Times . Once ) ;
9497 }
9598
9699 [ Fact ]
97- public void Log_auto_shows_LogDisplay ( )
100+ public void Log_includes_timestamp ( )
101+ {
102+ // ARRANGE
103+ var logger = new LogDisplayLogger ( "Test" , new LogDisplayLoggerOptions
104+ {
105+ TimestampFormat = "yyyy-MM-dd HH:mm:ss " ,
106+ } )
107+ {
108+ RecordLine = Mock . Of < Action < string , object [ ] > > ( ) ,
109+ GetCurrentTimestamp = ( ) => new DateTimeOffset ( 2023 , 04 , 17 , 13 , 34 , 00 , TimeSpan . Zero ) ,
110+ } ;
111+
112+ // ACT
113+ logger . Log ( LogLevel . Trace , new Exception ( "TestException" ) , "TestMessage" ) ;
114+
115+ // ASSERT
116+ Mock . Get ( logger . RecordLine ) . Verify ( invoke => invoke (
117+ It . Is < string > ( s => s . Contains ( "2023-04-17 13:34:00" ) ) ,
118+ It . Is < object [ ] > ( p => p . Length == 0 ) ) , Times . Once ) ;
119+ }
120+
121+
122+ [ Theory ]
123+ [ InlineData ( LogLevel . Error ) ]
124+ [ InlineData ( LogLevel . Critical ) ]
125+ public void Log_auto_shows_LogDisplay ( LogLevel level )
98126 {
99127 // ARRANGE
100128 var logger = new LogDisplayLogger ( "Test" )
101129 {
102- RecordLine = Mock . Of < Action < string , string [ ] > > ( ) ,
130+ RecordLine = Mock . Of < Action < string , object [ ] > > ( ) ,
103131 Show = Mock . Of < Action > ( ) ,
104132 } ;
105133
106134 // ACT
107- logger . Log ( LogLevel . Error , new Exception ( "TestException" ) , "TestMessage" ) ;
135+ logger . Log ( level , new Exception ( "TestException" ) , "TestMessage" ) ;
108136
109137 // ASSERT
110138 Mock . Get ( logger . Show ) . Verify ( invoke => invoke ( ) , Times . Once ) ;
111139 }
140+
141+ [ Theory ]
142+ [ InlineData ( LogLevel . Trace ) ]
143+ [ InlineData ( LogLevel . Debug ) ]
144+ [ InlineData ( LogLevel . Information ) ]
145+ [ InlineData ( LogLevel . Warning ) ]
146+ public void Log_does_not_show_LogDisplay ( LogLevel level )
147+ {
148+ // ARRANGE
149+ var logger = new LogDisplayLogger ( "Test" )
150+ {
151+ RecordLine = Mock . Of < Action < string , object [ ] > > ( ) ,
152+ Show = Mock . Of < Action > ( ) ,
153+ } ;
154+
155+ // ACT
156+ logger . Log ( level , new Exception ( "TestException" ) , "TestMessage" ) ;
157+
158+ // ASSERT
159+ Mock . Get ( logger . Show ) . Verify ( invoke => invoke ( ) , Times . Never ) ;
160+ }
161+
162+ [ Fact ]
163+ public void Log_throws_when_logLevel_is_wrong ( )
164+ {
165+ // ARRANGE
166+ var logger = new LogDisplayLogger ( "Test" ) ;
167+
168+ // ACT & ASSERT
169+ Assert . Throws < ArgumentOutOfRangeException > ( ( ) =>
170+ {
171+ logger . Log ( ( LogLevel ) 100 , new Exception ( "TestException" ) , "TestMessage" ) ;
172+ } ) ;
173+ }
112174}
0 commit comments