ps_ecc/long/header/methods/
segment_distance.rs1use crate::long::LongEccHeader;
2
3impl LongEccHeader {
4 #[inline]
8 #[must_use]
9 pub const fn segment_distance(&self) -> u8 {
10 self.segment_length() / self.overlap_factor().count()
11 }
12}
13
14#[cfg(test)]
15mod tests {
16 use crate::long::{LongEccHeader, OverlapFactor};
17
18 type TestError = Box<dyn std::error::Error>;
19
20 #[test]
21 fn test_segment_distance_divides_by_overlap_count() -> Result<(), TestError> {
22 let cases = [
25 (OverlapFactor::Simple, 251),
26 (OverlapFactor::Double, 125),
27 (OverlapFactor::Triple, 83),
28 (OverlapFactor::Quadruple, 62),
29 ];
30
31 for (factor, expected) in cases {
32 let header = LongEccHeader::new(2, factor, 86, 50, 0)?;
33
34 assert_eq!(header.segment_distance(), expected);
35 }
36
37 Ok(())
38 }
39
40 #[test]
41 fn test_segment_distance_equals_segment_length_without_overlap() -> Result<(), TestError> {
42 let header = LongEccHeader::new(4, OverlapFactor::Simple, 90, 50, 0)?;
43
44 assert_eq!(header.segment_distance(), header.segment_length());
45
46 Ok(())
47 }
48}