• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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