in cas_object/src/cas_object_format.rs [1777:1821]
fn test_compress_decompress() {
// Arrange
let (c, _cas_data, raw_data, raw_chunk_boundaries) =
build_cas_object(55, ChunkSize::Fixed(53212), CompressionScheme::LZ4);
// Act & Assert
let mut writer: Cursor<Vec<u8>> = Cursor::new(Vec::new());
assert!(serialize_xorb_to_stream_reference(
&mut writer,
&c.info.cashash,
&raw_data,
&raw_chunk_boundaries,
Some(CompressionScheme::LZ4)
)
.is_ok());
let mut reader = writer.clone();
reader.set_position(0);
let res = CasObject::deserialize(&mut reader);
assert!(res.is_ok());
let c = res.unwrap();
let c_bytes = c.get_all_bytes(&mut reader).unwrap();
let mut writer: Cursor<Vec<u8>> = Cursor::new(Vec::new());
assert!(serialize_xorb_to_stream_reference(
&mut writer,
&c.info.cashash,
&c_bytes,
&raw_chunk_boundaries,
Some(CompressionScheme::None)
)
.is_ok());
let mut reader = writer.clone();
reader.set_position(0);
let res = CasObject::deserialize(&mut reader);
assert!(res.is_ok());
let c2 = res.unwrap();
assert_eq!(c2.info.cashash, c.info.cashash);
assert_eq!(c.get_all_bytes(&mut writer), c.get_all_bytes(&mut reader));
assert!(CasObject::validate_cas_object(&mut reader, &c2.info.cashash).unwrap().is_some());
assert!(CasObject::validate_cas_object(&mut writer, &c.info.cashash).unwrap().is_some());
}