use std::fs::{self, read_dir};
use hid_decode::TextDecoder;
#[test]
fn scan_corpus() {
for entry_maybe in read_dir("corpus").expect("read_dir failed") {
let entry = entry_maybe.expect("read_dir failed");
let name = entry
.file_name()
.into_string()
.expect("non UTF-8 corpus path");
let descriptor_path = entry.path();
let descriptor = fs::read(&descriptor_path).unwrap_or_else(|e| {
panic!(
"failed to read descriptor at {}: {e}",
descriptor_path.display()
)
});
check_descriptor(&name, descriptor);
}
}
fn check_descriptor(name: &str, descriptor: Vec<u8>) {
let mut decoded = Vec::new();
let decoder = TextDecoder::new(&mut decoded)
.display_tag_type()
.display_raw_bytes();
let Ok(()) = decoder.decode(&descriptor) else {
panic!("error writing decoded descriptor");
};
let decoded = String::from_utf8(decoded).expect("decoded non-utf8");
insta::assert_snapshot!(name, decoded);
}