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