@@ -301,3 +301,132 @@ func TestTUI_ViewRenders(t *testing.T) {
301301 }
302302}
303303
304+ func TestTUI_ResolutionOptions (t * testing.T ) {
305+ // test default resolution settings
306+ m := New (Options {Theme : "dark" , Interval : time .Hour })
307+
308+ if m .resolveAddrs != false {
309+ t .Error ("expected resolveAddrs to be false by default (must be explicitly set)" )
310+ }
311+ if m .resolvePorts != false {
312+ t .Error ("expected resolvePorts to be false by default" )
313+ }
314+
315+ // test with explicit options
316+ m2 := New (Options {
317+ Theme : "dark" ,
318+ Interval : time .Hour ,
319+ ResolveAddrs : true ,
320+ ResolvePorts : true ,
321+ })
322+
323+ if m2 .resolveAddrs != true {
324+ t .Error ("expected resolveAddrs to be true when set" )
325+ }
326+ if m2 .resolvePorts != true {
327+ t .Error ("expected resolvePorts to be true when set" )
328+ }
329+ }
330+
331+ func TestTUI_ToggleResolution (t * testing.T ) {
332+ m := New (Options {Theme : "dark" , Interval : time .Hour , ResolveAddrs : true })
333+
334+ if m .resolveAddrs != true {
335+ t .Fatal ("expected resolveAddrs to be true initially" )
336+ }
337+
338+ // toggle address resolution with 'n'
339+ newModel , _ := m .Update (tea.KeyMsg {Type : tea .KeyRunes , Runes : []rune {'n' }})
340+ m = newModel .(model )
341+
342+ if m .resolveAddrs != false {
343+ t .Error ("expected resolveAddrs to be false after toggle" )
344+ }
345+
346+ // toggle back
347+ newModel , _ = m .Update (tea.KeyMsg {Type : tea .KeyRunes , Runes : []rune {'n' }})
348+ m = newModel .(model )
349+
350+ if m .resolveAddrs != true {
351+ t .Error ("expected resolveAddrs to be true after second toggle" )
352+ }
353+
354+ // toggle port resolution with 'N'
355+ if m .resolvePorts != false {
356+ t .Fatal ("expected resolvePorts to be false initially" )
357+ }
358+
359+ newModel , _ = m .Update (tea.KeyMsg {Type : tea .KeyRunes , Runes : []rune {'N' }})
360+ m = newModel .(model )
361+
362+ if m .resolvePorts != true {
363+ t .Error ("expected resolvePorts to be true after toggle" )
364+ }
365+
366+ // toggle back
367+ newModel , _ = m .Update (tea.KeyMsg {Type : tea .KeyRunes , Runes : []rune {'N' }})
368+ m = newModel .(model )
369+
370+ if m .resolvePorts != false {
371+ t .Error ("expected resolvePorts to be false after second toggle" )
372+ }
373+ }
374+
375+ func TestTUI_ResolveAddrHelper (t * testing.T ) {
376+ m := New (Options {Theme : "dark" , Interval : time .Hour })
377+ m .resolveAddrs = false
378+
379+ // when resolution is off, should return original address
380+ addr := m .resolveAddr ("192.168.1.1" )
381+ if addr != "192.168.1.1" {
382+ t .Errorf ("expected original address when resolution off, got %s" , addr )
383+ }
384+
385+ // empty and wildcard addresses should pass through unchanged
386+ if m .resolveAddr ("" ) != "" {
387+ t .Error ("expected empty string to pass through" )
388+ }
389+ if m .resolveAddr ("*" ) != "*" {
390+ t .Error ("expected wildcard to pass through" )
391+ }
392+ }
393+
394+ func TestTUI_ResolvePortHelper (t * testing.T ) {
395+ m := New (Options {Theme : "dark" , Interval : time .Hour })
396+ m .resolvePorts = false
397+
398+ // when resolution is off, should return port number as string
399+ port := m .resolvePort (80 , "tcp" )
400+ if port != "80" {
401+ t .Errorf ("expected '80' when resolution off, got %s" , port )
402+ }
403+
404+ port = m .resolvePort (443 , "tcp" )
405+ if port != "443" {
406+ t .Errorf ("expected '443' when resolution off, got %s" , port )
407+ }
408+ }
409+
410+ func TestTUI_FormatRemoteHelper (t * testing.T ) {
411+ m := New (Options {Theme : "dark" , Interval : time .Hour })
412+ m .resolveAddrs = false
413+ m .resolvePorts = false
414+
415+ // empty/wildcard addresses should return dash
416+ if m .formatRemote ("" , 80 , "tcp" ) != "-" {
417+ t .Error ("expected dash for empty address" )
418+ }
419+ if m .formatRemote ("*" , 80 , "tcp" ) != "-" {
420+ t .Error ("expected dash for wildcard address" )
421+ }
422+ if m .formatRemote ("192.168.1.1" , 0 , "tcp" ) != "-" {
423+ t .Error ("expected dash for zero port" )
424+ }
425+
426+ // valid address:port should format correctly
427+ result := m .formatRemote ("192.168.1.1" , 443 , "tcp" )
428+ if result != "192.168.1.1:443" {
429+ t .Errorf ("expected '192.168.1.1:443', got %s" , result )
430+ }
431+ }
432+
0 commit comments