bedrs/traits/
errors.rs

1use thiserror::Error;
2
3#[derive(Error, Debug, PartialEq)]
4#[error(transparent)]
5pub enum SetError {
6    #[error("The interval set is unsorted.")]
7    UnsortedSet,
8
9    #[error("The interval set is empty.")]
10    EmptySet,
11
12    #[error("The provided intervals are not sorted.")]
13    UnsortedIntervals,
14
15    #[error("The maximum interval length is unknown")]
16    MissingMaxLen,
17
18    #[error("Sample size is larger than the number of intervals.")]
19    SampleSizeTooLarge,
20
21    #[error("Provided fraction {frac} is oversized. Must be (0, 1]")]
22    FractionUnbounded { frac: f64 },
23
24    #[error("Provided value must be greater than 0")]
25    ZeroOrNegative,
26
27    #[error("Cannot accept a strand input that is unknown")]
28    CannotAcceptUnknownStrand,
29}
30
31#[cfg(test)]
32mod testing {
33    use super::*;
34
35    #[test]
36    fn test_set_error() {
37        let err = SetError::UnsortedSet;
38        assert_eq!(format!("{err}"), "The interval set is unsorted.");
39        let err = SetError::EmptySet;
40        assert_eq!(format!("{err}"), "The interval set is empty.");
41        let err = SetError::UnsortedIntervals;
42        assert_eq!(format!("{err}"), "The provided intervals are not sorted.");
43        let err = SetError::MissingMaxLen;
44        assert_eq!(format!("{err}"), "The maximum interval length is unknown");
45        let err = SetError::SampleSizeTooLarge;
46        assert_eq!(
47            format!("{err}"),
48            "Sample size is larger than the number of intervals."
49        );
50        let err = SetError::FractionUnbounded { frac: 1.0 };
51        assert_eq!(
52            format!("{err}"),
53            "Provided fraction 1 is oversized. Must be (0, 1]"
54        );
55        let err = SetError::ZeroOrNegative;
56        assert_eq!(format!("{err}"), "Provided value must be greater than 0");
57        let err = SetError::CannotAcceptUnknownStrand;
58        assert_eq!(
59            format!("{err}"),
60            "Cannot accept a strand input that is unknown"
61        );
62    }
63
64    #[test]
65    fn test_set_error_debug() {
66        let err = SetError::UnsortedSet;
67        assert_eq!(format!("{err:?}"), "UnsortedSet");
68    }
69}