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

Function test_read_serialize

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

Source from the content-addressed store, hash-verified

334
335#[test]
336fn test_read_serialize() {
337 type Buf = ReadBuffer<U4>;
338
339 let mut n = 0u8;
340 let mut g = |block: &mut Array<u8, U4>| {
341 block.iter_mut().for_each(|b| {
342 *b = n;
343 n += 1;
344 });
345 };
346
347 let mut buf = Buf::default();
348 let ser1 = buf.serialize();
349 assert_eq!(&ser1[..], &[4, 0, 0, 0]);
350 assert_eq!(Buf::deserialize(&ser1).unwrap().serialize(), ser1);
351
352 let mut buf1 = Buf::deserialize(&ser1).unwrap();
353 assert_eq!(buf1.serialize(), ser1);
354 assert_eq!(buf1.remaining(), 0);
355 assert_eq!(buf1.read_cached(10), []);
356
357 buf.write_block(2, &mut g, |buf| assert_eq!(buf, [0, 1]));
358
359 let ser2 = buf.serialize();
360 assert_eq!(&ser2[..], &[2, 0, 2, 3]);
361
362 let mut buf2 = Buf::deserialize(&ser2).unwrap();
363 assert_eq!(buf2.serialize(), ser2);
364 assert_eq!(buf2.remaining(), 2);
365 assert_eq!(buf2.read_cached(10), [2, 3]);
366
367 // Invalid position
368 let buf = Array([0, 0, 0, 0]);
369 assert!(Buf::deserialize(&buf).is_err());
370 let buf = Array([5, 0, 0, 0]);
371 assert!(Buf::deserialize(&buf).is_err());
372 let buf = Array([10, 0, 0, 0]);
373 assert!(Buf::deserialize(&buf).is_err());
374 // "Garbage" bytes are not zeroized
375 let buf = Array([2, 1, 0, 0]);
376 assert!(Buf::deserialize(&buf).is_err());
377 let buf = Array([3, 0, 1, 0]);
378 assert!(Buf::deserialize(&buf).is_err());
379 let buf = Array([4, 0, 0, 1]);
380 assert!(Buf::deserialize(&buf).is_err());
381}
382
383#[test]
384fn eager_buffer_exception_safety() {

Callers

nothing calls this directly

Calls 5

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

Tested by

no test coverage detected