use std::{fs, path::PathBuf};
fn fixture_dir() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("tests/fixtures/data")
}
#[test]
fn decodes_rdbentry_fixtures_as_rd_class() {
for name in ["rd_minimal_v2", "rd_minimal_v3", "rd_arguments_v3"] {
let path = fixture_dir().join(format!("{name}.rdbentry"));
let bytes = fs::read(&path).unwrap_or_else(|err| panic!("read {}: {err}", path.display()));
let root = rd_helpdb::decode_rdb_record(&bytes)
.unwrap_or_else(|err| panic!("{name}: decode_rdb_record failed: {err}"));
let class: Vec<String> = root
.class()
.unwrap_or_else(|| panic!("{name}: root has no class attribute"))
.iter()
.map(|value| {
value
.as_str()
.unwrap_or_else(|| panic!("{name}: class value is NA"))
.unwrap_or_else(|err| panic!("{name}: class value decode error: {err}"))
.into_owned()
})
.collect();
assert_eq!(class, vec!["Rd".to_string()], "{name}");
}
}