ps_ecc/long/header/methods/
header_checksum.rs1use crate::long::LongEccHeader;
2
3impl LongEccHeader {
4 #[inline]
6 #[must_use]
7 pub const fn header_checksum(&self) -> u32 {
8 self.header_checksum
9 }
10}
11
12#[cfg(test)]
13mod tests {
14 use crate::long::header::utils::calculate_header_checksum;
15 use crate::long::{LongEccHeader, OverlapFactor};
16
17 type TestError = Box<dyn std::error::Error>;
18
19 #[test]
20 fn test_header_checksum_matches_calculated() -> Result<(), TestError> {
21 let header = LongEccHeader::new(2, OverlapFactor::Double, 86, 50, 0)?;
22
23 let packed_parity = 2 | OverlapFactor::Double.to_u8();
24 let expected = calculate_header_checksum(header.version(), packed_parity, 86, 50);
25
26 assert_eq!(header.header_checksum(), expected);
27
28 Ok(())
29 }
30
31 #[test]
32 fn test_header_checksum_differs_across_headers() -> Result<(), TestError> {
33 let first = LongEccHeader::new(2, OverlapFactor::Simple, 86, 50, 0)?;
34 let second = LongEccHeader::new(2, OverlapFactor::Simple, 87, 51, 0)?;
35
36 assert_ne!(first.header_checksum(), second.header_checksum());
37
38 Ok(())
39 }
40}