use thiserror::Error;
use super::FenError;
#[non_exhaustive]
#[derive(Debug, Error)]
pub enum PGNError {
#[error("Invalid FEN: {0}")]
InvalidFen(#[from] FenError),
#[error("Invalid PGN: {0}")]
InvalidPgn(String),
#[error("No such file or directory: {0}")]
NoSuchFile(#[from] std::io::Error),
#[error("Invalid or not supported metadata: {0}")]
InvalidMetadata(#[from] PGNMetadataError),
#[error("Invalid or not variant provided: {0}")]
InvalidVariant(String),
}
#[derive(Debug, Error)]
#[error("Invalid or not supported metadata: {metadata}")]
pub struct PGNMetadataError {
pub metadata: String,
}
impl PGNMetadataError {
pub fn new(metadata: String) -> Self {
PGNMetadataError { metadata }
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_pgn_metadata_error_new() {
let metadata = "Invalid metadata".to_string();
let error = PGNMetadataError::new(metadata.clone());
assert_eq!(error.metadata, metadata);
}
}