#![allow(dead_code)]
use core::fmt;
use flexstr::{FlexStr, RefCounted};
use flexstr_support::StringToFromBytes;
pub fn test_try_from_flex_str_success<'s, T, S, R>(value: T)
where
T: core::convert::TryInto<FlexStr<'s, S, R>>,
T::Error: fmt::Debug,
S: ?Sized + StringToFromBytes + fmt::Debug + PartialEq,
R: RefCounted<S> + fmt::Debug,
{
let flex_str: FlexStr<'s, S, R> = value.try_into().unwrap();
assert_eq!(flex_str.as_ref_type(), flex_str.as_ref_type()); }
pub fn test_try_from_flex_str_error<'s, T, S, R>(value: T)
where
T: core::convert::TryInto<FlexStr<'s, S, R>>,
T::Error: fmt::Debug + fmt::Display,
S: ?Sized + StringToFromBytes + fmt::Debug,
R: RefCounted<S> + fmt::Debug,
{
let result: Result<FlexStr<'s, S, R>, T::Error> = value.try_into();
let err = result.unwrap_err();
let _ = format!("{}", err);
}
#[cfg(feature = "str")]
pub fn test_try_from_bytes_invalid_utf8<R>()
where
R: RefCounted<str> + core::fmt::Debug,
{
use core::str::Utf8Error;
let invalid_utf8: &[u8] = &[0xFF, 0xFF, 0xFF];
let result: Result<FlexStr<'_, str, R>, Utf8Error> = invalid_utf8.try_into();
let _err = result.unwrap_err(); }
#[cfg(feature = "str")]
pub fn test_try_from_vec_bytes_invalid_utf8<R>()
where
R: RefCounted<str> + fmt::Debug,
{
use alloc::string::FromUtf8Error;
let invalid_utf8 = alloc::vec![0xFF, 0xFF, 0xFF];
let result: Result<FlexStr<'static, str, R>, FromUtf8Error> = invalid_utf8.try_into();
let _err = result.unwrap_err();
}
#[cfg(all(feature = "str", feature = "cstr"))]
pub fn test_try_from_cstring_invalid_utf8<R>()
where
R: RefCounted<str>,
{
use alloc::ffi::{CString, IntoStringError};
let cstring = CString::new(b"test\0").unwrap();
let result: Result<FlexStr<'static, str, R>, IntoStringError> = cstring.try_into();
let _flex_str = result.unwrap();
}
#[cfg(feature = "cstr")]
pub fn test_try_from_str_cstr<R>()
where
R: RefCounted<core::ffi::CStr> + fmt::Debug,
{
use flexstr::{FlexStr, InteriorNulError};
let s: &str = "test";
let result: Result<FlexStr<'_, core::ffi::CStr, R>, InteriorNulError> = s.try_into();
let flex_str = result.unwrap();
assert_eq!(flex_str.as_ref_type().to_bytes(), b"test");
let s_with_nul: &str = "test\0middle";
let result: Result<FlexStr<'_, core::ffi::CStr, R>, InteriorNulError> = s_with_nul.try_into();
result.unwrap_err();
}
#[cfg(feature = "cstr")]
pub fn test_try_from_bytes_cstr<R>()
where
R: RefCounted<core::ffi::CStr> + fmt::Debug,
{
use flexstr::{FlexStr, InteriorNulError};
let bytes: &[u8] = b"test";
let result: Result<FlexStr<'_, core::ffi::CStr, R>, InteriorNulError> = bytes.try_into();
let flex_str = result.unwrap();
assert_eq!(flex_str.as_ref_type().to_bytes(), b"test");
let bytes_with_nul: &[u8] = b"test\0middle";
let result: Result<FlexStr<'_, core::ffi::CStr, R>, InteriorNulError> =
bytes_with_nul.try_into();
result.unwrap_err();
}
#[cfg(all(feature = "str", feature = "std"))]
pub fn test_try_from_osstr_str<R>()
where
R: RefCounted<str> + fmt::Debug,
{
use flexstr::FlexStr;
use std::ffi::OsStr;
let os_str = OsStr::new("test");
let result: Result<FlexStr<'_, str, R>, core::str::Utf8Error> = os_str.try_into();
let flex_str = result.unwrap();
assert_eq!(flex_str.as_ref_type(), "test");
}
#[cfg(all(feature = "str", feature = "std"))]
pub fn test_try_from_path_str<R>()
where
R: RefCounted<str> + fmt::Debug,
{
use flexstr::FlexStr;
use std::path::Path;
let path = Path::new("test");
let result: Result<FlexStr<'_, str, R>, core::str::Utf8Error> = path.try_into();
let flex_str = result.unwrap();
assert_eq!(flex_str.as_ref_type(), "test");
}
#[cfg(feature = "str")]
pub fn test_try_from_vec_u8_str<R>()
where
R: RefCounted<str> + fmt::Debug,
{
use alloc::string::FromUtf8Error;
use flexstr::FlexStr;
let vec = b"test".to_vec();
let result: Result<FlexStr<'static, str, R>, FromUtf8Error> = vec.try_into();
let flex_str = result.unwrap();
assert_eq!(flex_str.as_ref_type(), "test");
let invalid_vec = vec![0xFF, 0xFF, 0xFF];
let result: Result<FlexStr<'static, str, R>, FromUtf8Error> = invalid_vec.try_into();
result.unwrap_err();
}
#[cfg(all(feature = "str", feature = "cstr"))]
pub fn test_try_from_cstring_str<R>()
where
R: RefCounted<str> + fmt::Debug,
{
use alloc::ffi::{CString, IntoStringError};
use flexstr::FlexStr;
let cstring = CString::new("test").unwrap();
let result: Result<FlexStr<'static, str, R>, IntoStringError> = cstring.try_into();
let flex_str = result.unwrap();
assert_eq!(flex_str.as_ref_type(), "test");
}