unixstring 0.2.7

An FFI-friendly null-terminated byte string
Documentation
use std::{
    ffi::{CStr, CString, OsStr},
    path::Path,
};

use unixstring::UnixString;

#[test]
fn partial_eq_str() {
    fn assert_equal(string: &str, unix: UnixString) {
        assert!(string == unix);
        assert!(unix == string);
        assert!(unix.eq(&string));
        assert!((&string).eq(&unix));
    }

    let lipsum = "lorem ipsum";
    let lipsum_unx = UnixString::from_string(lipsum.into()).unwrap();

    assert_equal(lipsum, lipsum_unx);

    let empty_unx = UnixString::new();
    assert_equal("", empty_unx);

    let hello_world = "hello_world";
    let hello_worl_unx = UnixString::from_string("hello_worl".into()).unwrap();
    assert!(hello_world != hello_worl_unx);

    let hello_worldd_unx = UnixString::from_string("hello_worldd".into()).unwrap();
    assert!(hello_world != hello_worldd_unx);
}

#[test]
fn partial_eq_os_str() {
    fn assert_equal(string: &OsStr, unix: UnixString) {
        assert!(string == unix);
        assert!(unix == string);
        assert!(unix.eq(&string));
        assert!((&string).eq(&unix));
    }

    let lipsum = OsStr::new("lorem ipsum");
    let lipsum_unx = UnixString::from_os_string(lipsum.into()).unwrap();

    assert_equal(lipsum, lipsum_unx);

    let empty_unx = UnixString::new();
    assert_equal(OsStr::new(""), empty_unx);

    let hello_world = OsStr::new("hello_world");
    let hello_worl_unx = UnixString::from_string("hello_worl".into()).unwrap();
    assert!(hello_world != hello_worl_unx);

    let hello_worldd_unx = UnixString::from_string("hello_worldd".into()).unwrap();
    assert!(hello_world != hello_worldd_unx);
}

#[test]
fn partial_eq_c_str() {
    fn assert_equal(string: &CStr, unix: UnixString) {
        assert!(string == unix);
        assert!(unix == string);
        assert!(unix.eq(&string));
        assert!((&string).eq(&unix));
    }

    let lipsum = CString::new("lorem ipsum").unwrap();
    let lipsum_unx = UnixString::from_cstring(lipsum.clone());

    assert_equal(&lipsum, lipsum_unx);

    let empty_unx = UnixString::new();
    assert_equal(&CString::new("").unwrap(), empty_unx);

    let hello_world = CString::new("hello_world").unwrap();
    let hello_worl_unx = UnixString::from_string("hello_worl".into()).unwrap();
    assert!(&*hello_world != hello_worl_unx);

    let hello_worldd_unx = UnixString::from_string("hello_worldd".into()).unwrap();
    assert!(&*hello_world != hello_worldd_unx);
}

#[test]
fn partial_eq_path() {
    fn assert_equal(string: &Path, unix: UnixString) {
        assert!(string == unix);
        assert!(unix == string);
        assert!(unix.eq(&string));
        assert!((&string).eq(&unix));
    }

    let lipsum = Path::new("lorem ipsum");
    let lipsum_unx = UnixString::from_pathbuf(lipsum.into()).unwrap();

    assert_equal(&lipsum, lipsum_unx);

    let empty_unx = UnixString::new();
    assert_equal(Path::new(""), empty_unx);

    let hello_world = Path::new("hello_world");
    let hello_worl_unx = UnixString::from_string("hello_worl".into()).unwrap();
    assert!(&*hello_world != hello_worl_unx);

    let hello_worldd_unx = UnixString::from_string("hello_worldd".into()).unwrap();
    assert!(&*hello_world != hello_worldd_unx);
}