9 "github.com/stretchr/testify/assert"
10 "github.com/stretchr/testify/require"
13 func TestNewNetAddress(t *testing.T) {
14 assert, require := assert.New(t), require.New(t)
16 tcpAddr, err := net.ResolveTCPAddr("tcp", "127.0.0.1:8080")
18 addr := NewNetAddress(tcpAddr)
20 assert.Equal("127.0.0.1:8080", addr.String())
22 assert.NotPanics(func() {
23 NewNetAddress(&net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8000})
24 }, "Calling NewNetAddress with UDPAddr should not panic in testing")
27 func TestNewNetAddressString(t *testing.T) {
29 assert := assert.New(t)
35 {"127.0.0.1:8080", true},
36 // {"127.0.0:8080", false},
38 {"127.0.0.1:a", false},
41 {"127.0.0:8080000", false},
44 for _, t := range tests {
45 addr, err := NewNetAddressString(t.addr)
47 if assert.Nil(err, t.addr) {
48 assert.Equal(t.addr, addr.String())
51 assert.NotNil(err, t.addr)
56 func TestNewNetAddressStrings(t *testing.T) {
57 assert, require := assert.New(t), require.New(t)
58 addrs, err := NewNetAddressStrings([]string{"127.0.0.1:8080", "127.0.0.2:8080"})
61 assert.Equal(2, len(addrs))
64 func TestNewNetAddressIPPort(t *testing.T) {
65 assert := assert.New(t)
66 addr := NewNetAddressIPPort(net.ParseIP("127.0.0.1"), 8080)
68 assert.Equal("127.0.0.1:8080", addr.String())
71 func TestNetAddressProperties(t *testing.T) {
72 assert, require := assert.New(t), require.New(t)
74 // TODO add more test cases
81 {"127.0.0.1:8080", true, true, false},
82 {"ya.ru:80", true, false, true},
85 for _, t := range tests {
86 addr, err := NewNetAddressString(t.addr)
89 assert.Equal(t.valid, addr.Valid())
90 assert.Equal(t.local, addr.Local())
91 assert.Equal(t.routable, addr.Routable())
95 func TestNetAddressReachabilityTo(t *testing.T) {
96 assert, require := assert.New(t), require.New(t)
98 // TODO add more test cases
104 {"127.0.0.1:8080", "127.0.0.1:8081", 0},
105 {"ya.ru:80", "127.0.0.1:8080", 1},
108 for _, t := range tests {
109 addr, err := NewNetAddressString(t.addr)
112 other, err := NewNetAddressString(t.other)
115 assert.Equal(t.reachability, addr.ReachabilityTo(other))