()
| 272 | |
| 273 | #[test] |
| 274 | fn test_lazy_serialize() { |
| 275 | type Buf = LazyBuffer<U4>; |
| 276 | |
| 277 | let mut buf1 = Buf::default(); |
| 278 | let ser0 = buf1.serialize(); |
| 279 | assert_eq!(&ser0[..], &[0, 0, 0, 0, 0]); |
| 280 | Buf::deserialize(&ser0).unwrap(); |
| 281 | assert_eq!(Buf::deserialize(&ser0).unwrap().serialize(), ser0); |
| 282 | |
| 283 | buf1.digest_blocks(&[41, 42], |_| {}); |
| 284 | |
| 285 | let ser1 = buf1.serialize(); |
| 286 | assert_eq!(&ser1[..], &[2, 41, 42, 0, 0]); |
| 287 | |
| 288 | let mut buf2 = Buf::deserialize(&ser1).unwrap(); |
| 289 | assert_eq!(buf1.serialize(), ser1); |
| 290 | |
| 291 | buf1.digest_blocks(&[43], |_| {}); |
| 292 | buf2.digest_blocks(&[43], |_| {}); |
| 293 | |
| 294 | let ser2 = buf1.serialize(); |
| 295 | assert_eq!(&ser2[..], &[3, 41, 42, 43, 0]); |
| 296 | assert_eq!(buf1.serialize(), ser2); |
| 297 | |
| 298 | let mut buf3 = Buf::deserialize(&ser2).unwrap(); |
| 299 | assert_eq!(buf3.serialize(), ser2); |
| 300 | |
| 301 | buf1.digest_blocks(&[44], |_| {}); |
| 302 | buf2.digest_blocks(&[44], |_| {}); |
| 303 | buf3.digest_blocks(&[44], |_| {}); |
| 304 | |
| 305 | let ser3 = buf1.serialize(); |
| 306 | assert_eq!(&ser3[..], &[4, 41, 42, 43, 44]); |
| 307 | assert_eq!(buf2.serialize(), ser3); |
| 308 | assert_eq!(buf3.serialize(), ser3); |
| 309 | |
| 310 | buf1.digest_blocks(&[45], |_| {}); |
| 311 | buf2.digest_blocks(&[45], |_| {}); |
| 312 | buf3.digest_blocks(&[45], |_| {}); |
| 313 | |
| 314 | let ser4 = buf1.serialize(); |
| 315 | assert_eq!(&ser4[..], &[1, 45, 0, 0, 0]); |
| 316 | assert_eq!(buf2.serialize(), ser4); |
| 317 | assert_eq!(buf3.serialize(), ser4); |
| 318 | |
| 319 | // Invalid position |
| 320 | let buf = Array([10, 0, 0, 0, 0]); |
| 321 | assert!(Buf::deserialize(&buf).is_err()); |
| 322 | let buf = Array([5, 0, 0, 0, 0]); |
| 323 | assert!(Buf::deserialize(&buf).is_err()); |
| 324 | // "Garbage" bytes are not zeroized |
| 325 | let buf = Array([0, 1, 0, 0, 0]); |
| 326 | assert!(Buf::deserialize(&buf).is_err()); |
| 327 | let buf = Array([1, 0, 1, 0, 0]); |
| 328 | assert!(Buf::deserialize(&buf).is_err()); |
| 329 | let buf = Array([2, 0, 0, 1, 0]); |
| 330 | assert!(Buf::deserialize(&buf).is_err()); |
| 331 | let buf = Array([3, 0, 0, 0, 1]); |
nothing calls this directly
no test coverage detected