1 use super::*;
2 use crate::error::Result;
3
4 use std::net::Ipv4Addr;
5
6 #[test]
test_addr_from_socket_addr() -> Result<()>7 fn test_addr_from_socket_addr() -> Result<()> {
8 let u = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 1234);
9
10 let a = Addr::from_socket_addr(&u);
11 assert!(
12 u.ip() == a.ip || u.port() != a.port || u.to_string() != a.to_string(),
13 "not equal"
14 );
15 assert_eq!(a.network(), "turn", "unexpected network");
16
17 Ok(())
18 }
19
20 #[test]
test_addr_equal_ip() -> Result<()>21 fn test_addr_equal_ip() -> Result<()> {
22 let a = Addr {
23 ip: IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)),
24 port: 1337,
25 };
26 let b = Addr {
27 ip: IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)),
28 port: 1338,
29 };
30 assert_ne!(a, b, "a != b");
31 assert!(a.equal_ip(&b), "a.IP should equal to b.IP");
32
33 Ok(())
34 }
35
36 #[test]
test_five_tuple_equal() -> Result<()>37 fn test_five_tuple_equal() -> Result<()> {
38 let tests = vec![
39 ("blank", FiveTuple::default(), FiveTuple::default(), true),
40 (
41 "proto",
42 FiveTuple {
43 proto: PROTO_UDP,
44 ..Default::default()
45 },
46 FiveTuple::default(),
47 false,
48 ),
49 (
50 "server",
51 FiveTuple {
52 server: Addr {
53 port: 100,
54 ..Default::default()
55 },
56 ..Default::default()
57 },
58 FiveTuple::default(),
59 false,
60 ),
61 (
62 "client",
63 FiveTuple {
64 client: Addr {
65 port: 100,
66 ..Default::default()
67 },
68 ..Default::default()
69 },
70 FiveTuple::default(),
71 false,
72 ),
73 ];
74
75 for (name, a, b, r) in tests {
76 let v = a == b;
77 assert_eq!(v, r, "({name}) {a} [{v}!={r}] {b}");
78 }
79
80 Ok(())
81 }
82
83 #[test]
test_five_tuple_string() -> Result<()>84 fn test_five_tuple_string() -> Result<()> {
85 let s = FiveTuple {
86 proto: PROTO_UDP,
87 server: Addr {
88 port: 100,
89 ip: IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)),
90 },
91 client: Addr {
92 port: 200,
93 ip: IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)),
94 },
95 }
96 .to_string();
97
98 assert_eq!(
99 s, "127.0.0.1:200->127.0.0.1:100 (UDP)",
100 "unexpected stringer output"
101 );
102
103 Ok(())
104 }
105