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