diff --git a/src/exd.rs b/src/exd.rs index d4222be..5a8b1d0 100644 --- a/src/exd.rs +++ b/src/exd.rs @@ -211,3 +211,36 @@ impl EXD { } } } + +#[cfg(test)] +mod tests { + use std::fs::read; + use std::path::PathBuf; + use crate::exh::EXHHeader; + + use super::*; + + #[test] + fn test_invalid() { + let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + d.push("resources/tests"); + d.push("random"); + + let exh = EXH { + header: EXHHeader { + version: 0, + data_offset: 0, + column_count: 0, + page_count: 0, + language_count: 0, + row_count: 0, + }, + column_definitions: vec![], + pages: vec![], + languages: vec![], + }; + + // Feeding it invalid data should not panic + EXD::from_existing(&exh, &read(d).unwrap()); + } +} diff --git a/src/exh.rs b/src/exh.rs index 85c1a8c..507433c 100644 --- a/src/exh.rs +++ b/src/exh.rs @@ -14,12 +14,12 @@ use crate::ByteSpan; #[brw(big)] #[allow(dead_code)] pub struct EXHHeader { - version: u16, + pub(crate) version: u16, pub data_offset: u16, - column_count: u16, - page_count: u16, - language_count: u16, + pub(crate) column_count: u16, + pub(crate) page_count: u16, + pub(crate) language_count: u16, #[br(pad_before = 6)] #[br(pad_after = 8)]