// Copyright 2026 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main import "testing" func TestListenAddr(t *testing.T) { tests := []struct { name string addr string wantAddr string wantErr bool }{ { name: "empty host", addr: ":8080", wantAddr: "localhost:8080", }, { name: "with host", addr: "localhost:8080", wantAddr: "localhost:8080", }, { name: "with IP", addr: "127.0.0.1:8080", wantAddr: "127.0.0.1:8080", }, { name: "unspecified host", addr: "0.0.0.0:8080", wantAddr: "0.0.0.0:8080", }, { name: "host only", addr: "127.0.0.1", wantErr: true, }, { name: "port only", addr: "8080", wantErr: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got, err := listenAddr(tt.addr) if tt.wantErr && err == nil { t.Errorf("listenAddr(%q) got nil err want non-nil", tt.addr) } else if !tt.wantErr && err != nil { t.Errorf("listenAddr(%q) got err %v want nil", tt.addr, err) } else if got != tt.wantAddr { t.Errorf("listenAddr(%q) = %q, want %q", tt.addr, got, tt.wantAddr) } }) } } func TestAddrURL(t *testing.T) { tests := []struct { name string addr string wantURL string wantSimplified bool }{ { name: "empty host", addr: ":8080", wantURL: "http://localhost:8080", wantSimplified: true, }, { name: "with host", addr: "localhost:8080", wantURL: "http://localhost:8080", wantSimplified: false, }, { name: "with ip", addr: "10.10.10.10:8080", wantURL: "http://10.10.10.10:8080", wantSimplified: false, }, { name: "unspecified ipv4", addr: "0.0.0.0:8080", wantURL: "http://localhost:8080", wantSimplified: true, }, { name: "unspecified ipv6", addr: "[::]:8080", wantURL: "http://localhost:8080", wantSimplified: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { gotURL, gotSimplified, err := addrURL(tt.addr) if err != nil { t.Fatalf("addrURL(%q) got err %v want nil", tt.addr, err) } if gotURL != tt.wantURL { t.Errorf("addrURL(%q) = %q, want %q", tt.addr, gotURL, tt.wantURL) } if gotSimplified != tt.wantSimplified { t.Errorf("addrURL(%q) simplified = %v, want %v", tt.addr, gotSimplified, tt.wantSimplified) } }) } }