package model import ( "strings" "testing" ) func TestParseAddress(t *testing.T) { for _, c := range []struct{ in, want, err string }{ {in: "10.0.0.0/8", want: "10.0.0.0/8"}, {in: "2001:db8::/32", want: "2001:db8::/32"}, {in: "::ffff:10.0.0.1", want: "10.0.0.1"}, {in: "10.0.0.1/8", err: "host bits"}, {in: "::ffff:0:0/96", err: "IPv4-mapped"}, {in: "::ffff:10.0.0.0/104", err: "IPv4-mapped"}, } { a, err := ParseAddress(c.in) if c.err != "" { if err == nil || !strings.Contains(err.Error(), c.err) { t.Errorf("%s: error %v, want one saying %q", c.in, err, c.err) } continue } if err != nil || a.String() != c.want { t.Errorf("%s: %q, %v; want %q", c.in, a.String(), err, c.want) } } }