blob: e1ed92b3b2c7f1bdb60ec8ee776675f718dacb11 [file] [log] [blame]
extern crate ascii;
use ascii::{AsciiChar, AsciiStr, AsAsciiStr};
#[cfg(feature = "std")]
use ascii::{AsciiString, IntoAsciiString};
#[test]
#[cfg(feature = "std")]
fn ascii_vec() {
let test = b"( ;";
let a = AsciiStr::from_ascii(test).unwrap();
assert_eq!(test.as_ascii_str(), Ok(a));
assert_eq!("( ;".as_ascii_str(), Ok(a));
let v = test.to_vec();
assert_eq!(v.as_ascii_str(), Ok(a));
assert_eq!("( ;".to_string().as_ascii_str(), Ok(a));
}
#[test]
fn to_ascii() {
assert!("zoä华".as_ascii_str().is_err());
assert!([127_u8, 128, 255].as_ascii_str().is_err());
let arr = [AsciiChar::ParenOpen, AsciiChar::Space, AsciiChar::Semicolon];
let a: &AsciiStr = (&arr[..]).into();
assert_eq!(b"( ;".as_ascii_str(), Ok(a));
assert_eq!("( ;".as_ascii_str(), Ok(a));
}
#[test]
#[cfg(feature = "std")]
fn into_ascii() {
let arr = [AsciiChar::ParenOpen, AsciiChar::Space, AsciiChar::Semicolon];
let v = AsciiString::from(arr.to_vec());
assert_eq!(b"( ;".to_vec().into_ascii_string(), Ok(v.clone()));
assert_eq!("( ;".to_string().into_ascii_string(), Ok(v.clone()));
assert_eq!(b"( ;", AsRef::<[u8]>::as_ref(&v));
let err = "zoä华".to_string().into_ascii_string().unwrap_err();
assert_eq!(Err(err.ascii_error()), "zoä华".as_ascii_str());
assert_eq!(err.into_source(), "zoä华");
let err = vec![127, 128, 255].into_ascii_string().unwrap_err();
assert_eq!(Err(err.ascii_error()), [127, 128, 255].as_ascii_str());
assert_eq!(err.into_source(), &[127, 128, 255]);
}
#[test]
#[cfg(feature = "std")]
fn compare_ascii_string_ascii_str() {
let v = b"abc";
let ascii_string = AsciiString::from_ascii(&v[..]).unwrap();
let ascii_str = AsciiStr::from_ascii(v).unwrap();
assert!(ascii_string == ascii_str);
assert!(ascii_str == ascii_string);
}
#[test]
#[cfg(feature = "std")]
fn compare_ascii_string_string() {
let v = b"abc";
let string = String::from_utf8(v.to_vec()).unwrap();
let ascii_string = AsciiString::from_ascii(&v[..]).unwrap();
assert!(string == ascii_string);
assert!(ascii_string == string);
}
#[test]
#[cfg(feature = "std")]
fn compare_ascii_str_string() {
let v = b"abc";
let string = String::from_utf8(v.to_vec()).unwrap();
let ascii_str = AsciiStr::from_ascii(&v[..]).unwrap();
assert!(string == ascii_str);
assert!(ascii_str == string);
}
#[test]
#[cfg(feature = "std")]
fn compare_ascii_string_str() {
let v = b"abc";
let sstr = ::std::str::from_utf8(v).unwrap();
let ascii_string = AsciiString::from_ascii(&v[..]).unwrap();
assert!(sstr == ascii_string);
assert!(ascii_string == sstr);
}
#[test]
fn compare_ascii_str_str() {
let v = b"abc";
let sstr = ::std::str::from_utf8(v).unwrap();
let ascii_str = AsciiStr::from_ascii(v).unwrap();
assert!(sstr == ascii_str);
assert!(ascii_str == sstr);
}
#[test]
fn compare_ascii_str_slice() {
let b = b"abc".as_ascii_str().unwrap();
let c = b"ab".as_ascii_str().unwrap();
assert_eq!(&b[..2], &c[..]);
assert_eq!(c[1].as_char(), 'b');
}
#[test]
#[cfg(feature = "std")]
fn compare_ascii_string_slice() {
let b = AsciiString::from_ascii("abc").unwrap();
let c = AsciiString::from_ascii("ab").unwrap();
assert_eq!(&b[..2], &c[..]);
assert_eq!(c[1].as_char(), 'b');
}