use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum LichessColor {
White,
Black,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub enum LichessSpeed {
UltraBullet,
Bullet,
Blitz,
Rapid,
Classical,
Correspondence,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub enum LichessVariantKey {
Standard,
Chess960,
Crazyhouse,
Antichess,
Atomic,
Horde,
KingOfTheHill,
RacingKings,
ThreeCheck,
FromPosition,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub struct LichessOk {
pub ok: bool,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn color_uses_lowercase() {
assert_eq!(
serde_json::to_string(&LichessColor::Black).unwrap(),
"\"black\""
);
}
#[test]
fn speed_uses_camel_case() {
assert_eq!(
serde_json::from_str::<LichessSpeed>("\"ultraBullet\"").unwrap(),
LichessSpeed::UltraBullet
);
}
#[test]
fn variant_key_uses_camel_case() {
assert_eq!(
serde_json::to_string(&LichessVariantKey::KingOfTheHill).unwrap(),
"\"kingOfTheHill\""
);
assert_eq!(
serde_json::from_str::<LichessVariantKey>("\"chess960\"").unwrap(),
LichessVariantKey::Chess960
);
}
}