dstar_gateway_core/slowdata/
error.rs

1//! Errors raised by the slow data assembler.
2
3/// Slow data assembly errors.
4#[derive(Debug, Clone, thiserror::Error, PartialEq, Eq)]
5#[non_exhaustive]
6pub enum SlowDataError {
7    /// Block length byte (low nibble of byte 0) is zero.
8    #[error("slow data block has zero length")]
9    ZeroLength,
10
11    /// Block length exceeds the buffer capacity (max 18 bytes after the type byte).
12    #[error("slow data block length {got} exceeds max 18")]
13    LengthOverflow {
14        /// Observed length value.
15        got: usize,
16    },
17
18    /// Buffer for the assembler ran out of room — should not happen
19    /// in well-formed input.
20    #[error("slow data assembler internal buffer overflow")]
21    BufferOverflow,
22}
23
24#[cfg(test)]
25mod tests {
26    use super::*;
27
28    #[test]
29    fn zero_length_display() {
30        let err = SlowDataError::ZeroLength;
31        assert!(err.to_string().contains("zero length"));
32    }
33
34    #[test]
35    fn length_overflow_display() {
36        let err = SlowDataError::LengthOverflow { got: 25 };
37        assert!(err.to_string().contains("25"));
38    }
39
40    #[test]
41    fn buffer_overflow_display() {
42        let err = SlowDataError::BufferOverflow;
43        assert_eq!(
44            err.to_string(),
45            "slow data assembler internal buffer overflow"
46        );
47    }
48}