|
|
|
@ -25,3 +25,54 @@ func TestUDPDestination(t *testing.T) {
|
|
|
|
|
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) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|