Skip to main content

wavekat_vad/
error.rs

1/// Errors that can occur during voice activity detection.
2#[derive(Debug, thiserror::Error)]
3pub enum VadError {
4    /// The provided sample rate is not supported by the backend.
5    #[error("unsupported sample rate: {0} Hz")]
6    InvalidSampleRate(u32),
7
8    /// The provided frame size does not match the expected size for the backend.
9    #[error("invalid frame size: got {got} samples, expected {expected}")]
10    InvalidFrameSize {
11        /// The number of samples provided.
12        got: usize,
13        /// The number of samples expected.
14        expected: usize,
15    },
16
17    /// An error originating from the underlying VAD backend.
18    #[error("backend error: {0}")]
19    BackendError(String),
20}
21
22#[cfg(test)]
23mod tests {
24    use super::*;
25
26    #[test]
27    fn error_display_messages() {
28        let err = VadError::InvalidSampleRate(44100);
29        assert_eq!(err.to_string(), "unsupported sample rate: 44100 Hz");
30
31        let err = VadError::InvalidFrameSize {
32            got: 100,
33            expected: 160,
34        };
35        assert_eq!(
36            err.to_string(),
37            "invalid frame size: got 100 samples, expected 160"
38        );
39
40        let err = VadError::BackendError("something went wrong".into());
41        assert_eq!(err.to_string(), "backend error: something went wrong");
42    }
43}