Skip to content

Commit

Permalink
Improve tests for name parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
rpavlik committed May 10, 2019
1 parent 7436fe0 commit f70c874
Showing 1 changed file with 24 additions and 40 deletions.
64 changes: 24 additions & 40 deletions src/parse_name.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2018, Collabora, Ltd.
// Copyright 2018-2019, Collabora, Ltd.
// SPDX-License-Identifier: BSL-1.0
// Author: Ryan A. Pavlik <ryan.pavlik@collabora.com>

Expand Down Expand Up @@ -188,52 +188,36 @@ mod tests {
)
);
}
fn ip_insides(
o0: u8,
o1: u8,
o2: u8,
o3: u8,
port: u16,
proto: &str,
scheme: Scheme,
) -> std::result::Result<(), TestCaseError> {
let ip_string = format!("{}.{}.{}.{}:{}", o0, o1, o2, o3, port);
// println!("{}", ip_string);
let ip = to_addr(ip_string.clone());

let addr_string = format!("{}{}", proto, ip_string);
// println!("{}", addr_string);
let parsed = addr_string.parse::<ServerInfo>();
prop_assert!(parsed.is_ok(), "input string: {}", addr_string);
let parsed = parsed.unwrap();

prop_assert_eq!(
parsed.socket_addr,
ip,
"input string: {}",
addr_string
);
prop_assert_eq!(
parsed.scheme,
scheme,
"input string: {}",
addr_string
);
Ok(())
}
proptest! {
#[test]
fn noncrash(ref s in "\\PC*") {
fn noncrash_weird_server(ref s in "\\PC*") {
let _ = s.parse::<DeviceInfo>();
}


#[test]
fn ip(o0 in 1u8..255, o1 in 1u8..255, o2 in 1u8..255, o3 in 1u8..255, port in 1u16..10000) {

ip_insides(o0, o1, o2, o3, port, "", Scheme::UdpAndTcp)?;
ip_insides(o0, o1, o2, o3, port, "x-vrpn:", Scheme::UdpAndTcp)?;
ip_insides(o0, o1, o2, o3, port, "tcp:", Scheme::TcpOnly)?;
fn generated_ip(o0 in 1u8..255, o1 in 1u8..255, o2 in 1u8..255, o3 in 1u8..255, port in 1u16..10000) {
let proto_and_scheme = [
("", Scheme::UdpAndTcp),
("x-vrpn:", Scheme::UdpAndTcp),
("tcp:", Scheme::TcpOnly)
];

for (proto, scheme) in proto_and_scheme.iter() {

let ip_string = format!("{}.{}.{}.{}:{}", o0, o1, o2, o3, port);
// println!("{}", ip_string);
let ip = to_addr(ip_string.clone());

let addr_string = format!("{}{}", proto, ip_string);
// println!("{}", addr_string);
let parsed = addr_string.parse::<ServerInfo>();
prop_assert!(parsed.is_ok(), "input string: {}", addr_string);
let parsed = parsed.unwrap();

prop_assert_eq!(parsed.socket_addr, ip, "input string: {}", addr_string);
prop_assert_eq!(parsed.scheme, *scheme, "input string: {}", addr_string);
}
}
}

Expand Down

0 comments on commit f70c874

Please sign in to comment.