1mod element;
12mod error;
13mod iter;
14mod hocr;
15mod parsing;
16pub mod spec_definitions;
18
19pub use error::{HOCRParserError, Result};
20pub use hocr::{HOCR, HOCRBorrowed};
21pub use element::{Element, ElementBorrowed};
22
23pub use roxmltree;
24
25#[cfg(test)]
26mod tests {
27 use super::*;
28
29 #[test]
30 fn parse_quoted_properties() {
31 let property = "image \"Screenshot 2024-05-12 at 14.21.17.png\"; bbox 0 0 796 1314; ppageno 0; scan_res 144 144";
32 let res = parsing::parse_properties(&property);
33 println!("{:?}", res);
34 let image_prop = res.iter().find(|(n, _)| *n == "image").unwrap();
35 assert_eq!(image_prop.1, vec!["Screenshot 2024-05-12 at 14.21.17.png"]);
36 }
37
38 #[test]
39 fn parse_multiple_quoted_properties() {
40 let property = r#"x_source abc def "/gfs/cc/clean/012345678911" "17" abc def "Screenshot 2024-05-12 at 14.21.17.png""#;
41 let res = parsing::parse_properties(&property);
42 println!("{:?}", res);
43 let prop = res.iter().find(|(n, _)| *n == "x_source").unwrap();
44 assert_eq!(
45 prop.1,
46 vec![
47 "abc",
48 "def",
49 "/gfs/cc/clean/012345678911",
50 "17",
51 "abc",
52 "def",
53 "Screenshot 2024-05-12 at 14.21.17.png"
54 ]
55 );
56 }
57
58 #[test]
59 fn parse_empty_property() {
60 let property = "";
61 let res = parsing::parse_properties(&property);
62 assert_eq!(res.len(), 0);
63 }
64
65 #[test]
66 fn parse_just_whitespace_property() {
67 let property = " \n \t \n \t \n";
68 let res = parsing::parse_properties(&property);
69 assert_eq!(res.len(), 0);
70 }
71}