use alloc::{borrow::Cow, string::String};
#[derive(Clone, Debug, Default, PartialEq, Eq)]
pub struct IcalBoolean<'a>(pub Cow<'a, str>);
impl IcalBoolean<'_> {
pub fn is_true(&self) -> bool {
self.0.eq_ignore_ascii_case("TRUE")
}
}
impl<'a> From<&'a str> for IcalBoolean<'a> {
fn from(value: &'a str) -> Self {
Self(Cow::Borrowed(value))
}
}
impl From<String> for IcalBoolean<'_> {
fn from(value: String) -> Self {
Self(Cow::Owned(value))
}
}
impl<'a> From<Cow<'a, str>> for IcalBoolean<'a> {
fn from(value: Cow<'a, str>) -> Self {
Self(value)
}
}
#[cfg(test)]
mod tests {
use crate::value::boolean::IcalBoolean;
#[test]
fn is_true_reads_both_cases() {
assert!(IcalBoolean::from("TRUE").is_true());
assert!(IcalBoolean::from("true").is_true());
assert!(!IcalBoolean::from("FALSE").is_true());
assert!(!IcalBoolean::from("false").is_true());
}
}