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