use thiserror::Error;
#[derive(Debug, Error, PartialEq)]
#[error("Invalid FEN: {fen}")]
pub struct FenError {
pub fen: String,
}
impl FenError {
pub fn new(fen: String) -> Self {
FenError { fen }
}
}
#[derive(Debug, Error, PartialEq)]
#[error("Invalid piece representation: {piece_repr}")]
pub struct PieceReprError {
pub piece_repr: char,
}
impl PieceReprError {
pub fn new(piece_repr: char) -> Self {
PieceReprError { piece_repr }
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_fen_error_creation() {
let fen = "invalid_fen".to_string();
let error = FenError::new(fen.clone());
assert_eq!(error.fen, fen);
assert_eq!(format!("{}", error), format!("Invalid FEN: {}", fen));
}
#[test]
fn test_piece_repr_error_creation() {
let piece_repr = 'X';
let error = PieceReprError::new(piece_repr);
assert_eq!(error.piece_repr, piece_repr);
assert_eq!(
format!("{}", error),
format!("Invalid piece representation: {}", piece_repr)
);
}
}