chess_lab/common/errors/
pgn.rs1use thiserror::Error;
2
3use super::FenError;
4
5#[non_exhaustive]
8#[derive(Debug, Error)]
9pub enum PGNError {
10 #[error("Invalid FEN: {0}")]
12 InvalidFen(#[from] FenError),
13 #[error("Invalid PGN: {0}")]
15 InvalidPgn(String),
16 #[error("No such file or directory: {0}")]
18 NoSuchFile(#[from] std::io::Error),
19 #[error("Invalid or not supported metadata: {0}")]
21 InvalidMetadata(#[from] PGNMetadataError),
22 #[error("Invalid or not variant provided: {0}")]
24 InvalidVariant(String),
25}
26
27#[derive(Debug, Error)]
33#[error("Invalid or not supported metadata: {metadata}")]
34pub struct PGNMetadataError {
35 pub metadata: String,
37}
38
39impl PGNMetadataError {
40 pub fn new(metadata: String) -> Self {
52 PGNMetadataError { metadata }
53 }
54}
55
56#[cfg(test)]
57mod tests {
58 use super::*;
59
60 #[test]
61 fn test_pgn_metadata_error_new() {
62 let metadata = "Invalid metadata".to_string();
63 let error = PGNMetadataError::new(metadata.clone());
64 assert_eq!(error.metadata, metadata);
65 }
66}