use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
pub enum CapabilitySupport {
Supported,
Unsupported,
#[default]
Unknown,
}
impl CapabilitySupport {
#[must_use]
pub const fn is_supported(self) -> bool {
matches!(self, Self::Supported)
}
#[must_use]
pub const fn is_known(self) -> bool {
!matches!(self, Self::Unknown)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn is_supported_matches_only_supported() {
assert!(CapabilitySupport::Supported.is_supported());
assert!(!CapabilitySupport::Unsupported.is_supported());
assert!(!CapabilitySupport::Unknown.is_supported());
}
#[test]
fn is_known_matches_supported_and_unsupported() {
assert!(CapabilitySupport::Supported.is_known());
assert!(CapabilitySupport::Unsupported.is_known());
assert!(!CapabilitySupport::Unknown.is_known());
}
#[test]
fn default_is_unknown_and_not_known() {
let value = CapabilitySupport::default();
assert_eq!(value, CapabilitySupport::Unknown);
assert!(!value.is_known());
assert!(!value.is_supported());
}
}