ps_ecc/long/header/methods/
parity.rs1use crate::long::LongEccHeader;
2
3impl LongEccHeader {
4 #[inline]
6 #[must_use]
7 pub const fn parity(&self) -> u8 {
8 self.parity & 0x3F
9 }
10}
11
12#[cfg(test)]
13mod tests {
14 use crate::long::{LongEccHeader, OverlapFactor};
15 use crate::MAX_PARITY;
16
17 type TestError = Box<dyn std::error::Error>;
18
19 #[test]
20 fn test_parity_masks_overlap_factor() -> Result<(), TestError> {
21 for factor in [
22 OverlapFactor::Simple,
23 OverlapFactor::Double,
24 OverlapFactor::Triple,
25 OverlapFactor::Quadruple,
26 ] {
27 let header = LongEccHeader::new(5, factor, 92, 50, 0)?;
28
29 assert_eq!(header.parity(), 5);
30 }
31
32 Ok(())
33 }
34
35 #[test]
36 fn test_parity_zero() -> Result<(), TestError> {
37 let header = LongEccHeader::new(0, OverlapFactor::Simple, 82, 50, 0)?;
38
39 assert_eq!(header.parity(), 0);
40
41 Ok(())
42 }
43
44 #[test]
45 fn test_parity_maximum() -> Result<(), TestError> {
46 let header = LongEccHeader::new(MAX_PARITY, OverlapFactor::Simple, 208, 50, 0)?;
47
48 assert_eq!(header.parity(), MAX_PARITY);
49
50 Ok(())
51 }
52}