Skip to main content

ps_ecc/long/header/methods/
header_parity.rs

1use crate::long::LongEccHeader;
2
3impl LongEccHeader {
4    /// Returns the parity bytes protecting the header itself.
5    #[inline]
6    #[must_use]
7    pub const fn header_parity(&self) -> [u8; 8] {
8        self.header_parity
9    }
10}
11
12#[cfg(test)]
13mod tests {
14    use crate::long::header::RS;
15    use crate::long::{LongEccHeader, OverlapFactor};
16
17    type TestError = Box<dyn std::error::Error>;
18
19    #[test]
20    fn test_header_parity_matches_generated() -> Result<(), TestError> {
21        let header = LongEccHeader::new(3, OverlapFactor::Triple, 88, 50, 7)?;
22
23        let expected = RS.generate_parity(&header.to_bytes()[..24])?;
24
25        assert_eq!(&header.header_parity()[..], &expected[..]);
26
27        Ok(())
28    }
29
30    #[test]
31    fn test_header_parity_roundtrips_through_to_bytes() -> Result<(), TestError> {
32        let header = LongEccHeader::new(2, OverlapFactor::Simple, 86, 50, 0)?;
33
34        assert_eq!(header.to_bytes()[24..32], header.header_parity());
35
36        Ok(())
37    }
38}