| // 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) | |
| } | |
| }) | |
| } | |
| } |