use crc::crc32::checksum_castagnoli;
#[test]
fn unmasked_checksum() {
assert_eq!(checksum_castagnoli(b"123456789"), 0xe3069283);
assert_eq!(0x8A9136AA, checksum_castagnoli(&[0; 32]));
assert_eq!(0x62A8AB43, checksum_castagnoli(&[0xFF; 32]));
let mut incrementing = vec!();
for i in 0..32 { incrementing.push(i); }
assert_eq!(32, incrementing.len());
assert_eq!(0x46DD794E, checksum_castagnoli(&incrementing));
}
fn mask(crc: u32) -> u32 {
crc.rotate_right(15).wrapping_add(0xA282EAD8)
}
pub fn masked_crc(bytes: &[u8]) -> u32 {
mask(checksum_castagnoli(bytes))
}
#[test]
fn masked_checksum() {
assert_eq!(0x9274CDA8, masked_crc(b"aaaaaaaaaaaabbbbbbbaaaaaa"));
}
#[cfg(all(test, feature = "unstable"))]
mod benches {
use test::Bencher;
use super::*;
#[bench]
fn crc_speed(b: &mut Bencher) {
let input = [0; 1024];
b.bytes = input.len() as u64;
b.iter(|| masked_crc(&input));
}
}