1 use super::*;
2 use crate::error::Result;
3 
4 #[test]
5 fn test_five_tuple_protocol() -> Result<()> {
6     let udp_expect = PROTO_UDP;
7     let tcp_expect = PROTO_TCP;
8 
9     assert_eq!(
10         udp_expect, PROTO_UDP,
11         "Invalid UDP Protocol value, expect {} but {}",
12         udp_expect, PROTO_UDP
13     );
14     assert_eq!(
15         tcp_expect, PROTO_TCP,
16         "Invalid TCP Protocol value, expect {} but {}",
17         tcp_expect, PROTO_TCP
18     );
19 
20     assert_eq!(udp_expect.to_string(), "UDP");
21     assert_eq!(tcp_expect.to_string(), "TCP");
22 
23     Ok(())
24 }
25 
26 #[test]
27 fn test_five_tuple_equal() -> Result<()> {
28     let src_addr1: SocketAddr = "0.0.0.0:3478".parse::<SocketAddr>()?;
29     let src_addr2: SocketAddr = "0.0.0.0:3479".parse::<SocketAddr>()?;
30 
31     let dst_addr1: SocketAddr = "0.0.0.0:3480".parse::<SocketAddr>()?;
32     let dst_addr2: SocketAddr = "0.0.0.0:3481".parse::<SocketAddr>()?;
33 
34     let tests = vec![
35         (
36             "Equal",
37             true,
38             FiveTuple {
39                 protocol: PROTO_UDP,
40                 src_addr: src_addr1,
41                 dst_addr: dst_addr1,
42             },
43             FiveTuple {
44                 protocol: PROTO_UDP,
45                 src_addr: src_addr1,
46                 dst_addr: dst_addr1,
47             },
48         ),
49         (
50             "DifferentProtocol",
51             false,
52             FiveTuple {
53                 protocol: PROTO_TCP,
54                 src_addr: src_addr1,
55                 dst_addr: dst_addr1,
56             },
57             FiveTuple {
58                 protocol: PROTO_UDP,
59                 src_addr: src_addr1,
60                 dst_addr: dst_addr1,
61             },
62         ),
63         (
64             "DifferentSrcAddr",
65             false,
66             FiveTuple {
67                 protocol: PROTO_UDP,
68                 src_addr: src_addr1,
69                 dst_addr: dst_addr1,
70             },
71             FiveTuple {
72                 protocol: PROTO_UDP,
73                 src_addr: src_addr2,
74                 dst_addr: dst_addr1,
75             },
76         ),
77         (
78             "DifferentDstAddr",
79             false,
80             FiveTuple {
81                 protocol: PROTO_UDP,
82                 src_addr: src_addr1,
83                 dst_addr: dst_addr1,
84             },
85             FiveTuple {
86                 protocol: PROTO_UDP,
87                 src_addr: src_addr1,
88                 dst_addr: dst_addr2,
89             },
90         ),
91     ];
92 
93     for (name, expect, a, b) in tests {
94         let fact = a == b;
95         assert_eq!(
96             expect, fact,
97             "{}: {}, {} equal check should be {}, but {}",
98             name, a, b, expect, fact
99         );
100     }
101 
102     Ok(())
103 }
104