use crate::prelude::*;
enumeration! {
pub CastlingSide, [ King, Queen ]
}
impl CastlingSide {
#[inline]
#[must_use]
pub const fn new(king: File, rook: File) -> Option<Self> {
match king.cmp(&rook) {
std::cmp::Ordering::Less => Some(Self::King),
std::cmp::Ordering::Equal => None,
std::cmp::Ordering::Greater => Some(Self::Queen),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn detect() {
assert_eq!(CastlingSide::King, CastlingSide::new(File::_F, File::_G).unwrap());
assert_eq!(CastlingSide::King, CastlingSide::new(File::_A, File::_B).unwrap());
assert_eq!(CastlingSide::Queen, CastlingSide::new(File::_H, File::_C).unwrap());
assert_eq!(CastlingSide::Queen, CastlingSide::new(File::_F, File::_E).unwrap());
}
}