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}