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