use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "UPPERCASE")]
#[non_exhaustive]
pub enum LichessTitle {
Gm,
Wgm,
Im,
Wim,
Fm,
Wfm,
Nm,
Cm,
Wcm,
Wnm,
Lm,
Bot,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn serializes_to_uppercase_codes() {
assert_eq!(serde_json::to_string(&LichessTitle::Gm).unwrap(), "\"GM\"");
assert_eq!(
serde_json::to_string(&LichessTitle::Wgm).unwrap(),
"\"WGM\""
);
assert_eq!(
serde_json::to_string(&LichessTitle::Bot).unwrap(),
"\"BOT\""
);
}
#[test]
fn deserializes_from_uppercase_codes() {
assert_eq!(
serde_json::from_str::<LichessTitle>("\"WIM\"").unwrap(),
LichessTitle::Wim
);
assert_eq!(
serde_json::from_str::<LichessTitle>("\"LM\"").unwrap(),
LichessTitle::Lm
);
}
}