#[inline]
#[must_use]
pub fn crc32c(data: &[u8]) -> u32 {
crc32c::crc32c(data)
}
#[cfg(test)]
mod tests {
use super::crc32c;
const CHECK_123456789: u32 = 0xE306_9283;
const ISO_HDLC_123456789: u32 = 0xCBF4_3926;
#[test]
fn empty_input_is_zero() {
assert_eq!(crc32c(b""), 0x0000_0000);
}
#[test]
fn canonical_check_vector() {
assert_eq!(crc32c(b"123456789"), CHECK_123456789);
}
#[test]
fn is_castagnoli_not_iso_hdlc() {
assert_ne!(crc32c(b"123456789"), ISO_HDLC_123456789);
}
#[test]
fn known_answer_all_zeros() {
assert_eq!(crc32c(&[0x00u8; 32]), 0x8A91_36AA);
}
#[test]
fn known_answer_all_ones() {
assert_eq!(crc32c(&[0xFFu8; 32]), 0x62A8_AB43);
}
#[test]
fn detects_single_bit_flip() {
let a = crc32c(b"the quick brown fox");
let b = crc32c(b"the quick brown gox");
assert_ne!(a, b);
}
}