use geometry_io_wkt::WktError;
#[derive(Debug, Clone, PartialEq)]
pub enum EwktError {
InvalidSrid {
reason: &'static str,
pos: usize,
},
Wkt(WktError),
}
impl core::fmt::Display for EwktError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
EwktError::InvalidSrid { reason, pos } => {
write!(f, "invalid SRID prefix: {reason} at byte {pos}")
}
EwktError::Wkt(e) => write!(f, "invalid WKT body: {e}"),
}
}
}
#[cfg(feature = "std")]
impl std::error::Error for EwktError {}
#[cfg(test)]
mod tests {
use alloc::format;
use geometry_io_wkt::WktError;
use super::EwktError;
#[test]
fn invalid_srid_display() {
let e = EwktError::InvalidSrid {
reason: "expected ';'",
pos: 9,
};
assert_eq!(
format!("{e}"),
"invalid SRID prefix: expected ';' at byte 9"
);
}
#[test]
fn wkt_display_includes_the_inner_message() {
let e = EwktError::Wkt(WktError::UnexpectedEof);
assert_eq!(format!("{e}"), "invalid WKT body: unexpected end of input");
}
}