1 use crc::*;
2
3 const INIT: &[u8] = b"123456789";
4
5 const INIT_PART1: &[u8] = b"1234";
6 const INIT_PART2: &[u8] = b"56789";
7
8 #[test]
crc_8()9 fn crc_8() {
10 let algs = &[
11 CRC_3_GSM,
12 CRC_3_ROHC,
13 CRC_4_G_704,
14 CRC_4_INTERLAKEN,
15 CRC_5_EPC_C1G2,
16 CRC_5_G_704,
17 CRC_5_USB,
18 CRC_6_CDMA2000_A,
19 CRC_6_CDMA2000_B,
20 CRC_6_DARC,
21 CRC_6_G_704,
22 CRC_6_GSM,
23 CRC_7_MMC,
24 CRC_7_ROHC,
25 CRC_7_UMTS,
26 CRC_8_AUTOSAR,
27 CRC_8_BLUETOOTH,
28 CRC_8_CDMA2000,
29 CRC_8_DARC,
30 CRC_8_DVB_S2,
31 CRC_8_GSM_A,
32 CRC_8_GSM_B,
33 CRC_8_I_432_1,
34 CRC_8_I_CODE,
35 CRC_8_LTE,
36 CRC_8_MAXIM_DOW,
37 CRC_8_MIFARE_MAD,
38 CRC_8_NRSC_5,
39 CRC_8_OPENSAFETY,
40 CRC_8_ROHC,
41 CRC_8_SAE_J1850,
42 CRC_8_SMBUS,
43 CRC_8_TECH_3250,
44 CRC_8_WCDMA,
45 ];
46 for alg in algs.iter() {
47 let crc = Crc::<u8>::new(alg);
48 assert_eq!(alg.check, crc.checksum(INIT));
49 let mut digest = crc.digest();
50 digest.update(INIT_PART1);
51 digest.update(INIT_PART2);
52 assert_eq!(alg.check, digest.finalize());
53 }
54 }
55
56 #[test]
crc_16()57 fn crc_16() {
58 let algs = &[
59 CRC_10_ATM,
60 CRC_10_CDMA2000,
61 CRC_10_GSM,
62 CRC_11_FLEXRAY,
63 CRC_11_UMTS,
64 CRC_12_CDMA2000,
65 CRC_12_DECT,
66 CRC_12_GSM,
67 CRC_12_UMTS,
68 CRC_13_BBC,
69 CRC_14_DARC,
70 CRC_14_GSM,
71 CRC_15_CAN,
72 CRC_15_MPT1327,
73 CRC_16_ARC,
74 CRC_16_CDMA2000,
75 CRC_16_CMS,
76 CRC_16_DDS_110,
77 CRC_16_DECT_R,
78 CRC_16_DECT_X,
79 CRC_16_DNP,
80 CRC_16_EN_13757,
81 CRC_16_GENIBUS,
82 CRC_16_GSM,
83 CRC_16_IBM_3740,
84 CRC_16_IBM_SDLC,
85 CRC_16_ISO_IEC_14443_3_A,
86 CRC_16_KERMIT,
87 CRC_16_LJ1200,
88 CRC_16_MAXIM_DOW,
89 CRC_16_MCRF4XX,
90 CRC_16_MODBUS,
91 CRC_16_NRSC_5,
92 CRC_16_OPENSAFETY_A,
93 CRC_16_OPENSAFETY_B,
94 CRC_16_PROFIBUS,
95 CRC_16_RIELLO,
96 CRC_16_SPI_FUJITSU,
97 CRC_16_T10_DIF,
98 CRC_16_TELEDISK,
99 CRC_16_TMS37157,
100 CRC_16_UMTS,
101 CRC_16_USB,
102 CRC_16_XMODEM,
103 ];
104 for alg in algs.iter() {
105 let crc = Crc::<u16>::new(alg);
106 assert_eq!(alg.check, crc.checksum(INIT));
107 let mut digest = crc.digest();
108 digest.update(INIT_PART1);
109 digest.update(INIT_PART2);
110 assert_eq!(alg.check, digest.finalize());
111 }
112 }
113
114 #[test]
crc_32()115 fn crc_32() {
116 let algs = &[
117 CRC_17_CAN_FD,
118 CRC_21_CAN_FD,
119 CRC_24_BLE,
120 CRC_24_FLEXRAY_A,
121 CRC_24_FLEXRAY_B,
122 CRC_24_INTERLAKEN,
123 CRC_24_LTE_A,
124 CRC_24_LTE_B,
125 CRC_24_OPENPGP,
126 CRC_24_OS_9,
127 CRC_30_CDMA,
128 CRC_31_PHILIPS,
129 CRC_32_AIXM,
130 CRC_32_AUTOSAR,
131 CRC_32_BASE91_D,
132 CRC_32_BZIP2,
133 CRC_32_CD_ROM_EDC,
134 CRC_32_CKSUM,
135 CRC_32_ISCSI,
136 CRC_32_ISO_HDLC,
137 CRC_32_JAMCRC,
138 CRC_32_MPEG_2,
139 CRC_32_XFER,
140 ];
141 for alg in algs {
142 let crc = Crc::<u32>::new(alg);
143 assert_eq!(alg.check, crc.checksum(INIT));
144 let mut digest = crc.digest();
145 digest.update(INIT_PART1);
146 digest.update(INIT_PART2);
147 assert_eq!(alg.check, digest.finalize());
148 }
149 }
150
151 #[test]
crc_64()152 fn crc_64() {
153 let algs = &[
154 CRC_40_GSM,
155 CRC_64_ECMA_182,
156 CRC_64_GO_ISO,
157 CRC_64_WE,
158 CRC_64_XZ,
159 ];
160 for alg in algs {
161 let crc = Crc::<u64>::new(alg);
162 assert_eq!(alg.check, crc.checksum(INIT));
163 let mut digest = crc.digest();
164 digest.update(INIT_PART1);
165 digest.update(INIT_PART2);
166 assert_eq!(alg.check, digest.finalize());
167 }
168 }
169
170 #[test]
crc_128()171 fn crc_128() {
172 let algs = &[CRC_82_DARC];
173 for alg in algs {
174 let crc = Crc::<u128>::new(alg);
175 assert_eq!(alg.check, crc.checksum(INIT));
176 let mut digest = crc.digest();
177 digest.update(INIT_PART1);
178 digest.update(INIT_PART2);
179 assert_eq!(alg.check, digest.finalize());
180 }
181 }
182