bittorrent_udp: simplify quickcheck test syntax, keeping functionality

This commit is contained in:
Joakim Frostegård 2020-04-11 14:57:08 +02:00
parent 02b63feef7
commit c45fa80391

View file

@ -178,11 +178,12 @@ pub fn response_from_bytes(
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use quickcheck::{TestResult, quickcheck};
use super::*; use super::*;
fn same_after_conversion(response: Response, ip_version: IpVersion) -> bool { fn same_after_conversion(
response: Response,
ip_version: IpVersion
) -> bool {
let mut buf = Vec::new(); let mut buf = Vec::new();
response_to_bytes(&mut buf, response.clone(), ip_version); response_to_bytes(&mut buf, response.clone(), ip_version);
@ -197,38 +198,32 @@ mod tests {
success success
} }
#[test] #[quickcheck]
fn test_convert_identity_connect_response(){ fn test_connect_response_convert_identity(
fn prop(response: ConnectResponse) -> TestResult { response: ConnectResponse
TestResult::from_bool(same_after_conversion(response.into(), IpVersion::IPv4)) ) -> bool {
} same_after_conversion(response.into(), IpVersion::IPv4)
quickcheck(prop as fn(ConnectResponse) -> TestResult);
} }
#[test] #[quickcheck]
fn test_convert_identity_announce_response(){ fn test_announce_response_convert_identity(
fn prop(data: (AnnounceResponse, IpVersion)) -> TestResult { data: (AnnounceResponse, IpVersion)
let mut r = data.0; ) -> bool {
let mut r = data.0;
if data.1 == IpVersion::IPv4 { if data.1 == IpVersion::IPv4 {
r.peers.retain(|peer| peer.ip_address.is_ipv4()); r.peers.retain(|peer| peer.ip_address.is_ipv4());
} else { } else {
r.peers.retain(|peer| peer.ip_address.is_ipv6()); r.peers.retain(|peer| peer.ip_address.is_ipv6());
}
TestResult::from_bool(same_after_conversion(r.into(), data.1))
} }
quickcheck(prop as fn((AnnounceResponse, IpVersion)) -> TestResult); same_after_conversion(r.into(), data.1)
} }
#[test] #[quickcheck]
fn test_convert_identity_scrape_response(){ fn test_scrape_response_convert_identity(
fn prop(response: ScrapeResponse) -> TestResult { response: ScrapeResponse
TestResult::from_bool(same_after_conversion(response.into(), IpVersion::IPv4)) ) -> bool {
} same_after_conversion(response.into(), IpVersion::IPv4)
quickcheck(prop as fn(ScrapeResponse) -> TestResult);
} }
} }