use unixstring::UnixString;
#[test]
fn empty_vec() {
let empty = UnixString::from_bytes(vec![]).unwrap();
assert_eq!(empty.to_str().unwrap(), "");
assert_eq!(empty.as_bytes(), &[]);
assert_eq!(empty.as_bytes_with_nul(), &[0]);
}
#[test]
fn size_one_vec() {
let one = UnixString::from_bytes(vec![b'1']).unwrap();
assert_eq!(one.to_str().unwrap(), "1");
assert_eq!(one.as_bytes(), &[b'1']);
assert_eq!(one.as_bytes_with_nul(), &[b'1', 0]);
}
#[test]
fn valid_bytes() {
let abc = UnixString::from_bytes(b"abc".to_vec()).unwrap();
assert_eq!(abc.to_str().unwrap(), "abc");
assert_eq!(abc.as_bytes(), b"abc".to_vec().as_slice());
assert_eq!(abc.as_bytes_with_nul(), b"abc\0".to_vec().as_slice());
}
#[test]
fn invalid_bytes_fails() {
let abc = UnixString::from_bytes(b"a\0bc".to_vec());
assert!(abc.is_err())
}
#[test]
fn from_bytes() {
let bytes_without_zero = vec![b'a', b'b', b'c'];
let bytes_with_nul_terminator = vec![b'a', b'b', b'c', 0];
let bytes_with_interior_nul = vec![b'a', 0, b'b', b'c'];
let unx = UnixString::from_bytes(bytes_without_zero).unwrap();
assert_eq!(unx.to_str().unwrap(), "abc");
assert_eq!(unx.as_bytes(), b"abc".to_vec());
assert_eq!(unx.as_bytes_with_nul(), b"abc\0".to_vec());
let unx = UnixString::from_bytes(bytes_with_nul_terminator).unwrap();
assert_eq!(unx.to_str().unwrap(), "abc");
assert_eq!(unx.as_bytes(), b"abc".to_vec());
assert_eq!(unx.as_bytes_with_nul(), b"abc\0".to_vec());
UnixString::from_bytes(bytes_with_interior_nul).unwrap_err();
}