#[test]
fn test_all_artifacts() {
extern crate std;
use crate::decoding::BlockDecodingStrategy;
use crate::decoding::FrameDecoder;
use std::borrow::ToOwned;
use std::fs;
use std::fs::File;
let mut frame_dec = FrameDecoder::new();
let entries = match fs::read_dir("./fuzz/artifacts/decode") {
Ok(e) => e,
Err(err) if err.kind() == std::io::ErrorKind::NotFound => return,
Err(err) => panic!("unexpected error reading fuzz artifacts dir: {err}"),
};
for file in entries {
let file_name = file.unwrap().path();
let fnstr = file_name.to_str().unwrap().to_owned();
if !fnstr.contains("/crash-") {
continue;
}
let mut f = File::open(file_name.clone()).unwrap();
let _: Result<_, _> = frame_dec
.reset(&mut f)
.and_then(|()| frame_dec.decode_blocks(&mut f, BlockDecodingStrategy::All));
}
}
#[test]
fn interop_7_byte_input_does_not_oob_in_dfast_fast_loop() {
use crate::decoding::{BlockDecodingStrategy, FrameDecoder};
use crate::encoding::{CompressionLevel, compress_to_vec};
let data: &[u8] = &[0x04, 0x60, 0x2e, 0x20, 0x20, 0x0a, 0x20];
let compressed = compress_to_vec(data, CompressionLevel::Level(3));
let mut frame_dec = FrameDecoder::new();
let mut cursor = compressed.as_slice();
frame_dec.reset(&mut cursor).unwrap();
frame_dec
.decode_blocks(&mut cursor, BlockDecodingStrategy::All)
.unwrap();
let decoded = frame_dec.collect().expect("decoder returned no payload");
assert_eq!(decoded.as_slice(), data);
}