use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum FeedVersion {
Rss090,
Rss091Netscape,
Rss091Userland,
Rss092,
Rss10,
Rss20,
Atom03,
Atom10,
JsonFeed10,
JsonFeed11,
#[default]
Unknown,
}
impl FeedVersion {
#[must_use]
pub const fn as_str(&self) -> &'static str {
match self {
Self::Rss090 => "rss090",
Self::Rss091Netscape => "rss091n",
Self::Rss091Userland => "rss091u",
Self::Rss092 => "rss092",
Self::Rss10 => "rss10",
Self::Rss20 => "rss20",
Self::Atom03 => "atom03",
Self::Atom10 => "atom10",
Self::JsonFeed10 => "json10",
Self::JsonFeed11 => "json11",
Self::Unknown => "",
}
}
}
impl fmt::Display for FeedVersion {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.as_str())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_version_as_str() {
assert_eq!(FeedVersion::Rss20.as_str(), "rss20");
assert_eq!(FeedVersion::Atom10.as_str(), "atom10");
assert_eq!(FeedVersion::Unknown.as_str(), "");
}
#[test]
fn test_version_display() {
assert_eq!(format!("{}", FeedVersion::Rss20), "rss20");
assert_eq!(format!("{}", FeedVersion::Atom10), "atom10");
}
#[test]
fn test_version_default() {
let v: FeedVersion = FeedVersion::default();
assert_eq!(v, FeedVersion::Unknown);
}
}