@@ -1118,5 +1118,109 @@ This is a test agent that handles various tasks.
11181118 expect ( messages ) . toContain ( "normal message" )
11191119 expect ( messages ) . toContain ( "[VERBOSE] verbose message" )
11201120 } )
1121+
1122+ it ( "should log empty strings with log() method" , ( ) => {
1123+ const originalLog = console . log
1124+ const messages : string [ ] = [ ]
1125+ console . log = ( msg : string ) => messages . push ( msg )
1126+
1127+ const logger = createLogger ( false )
1128+ logger . log ( "" )
1129+
1130+ console . log = originalLog
1131+ expect ( messages ) . toHaveLength ( 1 )
1132+ expect ( messages [ 0 ] ) . toBe ( "" )
1133+ } )
1134+
1135+ it ( "should log empty strings with verbose() method when verbose is true" , ( ) => {
1136+ const originalLog = console . log
1137+ const messages : string [ ] = [ ]
1138+ console . log = ( msg : string ) => messages . push ( msg )
1139+
1140+ const logger = createLogger ( true )
1141+ logger . verbose ( "" )
1142+
1143+ console . log = originalLog
1144+ expect ( messages ) . toHaveLength ( 1 )
1145+ expect ( messages [ 0 ] ) . toBe ( "[VERBOSE] " )
1146+ } )
1147+
1148+ it ( "should handle messages with newline characters" , ( ) => {
1149+ const originalLog = console . log
1150+ const messages : string [ ] = [ ]
1151+ console . log = ( msg : string ) => messages . push ( msg )
1152+
1153+ const logger = createLogger ( true )
1154+ logger . log ( "line1\nline2\nline3" )
1155+ logger . verbose ( "verbose\nwith\nnewlines" )
1156+
1157+ console . log = originalLog
1158+ expect ( messages [ 0 ] ) . toBe ( "line1\nline2\nline3" )
1159+ expect ( messages [ 1 ] ) . toBe ( "[VERBOSE] verbose\nwith\nnewlines" )
1160+ } )
1161+
1162+ it ( "should handle messages with tab characters" , ( ) => {
1163+ const originalLog = console . log
1164+ const messages : string [ ] = [ ]
1165+ console . log = ( msg : string ) => messages . push ( msg )
1166+
1167+ const logger = createLogger ( true )
1168+ logger . log ( "column1\tcolumn2\tcolumn3" )
1169+ logger . verbose ( "verbose\twith\ttabs" )
1170+
1171+ console . log = originalLog
1172+ expect ( messages [ 0 ] ) . toBe ( "column1\tcolumn2\tcolumn3" )
1173+ expect ( messages [ 1 ] ) . toBe ( "[VERBOSE] verbose\twith\ttabs" )
1174+ } )
1175+
1176+ it ( "should handle messages with mixed special characters" , ( ) => {
1177+ const originalLog = console . log
1178+ const messages : string [ ] = [ ]
1179+ console . log = ( msg : string ) => messages . push ( msg )
1180+
1181+ const logger = createLogger ( true )
1182+ const specialMessage = "header\n\tindented\n\t\tdouble-indented\nback"
1183+ logger . log ( specialMessage )
1184+ logger . verbose ( specialMessage )
1185+
1186+ console . log = originalLog
1187+ expect ( messages [ 0 ] ) . toBe ( specialMessage )
1188+ expect ( messages [ 1 ] ) . toBe ( `[VERBOSE] ${ specialMessage } ` )
1189+ } )
1190+
1191+ it ( "should use exact '[VERBOSE] ' prefix format with single space after bracket" , ( ) => {
1192+ const originalLog = console . log
1193+ const messages : string [ ] = [ ]
1194+ console . log = ( msg : string ) => messages . push ( msg )
1195+
1196+ const logger = createLogger ( true )
1197+ logger . verbose ( "test" )
1198+
1199+ console . log = originalLog
1200+ // Verify exact prefix format: [VERBOSE] followed by exactly one space
1201+ expect ( messages [ 0 ] ) . toMatch ( / ^ \[ V E R B O S E \] / )
1202+ expect ( messages [ 0 ] ) . toBe ( "[VERBOSE] test" )
1203+ // Ensure no extra spaces or different formatting
1204+ expect ( messages [ 0 ] ) . not . toMatch ( / ^ \[ V E R B O S E \] { 2 } / ) // Not two spaces
1205+ expect ( messages [ 0 ] ) . not . toMatch ( / ^ \[ v e r b o s e \] / ) // Not lowercase
1206+ expect ( messages [ 0 ] ) . not . toMatch ( / ^ V E R B O S E : / ) // Not colon format
1207+ } )
1208+
1209+ it ( "should preserve the exact prefix format for various message types" , ( ) => {
1210+ const originalLog = console . log
1211+ const messages : string [ ] = [ ]
1212+ console . log = ( msg : string ) => messages . push ( msg )
1213+
1214+ const logger = createLogger ( true )
1215+ logger . verbose ( "simple" )
1216+ logger . verbose ( " leading spaces" )
1217+ logger . verbose ( "trailing spaces " )
1218+
1219+ console . log = originalLog
1220+ // All messages should have exactly "[VERBOSE] " prefix
1221+ expect ( messages [ 0 ] ) . toBe ( "[VERBOSE] simple" )
1222+ expect ( messages [ 1 ] ) . toBe ( "[VERBOSE] leading spaces" )
1223+ expect ( messages [ 2 ] ) . toBe ( "[VERBOSE] trailing spaces " )
1224+ } )
11211225 } )
11221226} )
0 commit comments