dbus-server-address-parser 1.0.1

Library to encode and decode DBus server address
Documentation
use dbus_server_address_parser::Address;
use std::convert::TryFrom;

#[test]
fn test_data() {
    let data = include_str!("test.data");
    for l in data.lines() {
        match Address::decode(l) {
            Ok(addresses_1) => {
                let addresses_1_str = Address::encode(&addresses_1);
                match Address::decode(&addresses_1_str) {
                    Ok(addresses_2) => {
                        assert_eq!(addresses_1, addresses_2);
                    }
                    Err(e) => panic!("Could not decode again: {} {} {}", e, l, addresses_1_str),
                }
            }
            Err(e) => panic!("Could not decode: {} {}", e, l),
        }
    }
}

#[test]
fn test_error_data() {
    let data = include_str!("test_error.data");
    for l in data.lines() {
        match Address::decode(l) {
            Ok(addresses) => panic!("Could decode: {} {:?}", l, addresses),
            Err(e) => println!("Error: {}", e),
        }
    }
}

#[test]
fn test_tcp_1() {
    let address = Address::try_from("tcp:host=localhost").unwrap();
    assert!(address.is_listenable());
    assert!(!address.is_connectable());
}

#[test]
fn test_tcp_2() {
    let address = Address::try_from("tcp:host=localhost,port=123").unwrap();
    assert!(address.is_listenable());
    assert!(address.is_connectable());
}

#[test]
fn test_nonce_tcp_1() {
    let address = Address::try_from("nonce-tcp:host=localhost").unwrap();
    assert!(address.is_listenable());
    assert!(!address.is_connectable());
}

#[test]
fn test_nonce_tcp_2() {
    let address =
        Address::try_from("nonce-tcp:host=localhost,port=123,noncefile=/tmp/nonce").unwrap();
    assert!(address.is_listenable());
    assert!(address.is_connectable());
}

#[test]
fn test_unix_runtime() {
    let address = Address::try_from("unix:runtime=yes").unwrap();
    assert!(address.is_listenable());
    assert!(!address.is_connectable());
}

#[test]
fn test_unix_tmpdir() {
    let address = Address::try_from("unix:tmpdir=/tmp").unwrap();
    assert!(address.is_listenable());
    assert!(!address.is_connectable());
}

#[test]
fn test_unix_dir() {
    let address = Address::try_from("unix:dir=/tmp").unwrap();
    assert!(address.is_listenable());
    assert!(!address.is_connectable());
}

#[test]
fn test_unix_abstract() {
    let address = Address::try_from("unix:abstract=/tmp/dbus-U8OSdmf7").unwrap();
    assert!(address.is_listenable());
    assert!(address.is_connectable());
}

#[test]
fn test_launchd() {
    let address = Address::try_from("launchd:env=KEY%3dVALUE").unwrap();
    assert!(address.is_listenable());
    assert!(address.is_connectable());
}

#[test]
fn test_unixexec() {
    let address = Address::try_from("unixexec:path=/bin/example,argv0=example,argv1=a").unwrap();
    assert!(!address.is_listenable());
    assert!(address.is_connectable());
}

#[test]
fn test_systemd() {
    let address = Address::try_from("systemd:").unwrap();
    assert!(address.is_listenable());
    assert!(!address.is_connectable());
}

#[cfg(target_family = "windows")]
#[test]
fn test_autolaunch() {
    let address = Address::try_from("autolaunch:").unwrap();
    assert!(address.is_listenable());
    assert!(address.is_connectable());
}

#[cfg(target_family = "unix")]
#[test]
fn test_autolaunch() {
    let address = Address::try_from("autolaunch:").unwrap();
    assert!(!address.is_listenable());
    assert!(address.is_connectable());
}