MCPcopy Create free account
hub / github.com/RustCrypto/utils / test_lazy_serialize

Function test_lazy_serialize

block-buffer/tests/mod.rs:274–333  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

272
273#[test]
274fn 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]);

Callers

nothing calls this directly

Calls 5

defaultFunction · 0.85
deserializeFunction · 0.85
digest_blocksMethod · 0.80
serializeMethod · 0.45
unwrapMethod · 0.45

Tested by

no test coverage detected