29 lines
731 B
Go
29 lines
731 B
Go
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)
|
|
}
|
|
}
|
|
}
|