mirror of https://github.com/v2ray/v2ray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.5 KiB
78 lines
1.5 KiB
package net_test |
|
|
|
import ( |
|
"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) |
|
} |
|
} |
|
}
|
|
|