use core::fmt;
use flexstr::{FlexStr, ImmutableBytes, RefCountedMut};
#[allow(dead_code)]
pub fn test_mutation_immutable_bytes_borrowed<S, R>(s: &'static S)
where
S: ?Sized + ImmutableBytes + fmt::Debug + PartialEq,
R: RefCountedMut<S>,
{
let mut flex_str: FlexStr<S, R> = s.into();
assert!(flex_str.is_borrowed());
let s2 = flex_str.to_mut_type_fallback();
assert_eq!(s2, s);
assert!(flex_str.is_ref_counted());
let s2 = flex_str.to_mut_type_fallback();
assert_eq!(s2, s);
}
#[allow(dead_code)]
pub fn test_mutation_immutable_bytes_inlined<S, R>(s: &'static S)
where
S: ?Sized + ImmutableBytes + fmt::Debug + PartialEq,
R: RefCountedMut<S>,
{
let mut flex_str: FlexStr<S, R> = s.into();
flex_str = flex_str.into_owned();
assert!(flex_str.is_inlined());
let s2 = flex_str.to_mut_type_fallback();
assert_eq!(s2, s);
assert!(flex_str.is_ref_counted());
let s2 = flex_str.to_mut_type_fallback();
assert_eq!(s2, s);
}
#[allow(dead_code)]
pub fn test_mutation_immutable_bytes_ref_counted<S, R>(s: R)
where
S: ?Sized + ImmutableBytes + fmt::Debug + PartialEq,
R: RefCountedMut<S> + for<'a> Into<FlexStr<'a, S, R>>,
{
let mut flex_str: FlexStr<S, R> = s.clone().into();
assert!(flex_str.is_ref_counted());
let s2 = flex_str.to_mut_type_fallback();
assert_eq!(s2, &*s);
}
#[allow(dead_code)]
pub fn test_mutation_immutable_bytes_boxed<S, R>(s: S::Owned)
where
S: ?Sized + ImmutableBytes + fmt::Debug + PartialEq,
R: RefCountedMut<S>,
S::Owned: for<'a> Into<FlexStr<'a, S, R>> + Clone + AsRef<S>,
{
let mut flex_str: FlexStr<S, R> = s.clone().into();
assert!(flex_str.is_boxed());
let s2 = flex_str.to_mut_type_fallback();
assert_eq!(s2, s.as_ref());
}