|
|
@@ -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)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|