| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | package net_testimport (	"testing"	. "v2ray.com/core/common/net"	. "v2ray.com/core/common/net/testing"	. "v2ray.com/ext/assert")func TestTCPDestination(t *testing.T) {	assert := With(t)	dest := TCPDestination(IPAddress([]byte{1, 2, 3, 4}), 80)	assert(dest, IsTCP)	assert(dest, Not(IsUDP))	assert(dest.String(), Equals, "tcp:1.2.3.4:80")}func TestUDPDestination(t *testing.T) {	assert := With(t)	dest := UDPDestination(IPAddress([]byte{0x20, 0x01, 0x48, 0x60, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88}), 53)	assert(dest, Not(IsTCP))	assert(dest, IsUDP)	assert(dest.String(), Equals, "udp:[2001:4860:4860::8888]:53")}func TestDestinationParse(t *testing.T) {	assert := With(t)	cases := []struct {		Input  string		Output Destination		Error  bool	}{		{			Input:  "tcp:127.0.0.1:80",			Output: TCPDestination(LocalHostIP, Port(80)),		},		{			Input:  "udp:8.8.8.8:53",			Output: UDPDestination(IPAddress([]byte{8, 8, 8, 8}), Port(53)),		},		{			Input: "8.8.8.8:53",			Output: Destination{				Address: IPAddress([]byte{8, 8, 8, 8}),				Port:    Port(53),			},		},		{			Input: ":53",			Output: Destination{				Address: AnyIP,				Port:    Port(53),			},		},		{			Input: "8.8.8.8",			Error: true,		},		{			Input: "8.8.8.8:http",			Error: true,		},	}	for _, testcase := range cases {		d, err := ParseDestination(testcase.Input)		if !testcase.Error {			assert(err, IsNil)			assert(d, Equals, testcase.Output)		} else {			assert(err, IsNotNil)		}	}}
 |