#![allow(dead_code)]
use core::fmt;
use flexstr_support::StringToFromBytes;
use inline_flexstr::InlineFlexStr;
pub fn test_try_from_success<T, S>(value: T)
where
T: core::convert::TryInto<InlineFlexStr<S>>,
T::Error: fmt::Debug,
S: ?Sized + StringToFromBytes + fmt::Debug + PartialEq,
{
let inline_str: InlineFlexStr<S> = value.try_into().unwrap();
assert_eq!(inline_str.as_ref_type(), inline_str.as_ref_type()); }
pub fn test_try_from_error<T, S>(value: T)
where
T: core::convert::TryInto<InlineFlexStr<S>>,
T::Error: fmt::Debug + fmt::Display,
S: ?Sized + StringToFromBytes + fmt::Debug,
{
let result: Result<InlineFlexStr<S>, T::Error> = value.try_into();
let err = result.unwrap_err();
let _ = format!("{}", err);
}
#[cfg(feature = "bytes")]
pub fn test_try_from_bytes_too_long() {
let long_bytes = vec![0u8; inline_flexstr::INLINE_CAPACITY + 1];
let result: Result<InlineFlexStr<[u8]>, inline_flexstr::TooLongForInlining> =
long_bytes.as_slice().try_into();
let err = result.unwrap_err();
assert_eq!(err.length, inline_flexstr::INLINE_CAPACITY + 1);
assert_eq!(err.inline_capacity, inline_flexstr::INLINE_CAPACITY);
}
#[cfg(feature = "bytes")]
pub fn test_try_from_str_too_long() {
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let result: Result<InlineFlexStr<[u8]>, inline_flexstr::TooLongForInlining> =
long_str.as_str().try_into();
let _err = result.unwrap_err();
}
#[cfg(all(feature = "std", feature = "osstr"))]
pub fn test_try_from_osstr_too_long() {
use std::ffi::OsStr;
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let os_str = OsStr::new(&long_str);
let result: Result<InlineFlexStr<OsStr>, inline_flexstr::TooLongForInlining> =
os_str.try_into();
let _err = result.unwrap_err();
}
#[cfg(all(feature = "std", feature = "osstr"))]
pub fn test_try_from_str_osstr_too_long() {
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let result: Result<InlineFlexStr<std::ffi::OsStr>, inline_flexstr::TooLongForInlining> =
long_str.as_str().try_into();
let _err = result.unwrap_err();
}
#[cfg(all(feature = "std", feature = "osstr", feature = "path"))]
pub fn test_try_from_path_osstr_too_long() {
use std::path::Path;
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let path = Path::new(&long_str);
let result: Result<InlineFlexStr<std::ffi::OsStr>, inline_flexstr::TooLongForInlining> =
path.try_into();
let _err = result.unwrap_err();
}
#[cfg(all(feature = "std", feature = "path"))]
pub fn test_try_from_path_too_long() {
use std::path::Path;
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let path = Path::new(&long_str);
let result: Result<InlineFlexStr<Path>, inline_flexstr::TooLongForInlining> = path.try_into();
let _err = result.unwrap_err();
}
#[cfg(all(feature = "std", feature = "path"))]
pub fn test_try_from_str_path_too_long() {
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let result: Result<InlineFlexStr<std::path::Path>, inline_flexstr::TooLongForInlining> =
long_str.as_str().try_into();
let _err = result.unwrap_err();
}
#[cfg(all(feature = "std", feature = "path"))]
pub fn test_try_from_osstr_path_too_long() {
use std::ffi::OsStr;
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let os_str = OsStr::new(&long_str);
let result: Result<InlineFlexStr<std::path::Path>, inline_flexstr::TooLongForInlining> =
os_str.try_into();
let _err = result.unwrap_err();
}
#[cfg(feature = "cstr")]
pub fn test_try_from_str_cstr() {
use inline_flexstr::TooLongOrNulError;
let s: &str = "test";
let result: Result<InlineFlexStr<core::ffi::CStr>, TooLongOrNulError> = s.try_into();
let inline_str = result.unwrap();
assert_eq!(inline_str.as_ref_type().to_bytes(), b"test");
let s_with_nul: &str = "ab\0cd";
let result: Result<InlineFlexStr<core::ffi::CStr>, TooLongOrNulError> = s_with_nul.try_into();
result.unwrap_err();
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let result: Result<InlineFlexStr<core::ffi::CStr>, TooLongOrNulError> =
long_str.as_str().try_into();
result.unwrap_err();
}
#[cfg(feature = "cstr")]
pub fn test_try_from_bytes_cstr() {
use inline_flexstr::TooLongOrNulError;
let bytes: &[u8] = b"test";
let result: Result<InlineFlexStr<core::ffi::CStr>, TooLongOrNulError> = bytes.try_into();
let inline_str = result.unwrap();
assert_eq!(inline_str.as_ref_type().to_bytes(), b"test");
let bytes_with_nul: &[u8] = b"ab\0cd";
let result: Result<InlineFlexStr<core::ffi::CStr>, TooLongOrNulError> =
bytes_with_nul.try_into();
result.unwrap_err();
let long_bytes = vec![b'x'; inline_flexstr::INLINE_CAPACITY + 1];
let result: Result<InlineFlexStr<core::ffi::CStr>, TooLongOrNulError> =
long_bytes.as_slice().try_into();
result.unwrap_err();
}
#[cfg(feature = "str")]
pub fn test_try_from_bytes_str() {
use inline_flexstr::TooLongOrUtf8Error;
let bytes: &[u8] = b"test";
let result: Result<InlineFlexStr<str>, TooLongOrUtf8Error> = bytes.try_into();
let inline_str = result.unwrap();
assert_eq!(inline_str.as_ref_type(), "test");
let invalid_bytes: &[u8] = &[0xFF, 0xFF, 0xFF];
let result: Result<InlineFlexStr<str>, TooLongOrUtf8Error> = invalid_bytes.try_into();
result.unwrap_err();
let long_bytes = vec![b'x'; inline_flexstr::INLINE_CAPACITY + 1];
let result: Result<InlineFlexStr<str>, TooLongOrUtf8Error> = long_bytes.as_slice().try_into();
result.unwrap_err();
}
#[cfg(all(feature = "str", feature = "std"))]
pub fn test_try_from_osstr_str() {
use inline_flexstr::TooLongOrUtf8Error;
use std::ffi::OsStr;
let os_str = OsStr::new("test");
let result: Result<InlineFlexStr<str>, TooLongOrUtf8Error> = os_str.try_into();
let inline_str = result.unwrap();
assert_eq!(inline_str.as_ref_type(), "test");
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let os_str = OsStr::new(&long_str);
let result: Result<InlineFlexStr<str>, TooLongOrUtf8Error> = os_str.try_into();
result.unwrap_err();
}
#[cfg(all(feature = "str", feature = "std"))]
pub fn test_try_from_path_str() {
use inline_flexstr::TooLongOrUtf8Error;
use std::path::Path;
let path = Path::new("test");
let result: Result<InlineFlexStr<str>, TooLongOrUtf8Error> = path.try_into();
let inline_str = result.unwrap();
assert_eq!(inline_str.as_ref_type(), "test");
let long_str = "x".repeat(inline_flexstr::INLINE_CAPACITY + 1);
let path = Path::new(&long_str);
let result: Result<InlineFlexStr<str>, TooLongOrUtf8Error> = path.try_into();
result.unwrap_err();
}