#![allow(dead_code)]
use core::fmt;
use core::str::FromStr;
use flexstr_support::StringToFromBytes;
use inline_flexstr::InlineFlexStr;
pub fn test_from_str_success<S>(s: &str)
where
InlineFlexStr<S>: FromStr,
S: ?Sized + StringToFromBytes + fmt::Debug + PartialEq,
<InlineFlexStr<S> as FromStr>::Err: fmt::Debug,
{
let inline_str = InlineFlexStr::from_str(s).unwrap();
assert_eq!(inline_str.as_ref_type(), inline_str.as_ref_type()); }
pub fn test_from_str_error_too_long<S>(s: &str)
where
InlineFlexStr<S>: FromStr,
S: ?Sized + StringToFromBytes + fmt::Debug,
<InlineFlexStr<S> as FromStr>::Err: fmt::Debug + fmt::Display,
{
let err = InlineFlexStr::from_str(s).expect_err("test input should be too long to inline");
let _ = format!("{}", err);
}
#[cfg(feature = "bytes")]
pub fn test_from_str_bytes_success() {
let inline_str = InlineFlexStr::<[u8]>::from_str("test").unwrap();
assert_eq!(inline_str.as_ref_type(), b"test");
}
#[cfg(feature = "bytes")]
pub fn test_from_str_bytes_error() {
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let err = InlineFlexStr::<[u8]>::from_str(&long_str).unwrap_err();
assert_eq!(err.length, inline_flexstr::INLINE_CAPACITY + 1);
assert_eq!(err.inline_capacity, inline_flexstr::INLINE_CAPACITY);
}
#[cfg(all(feature = "std", feature = "osstr"))]
pub fn test_from_str_osstr_success() {
use std::ffi::OsStr;
let inline_str = InlineFlexStr::<OsStr>::from_str("test").unwrap();
assert_eq!(inline_str.as_ref_type(), OsStr::new("test"));
}
#[cfg(all(feature = "std", feature = "osstr"))]
pub fn test_from_str_osstr_error() {
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let err = InlineFlexStr::<std::ffi::OsStr>::from_str(&long_str).unwrap_err();
assert_eq!(err.length, inline_flexstr::INLINE_CAPACITY + 1);
assert_eq!(err.inline_capacity, inline_flexstr::INLINE_CAPACITY);
}
#[cfg(all(feature = "std", feature = "path"))]
pub fn test_from_str_path_success() {
use std::path::Path;
let inline_str = InlineFlexStr::<Path>::from_str("test").unwrap();
assert_eq!(inline_str.as_ref_type(), Path::new("test"));
}
#[cfg(all(feature = "std", feature = "path"))]
pub fn test_from_str_path_error() {
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let err = InlineFlexStr::<std::path::Path>::from_str(&long_str).unwrap_err();
assert_eq!(err.length, inline_flexstr::INLINE_CAPACITY + 1);
assert_eq!(err.inline_capacity, inline_flexstr::INLINE_CAPACITY);
}
#[cfg(feature = "cstr")]
pub fn test_from_str_cstr_success() {
let inline_str = InlineFlexStr::<core::ffi::CStr>::from_str("test").unwrap();
assert_eq!(inline_str.as_ref_type().to_bytes(), b"test");
}
#[cfg(feature = "cstr")]
pub fn test_from_str_cstr_error() {
use inline_flexstr::TooLongOrNulError;
let result: Result<InlineFlexStr<core::ffi::CStr>, TooLongOrNulError> =
InlineFlexStr::from_str("ab\0cd");
result.unwrap_err();
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let result: Result<InlineFlexStr<core::ffi::CStr>, TooLongOrNulError> =
InlineFlexStr::from_str(&long_str);
result.unwrap_err();
}