bittorrent_udp: add quickcheck tests for request byte conversion

This commit is contained in:
Joakim Frostegård 2020-04-11 14:53:36 +02:00
parent 554895a9df
commit 02b63feef7
2 changed files with 49 additions and 0 deletions

View file

@ -197,3 +197,45 @@ pub fn request_from_bytes(
_ => Err(RequestParseError::text(transaction_id, "Invalid action")) _ => Err(RequestParseError::text(transaction_id, "Invalid action"))
} }
} }
#[cfg(test)]
mod tests {
use super::*;
fn same_after_conversion(request: Request) -> bool {
let mut buf = Vec::new();
request_to_bytes(&mut buf, request.clone()).unwrap();
let r2 = request_from_bytes(&buf[..], ::std::u8::MAX).unwrap();
let success = request == r2;
if !success {
println!("before: {:#?}\nafter: {:#?}", request, r2);
}
success
}
#[quickcheck]
fn test_connect_request_convert_identity(
request: ConnectRequest
) -> bool {
same_after_conversion(request.into())
}
#[quickcheck]
fn test_announce_request_convert_identity(
request: AnnounceRequest
) -> bool {
same_after_conversion(request.into())
}
#[quickcheck]
fn test_scrape_request_convert_identity(
request: ScrapeRequest
) -> bool {
same_after_conversion(request.into())
}
}

View file

@ -1,2 +1,9 @@
#[cfg(test)]
extern crate quickcheck;
#[cfg(test)]
#[macro_use(quickcheck)]
extern crate quickcheck_macros;
pub mod converters; pub mod converters;
pub mod types; pub mod types;