// Copyright 2025 Don MacAskill. Licensed under MIT or Apache-2.0. #![cfg(test)] #![allow(dead_code)] use crate::crc16::consts::{ CRC16_ARC, CRC16_CDMA2000, CRC16_CMS, CRC16_DDS_110, CRC16_DECT_R, CRC16_DECT_X, CRC16_DNP, CRC16_EN_13757, CRC16_GENIBUS, CRC16_GSM, CRC16_IBM_3740, CRC16_IBM_SDLC, CRC16_ISO_IEC_14443_3_A, CRC16_KERMIT, CRC16_LJ1200, CRC16_M17, CRC16_MAXIM_DOW, CRC16_MCRF4XX, CRC16_MODBUS, CRC16_NRSC_5, CRC16_OPENSAFETY_A, CRC16_OPENSAFETY_B, CRC16_PROFIBUS, CRC16_RIELLO, CRC16_SPI_FUJITSU, CRC16_T10_DIF, CRC16_TELEDISK, CRC16_TMS37157, CRC16_UMTS, CRC16_USB, CRC16_XMODEM, }; use crate::crc32::consts::{ CRC32_AIXM, CRC32_AUTOSAR, CRC32_BASE91_D, CRC32_BZIP2, CRC32_CD_ROM_EDC, CRC32_CKSUM, CRC32_ISCSI, CRC32_ISO_HDLC, CRC32_JAMCRC, CRC32_MEF, CRC32_MPEG_2, CRC32_XFER, }; use crate::crc64::consts::{ CRC64_ECMA_182, CRC64_GO_ISO, CRC64_MS, CRC64_NVME, CRC64_REDIS, CRC64_WE, CRC64_XZ, }; use crate::test::enums::*; use crate::test::structs::*; use crc::Table; pub const TEST_CHECK_STRING: &[u8] = b"123456789"; pub const TEST_256_BYTES_STRING: &[u8] = b"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456"; pub const TEST_255_BYTES_STRING: &[u8] = b"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345"; pub const CRC_64_NVME_CRC: crc::Algorithm = crc::Algorithm { width: 64, poly: 0xad93d23594c93659, init: 0xffffffffffffffff, refin: true, refout: true, xorout: 0xffffffffffffffff, check: 0xae8b14860a799888, residue: 0xf310303b2b6f6e42, }; pub(crate) const RUST_CRC32_AIXM: crc::Crc> = crc::Crc::>::new(&crc::CRC_32_AIXM); pub(crate) const RUST_CRC32_AUTOSAR: crc::Crc> = crc::Crc::>::new(&crc::CRC_32_AUTOSAR); pub(crate) const RUST_CRC32_BASE91_D: crc::Crc> = crc::Crc::>::new(&crc::CRC_32_BASE91_D); pub(crate) const RUST_CRC32_BZIP2: crc::Crc> = crc::Crc::>::new(&crc::CRC_32_BZIP2); pub(crate) const RUST_CRC32_CD_ROM_EDC: crc::Crc> = crc::Crc::>::new(&crc::CRC_32_CD_ROM_EDC); pub(crate) const RUST_CRC32_CKSUM: crc::Crc> = crc::Crc::>::new(&crc::CRC_32_CKSUM); pub(crate) const RUST_CRC32_ISCSI: crc::Crc> = crc::Crc::>::new(&crc::CRC_32_ISCSI); pub(crate) const RUST_CRC32_ISO_HDLC: crc::Crc> = crc::Crc::>::new(&crc::CRC_32_ISO_HDLC); pub(crate) const RUST_CRC32_JAMCRC: crc::Crc> = crc::Crc::>::new(&crc::CRC_32_JAMCRC); pub(crate) const RUST_CRC32_MEF: crc::Crc> = crc::Crc::>::new(&crc::CRC_32_MEF); pub(crate) const RUST_CRC32_MPEG_2: crc::Crc> = crc::Crc::>::new(&crc::CRC_32_MPEG_2); pub(crate) const RUST_CRC32_XFER: crc::Crc> = crc::Crc::>::new(&crc::CRC_32_XFER); pub(crate) const RUST_CRC16_ARC: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_ARC); pub(crate) const RUST_CRC16_CDMA2000: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_CDMA2000); pub(crate) const RUST_CRC16_CMS: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_CMS); pub(crate) const RUST_CRC16_DDS_110: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_DDS_110); pub(crate) const RUST_CRC16_DECT_R: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_DECT_R); pub(crate) const RUST_CRC16_DECT_X: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_DECT_X); pub(crate) const RUST_CRC16_DNP: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_DNP); pub(crate) const RUST_CRC16_EN_13757: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_EN_13757); pub(crate) const RUST_CRC16_GENIBUS: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_GENIBUS); pub(crate) const RUST_CRC16_GSM: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_GSM); pub(crate) const RUST_CRC16_IBM_3740: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_IBM_3740); pub(crate) const RUST_CRC16_IBM_SDLC: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_IBM_SDLC); pub(crate) const RUST_CRC16_ISO_IEC_14443_3_A: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_ISO_IEC_14443_3_A); pub(crate) const RUST_CRC16_KERMIT: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_KERMIT); pub(crate) const RUST_CRC16_LJ1200: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_LJ1200); pub(crate) const RUST_CRC16_M17: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_M17); pub(crate) const RUST_CRC16_MAXIM_DOW: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_MAXIM_DOW); pub(crate) const RUST_CRC16_MCRF4XX: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_MCRF4XX); pub(crate) const RUST_CRC16_MODBUS: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_MODBUS); pub(crate) const RUST_CRC16_NRSC_5: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_NRSC_5); pub(crate) const RUST_CRC16_OPENSAFETY_A: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_OPENSAFETY_A); pub(crate) const RUST_CRC16_OPENSAFETY_B: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_OPENSAFETY_B); pub(crate) const RUST_CRC16_PROFIBUS: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_PROFIBUS); pub(crate) const RUST_CRC16_RIELLO: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_RIELLO); pub(crate) const RUST_CRC16_SPI_FUJITSU: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_SPI_FUJITSU); pub(crate) const RUST_CRC16_T10_DIF: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_T10_DIF); pub(crate) const RUST_CRC16_TELEDISK: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_TELEDISK); pub(crate) const RUST_CRC16_TMS37157: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_TMS37157); pub(crate) const RUST_CRC16_UMTS: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_UMTS); pub(crate) const RUST_CRC16_USB: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_USB); pub(crate) const RUST_CRC16_XMODEM: crc::Crc> = crc::Crc::>::new(&crc::CRC_16_XMODEM); pub(crate) const RUST_CRC64_ECMA_182: crc::Crc> = crc::Crc::>::new(&crc::CRC_64_ECMA_182); pub(crate) const RUST_CRC64_GO_ISO: crc::Crc> = crc::Crc::>::new(&crc::CRC_64_GO_ISO); pub(crate) const RUST_CRC64_MS: crc::Crc> = crc::Crc::>::new(&crc::CRC_64_MS); pub(crate) const RUST_CRC64_NVME: crc::Crc> = crc::Crc::>::new(&CRC_64_NVME_CRC); pub(crate) const RUST_CRC64_REDIS: crc::Crc> = crc::Crc::>::new(&crc::CRC_64_REDIS); pub(crate) const RUST_CRC64_WE: crc::Crc> = crc::Crc::>::new(&crc::CRC_64_WE); pub(crate) const RUST_CRC64_XZ: crc::Crc> = crc::Crc::>::new(&crc::CRC_64_XZ); pub(crate) const TEST_CRC64_ECMA_182: Crc64TestConfig = Crc64TestConfig { params: CRC64_ECMA_182, reference_impl: &RUST_CRC64_ECMA_182, }; pub(crate) const TEST_CRC64_GO_ISO: Crc64TestConfig = Crc64TestConfig { params: CRC64_GO_ISO, reference_impl: &RUST_CRC64_GO_ISO, }; pub(crate) const TEST_CRC64_MS: Crc64TestConfig = Crc64TestConfig { params: CRC64_MS, reference_impl: &RUST_CRC64_MS, }; pub(crate) const TEST_CRC64_NVME: Crc64TestConfig = Crc64TestConfig { params: CRC64_NVME, reference_impl: &RUST_CRC64_NVME, }; pub(crate) const TEST_CRC64_REDIS: Crc64TestConfig = Crc64TestConfig { params: CRC64_REDIS, reference_impl: &RUST_CRC64_REDIS, }; pub(crate) const TEST_CRC64_WE: Crc64TestConfig = Crc64TestConfig { params: CRC64_WE, reference_impl: &RUST_CRC64_WE, }; pub(crate) const TEST_CRC64_XZ: Crc64TestConfig = Crc64TestConfig { params: CRC64_XZ, reference_impl: &RUST_CRC64_XZ, }; pub(crate) const TEST_CRC16_ARC: Crc16TestConfig = Crc16TestConfig { params: CRC16_ARC, reference_impl: &RUST_CRC16_ARC, }; pub(crate) const TEST_CRC16_CDMA2000: Crc16TestConfig = Crc16TestConfig { params: CRC16_CDMA2000, reference_impl: &RUST_CRC16_CDMA2000, }; pub(crate) const TEST_CRC16_CMS: Crc16TestConfig = Crc16TestConfig { params: CRC16_CMS, reference_impl: &RUST_CRC16_CMS, }; pub(crate) const TEST_CRC16_DDS_110: Crc16TestConfig = Crc16TestConfig { params: CRC16_DDS_110, reference_impl: &RUST_CRC16_DDS_110, }; pub(crate) const TEST_CRC16_DECT_R: Crc16TestConfig = Crc16TestConfig { params: CRC16_DECT_R, reference_impl: &RUST_CRC16_DECT_R, }; pub(crate) const TEST_CRC16_DECT_X: Crc16TestConfig = Crc16TestConfig { params: CRC16_DECT_X, reference_impl: &RUST_CRC16_DECT_X, }; pub(crate) const TEST_CRC16_DNP: Crc16TestConfig = Crc16TestConfig { params: CRC16_DNP, reference_impl: &RUST_CRC16_DNP, }; pub(crate) const TEST_CRC16_EN_13757: Crc16TestConfig = Crc16TestConfig { params: CRC16_EN_13757, reference_impl: &RUST_CRC16_EN_13757, }; pub(crate) const TEST_CRC16_GENIBUS: Crc16TestConfig = Crc16TestConfig { params: CRC16_GENIBUS, reference_impl: &RUST_CRC16_GENIBUS, }; pub(crate) const TEST_CRC16_GSM: Crc16TestConfig = Crc16TestConfig { params: CRC16_GSM, reference_impl: &RUST_CRC16_GSM, }; pub(crate) const TEST_CRC16_IBM_3740: Crc16TestConfig = Crc16TestConfig { params: CRC16_IBM_3740, reference_impl: &RUST_CRC16_IBM_3740, }; pub(crate) const TEST_CRC16_IBM_SDLC: Crc16TestConfig = Crc16TestConfig { params: CRC16_IBM_SDLC, reference_impl: &RUST_CRC16_IBM_SDLC, }; pub(crate) const TEST_CRC16_ISO_IEC_14443_3_A: Crc16TestConfig = Crc16TestConfig { params: CRC16_ISO_IEC_14443_3_A, reference_impl: &RUST_CRC16_ISO_IEC_14443_3_A, }; pub(crate) const TEST_CRC16_KERMIT: Crc16TestConfig = Crc16TestConfig { params: CRC16_KERMIT, reference_impl: &RUST_CRC16_KERMIT, }; pub(crate) const TEST_CRC16_LJ1200: Crc16TestConfig = Crc16TestConfig { params: CRC16_LJ1200, reference_impl: &RUST_CRC16_LJ1200, }; pub(crate) const TEST_CRC16_M17: Crc16TestConfig = Crc16TestConfig { params: CRC16_M17, reference_impl: &RUST_CRC16_M17, }; pub(crate) const TEST_CRC16_MAXIM_DOW: Crc16TestConfig = Crc16TestConfig { params: CRC16_MAXIM_DOW, reference_impl: &RUST_CRC16_MAXIM_DOW, }; pub(crate) const TEST_CRC16_MCRF4XX: Crc16TestConfig = Crc16TestConfig { params: CRC16_MCRF4XX, reference_impl: &RUST_CRC16_MCRF4XX, }; pub(crate) const TEST_CRC16_MODBUS: Crc16TestConfig = Crc16TestConfig { params: CRC16_MODBUS, reference_impl: &RUST_CRC16_MODBUS, }; pub(crate) const TEST_CRC16_NRSC_5: Crc16TestConfig = Crc16TestConfig { params: CRC16_NRSC_5, reference_impl: &RUST_CRC16_NRSC_5, }; pub(crate) const TEST_CRC16_OPENSAFETY_A: Crc16TestConfig = Crc16TestConfig { params: CRC16_OPENSAFETY_A, reference_impl: &RUST_CRC16_OPENSAFETY_A, }; pub(crate) const TEST_CRC16_OPENSAFETY_B: Crc16TestConfig = Crc16TestConfig { params: CRC16_OPENSAFETY_B, reference_impl: &RUST_CRC16_OPENSAFETY_B, }; pub(crate) const TEST_CRC16_PROFIBUS: Crc16TestConfig = Crc16TestConfig { params: CRC16_PROFIBUS, reference_impl: &RUST_CRC16_PROFIBUS, }; pub(crate) const TEST_CRC16_RIELLO: Crc16TestConfig = Crc16TestConfig { params: CRC16_RIELLO, reference_impl: &RUST_CRC16_RIELLO, }; pub(crate) const TEST_CRC16_SPI_FUJITSU: Crc16TestConfig = Crc16TestConfig { params: CRC16_SPI_FUJITSU, reference_impl: &RUST_CRC16_SPI_FUJITSU, }; pub(crate) const TEST_CRC16_T10_DIF: Crc16TestConfig = Crc16TestConfig { params: CRC16_T10_DIF, reference_impl: &RUST_CRC16_T10_DIF, }; pub(crate) const TEST_CRC16_TELEDISK: Crc16TestConfig = Crc16TestConfig { params: CRC16_TELEDISK, reference_impl: &RUST_CRC16_TELEDISK, }; pub(crate) const TEST_CRC16_TMS37157: Crc16TestConfig = Crc16TestConfig { params: CRC16_TMS37157, reference_impl: &RUST_CRC16_TMS37157, }; pub(crate) const TEST_CRC16_UMTS: Crc16TestConfig = Crc16TestConfig { params: CRC16_UMTS, reference_impl: &RUST_CRC16_UMTS, }; pub(crate) const TEST_CRC16_USB: Crc16TestConfig = Crc16TestConfig { params: CRC16_USB, reference_impl: &RUST_CRC16_USB, }; pub(crate) const TEST_CRC16_XMODEM: Crc16TestConfig = Crc16TestConfig { params: CRC16_XMODEM, reference_impl: &RUST_CRC16_XMODEM, }; pub(crate) const TEST_CRC32_AIXM: Crc32TestConfig = Crc32TestConfig { params: CRC32_AIXM, reference_impl: &RUST_CRC32_AIXM, }; pub(crate) const TEST_CRC32_AUTOSAR: Crc32TestConfig = Crc32TestConfig { params: CRC32_AUTOSAR, reference_impl: &RUST_CRC32_AUTOSAR, }; pub(crate) const TEST_CRC32_BASE91_D: Crc32TestConfig = Crc32TestConfig { params: CRC32_BASE91_D, reference_impl: &RUST_CRC32_BASE91_D, }; pub(crate) const TEST_CRC32_BZIP2: Crc32TestConfig = Crc32TestConfig { params: CRC32_BZIP2, reference_impl: &RUST_CRC32_BZIP2, }; pub(crate) const TEST_CRC32_CD_ROM_EDC: Crc32TestConfig = Crc32TestConfig { params: CRC32_CD_ROM_EDC, reference_impl: &RUST_CRC32_CD_ROM_EDC, }; pub(crate) const TEST_CRC32_CKSUM: Crc32TestConfig = Crc32TestConfig { params: CRC32_CKSUM, reference_impl: &RUST_CRC32_CKSUM, }; pub(crate) const TEST_CRC32_ISCSI: Crc32TestConfig = Crc32TestConfig { params: CRC32_ISCSI, reference_impl: &RUST_CRC32_ISCSI, }; pub(crate) const TEST_CRC32_ISO_HDLC: Crc32TestConfig = Crc32TestConfig { params: CRC32_ISO_HDLC, reference_impl: &RUST_CRC32_ISO_HDLC, }; pub(crate) const TEST_CRC32_JAMCRC: Crc32TestConfig = Crc32TestConfig { params: CRC32_JAMCRC, reference_impl: &RUST_CRC32_JAMCRC, }; pub(crate) const TEST_CRC32_MEF: Crc32TestConfig = Crc32TestConfig { params: CRC32_MEF, reference_impl: &RUST_CRC32_MEF, }; pub(crate) const TEST_CRC32_MPEG_2: Crc32TestConfig = Crc32TestConfig { params: CRC32_MPEG_2, reference_impl: &RUST_CRC32_MPEG_2, }; pub(crate) const TEST_CRC32_XFER: Crc32TestConfig = Crc32TestConfig { params: CRC32_XFER, reference_impl: &RUST_CRC32_XFER, }; pub(crate) const TEST_ALL_CONFIGS: &[AnyCrcTestConfig] = &[ AnyCrcTestConfig::CRC16(&TEST_CRC16_ARC), AnyCrcTestConfig::CRC16(&TEST_CRC16_CDMA2000), AnyCrcTestConfig::CRC16(&TEST_CRC16_CMS), AnyCrcTestConfig::CRC16(&TEST_CRC16_DDS_110), AnyCrcTestConfig::CRC16(&TEST_CRC16_DECT_R), AnyCrcTestConfig::CRC16(&TEST_CRC16_DECT_X), AnyCrcTestConfig::CRC16(&TEST_CRC16_DNP), AnyCrcTestConfig::CRC16(&TEST_CRC16_EN_13757), AnyCrcTestConfig::CRC16(&TEST_CRC16_GENIBUS), AnyCrcTestConfig::CRC16(&TEST_CRC16_GSM), AnyCrcTestConfig::CRC16(&TEST_CRC16_IBM_3740), AnyCrcTestConfig::CRC16(&TEST_CRC16_IBM_SDLC), AnyCrcTestConfig::CRC16(&TEST_CRC16_ISO_IEC_14443_3_A), AnyCrcTestConfig::CRC16(&TEST_CRC16_KERMIT), AnyCrcTestConfig::CRC16(&TEST_CRC16_LJ1200), AnyCrcTestConfig::CRC16(&TEST_CRC16_M17), AnyCrcTestConfig::CRC16(&TEST_CRC16_MAXIM_DOW), AnyCrcTestConfig::CRC16(&TEST_CRC16_MCRF4XX), AnyCrcTestConfig::CRC16(&TEST_CRC16_MODBUS), AnyCrcTestConfig::CRC16(&TEST_CRC16_NRSC_5), AnyCrcTestConfig::CRC16(&TEST_CRC16_OPENSAFETY_A), AnyCrcTestConfig::CRC16(&TEST_CRC16_OPENSAFETY_B), AnyCrcTestConfig::CRC16(&TEST_CRC16_PROFIBUS), AnyCrcTestConfig::CRC16(&TEST_CRC16_RIELLO), AnyCrcTestConfig::CRC16(&TEST_CRC16_SPI_FUJITSU), AnyCrcTestConfig::CRC16(&TEST_CRC16_T10_DIF), AnyCrcTestConfig::CRC16(&TEST_CRC16_TELEDISK), AnyCrcTestConfig::CRC16(&TEST_CRC16_TMS37157), AnyCrcTestConfig::CRC16(&TEST_CRC16_UMTS), AnyCrcTestConfig::CRC16(&TEST_CRC16_USB), AnyCrcTestConfig::CRC16(&TEST_CRC16_XMODEM), AnyCrcTestConfig::CRC32(&TEST_CRC32_AIXM), AnyCrcTestConfig::CRC32(&TEST_CRC32_AUTOSAR), AnyCrcTestConfig::CRC32(&TEST_CRC32_BASE91_D), AnyCrcTestConfig::CRC32(&TEST_CRC32_BZIP2), AnyCrcTestConfig::CRC32(&TEST_CRC32_CD_ROM_EDC), AnyCrcTestConfig::CRC32(&TEST_CRC32_CKSUM), AnyCrcTestConfig::CRC32(&TEST_CRC32_ISCSI), AnyCrcTestConfig::CRC32(&TEST_CRC32_ISO_HDLC), AnyCrcTestConfig::CRC32(&TEST_CRC32_JAMCRC), AnyCrcTestConfig::CRC32(&TEST_CRC32_MEF), AnyCrcTestConfig::CRC32(&TEST_CRC32_MPEG_2), AnyCrcTestConfig::CRC32(&TEST_CRC32_XFER), AnyCrcTestConfig::CRC64(&TEST_CRC64_ECMA_182), AnyCrcTestConfig::CRC64(&TEST_CRC64_GO_ISO), AnyCrcTestConfig::CRC64(&TEST_CRC64_MS), AnyCrcTestConfig::CRC64(&TEST_CRC64_NVME), AnyCrcTestConfig::CRC64(&TEST_CRC64_REDIS), AnyCrcTestConfig::CRC64(&TEST_CRC64_WE), AnyCrcTestConfig::CRC64(&TEST_CRC64_XZ), ];