r-lanlib 0.11.0

A library crate for performing network scanning operations on any local area network (LAN)
Documentation
use super::*;

#[test]
fn returns_new_ip_targets() {
    let list = vec![
        String::from("192.128.28.1"),
        String::from("192.128.28.2"),
        String::from("192.128.28.3"),
    ];
    let targets = IPTargets::new(list).unwrap();
    assert!(!targets.0.is_empty());
}

#[test]
fn returns_port_target_len() {
    let list = vec![
        String::from("192.128.28.1"),
        String::from("192.128.28.2"),
        String::from("192.128.28.3"),
        String::from("192.128.28.4"),
        String::from("192.128.30.1"),
        String::from("192.128.30.2"),
    ];
    let targets = IPTargets::new(list).unwrap();
    assert_eq!(targets.len(), 6);
}

#[test]
fn lazy_loops_ips() {
    let list = vec![
        String::from("192.128.28.1"),
        String::from("192.128.28.2-192.128.28.4"),
        String::from("192.128.30.0/30"),
    ];

    let expected = [
        net::Ipv4Addr::from_str("192.128.28.1").unwrap(),
        net::Ipv4Addr::from_str("192.128.28.2").unwrap(),
        net::Ipv4Addr::from_str("192.128.28.3").unwrap(),
        net::Ipv4Addr::from_str("192.128.28.4").unwrap(),
        net::Ipv4Addr::from_str("192.128.30.1").unwrap(),
        net::Ipv4Addr::from_str("192.128.30.2").unwrap(),
    ];

    let targets = IPTargets::new(list).unwrap();

    let mut idx = 0;

    let assert_ips = |ip: net::Ipv4Addr| {
        assert_eq!(ip, expected[idx]);
        idx += 1;
        Ok(())
    };

    targets.lazy_loop(assert_ips).unwrap();
}

#[test]
fn returns_error_for_malformed_ip() {
    let list = vec![String::from("nope")];
    let result = IPTargets::new(list);
    assert!(result.is_err());
}

#[test]
fn returns_error_for_malformed_ip_with_slash() {
    let list = vec![String::from("no/pe")];
    let result = IPTargets::new(list);
    assert!(result.is_err());
}

#[test]
fn returns_error_for_malformed_range_start() {
    let list = vec![String::from("nope-192.168.0.3")];
    let result = IPTargets::new(list);
    assert!(result.is_err());
}

#[test]
fn returns_error_for_malformed_range_end() {
    let list = vec![String::from("192.168.0.4-nope")];
    let result = IPTargets::new(list);
    assert!(result.is_err());
}