libczirw_sys/
lib.rs

1extern crate link_cplusplus;
2
3mod functions;
4mod handle;
5mod interop;
6mod misc;
7pub mod sys;
8
9pub use functions::*;
10pub use handle::*;
11pub use interop::*;
12pub use misc::{LibCZIApiError, PixelType, RawDataType};
13
14#[cfg(test)]
15mod tests {
16    use crate::handle::{CziReader, InputStream};
17    use crate::interop::{LibCZIBuildInformation, ReaderOpenInfo};
18    use anyhow::{Error, Result};
19    use std::env;
20    use std::path::PathBuf;
21
22    #[test]
23    fn test_libczi_xml() -> Result<()> {
24        let path = env::home_dir()
25            .unwrap()
26            .join("code/rust/ndbioimage/tests/files/Experiment-2029.czi");
27        assert!(path.exists());
28        let czi = CziReader::create()?;
29        let stream = InputStream::create_from_file_utf8(
30            path.to_str().ok_or(Error::msg("cannot into str"))?,
31        )?;
32        let open_info = ReaderOpenInfo::new(&stream);
33        czi.open(open_info)?;
34        let metadata_segment = czi.get_metadata_segment()?;
35        let xml = metadata_segment.get_metadata_as_xml()?;
36        let s = String::try_from(&xml)?;
37        println!("xml: {}", &s[..s.len().min(100)]);
38        Ok(())
39    }
40
41    #[test]
42    fn test_libczi_pyramid_statistics() -> Result<()> {
43        let path = PathBuf::from("test-files/Experiment-2029.czi");
44        assert!(path.exists());
45        let czi = CziReader::create()?;
46        let stream = InputStream::create_from_file_utf8(
47            path.to_str().ok_or(Error::msg("cannot into str"))?,
48        )?;
49        let open_info = ReaderOpenInfo::new(&stream);
50        czi.open(open_info)?;
51        let s = czi.get_pyramid_statistics()?;
52        println!("xml: {}", &s[..s.len().min(100)]);
53        Ok(())
54    }
55
56    #[test]
57    fn test_libczi_document_info() -> Result<()> {
58        let path = PathBuf::from("test-files/Experiment-2029.czi");
59        assert!(path.exists());
60        let czi = CziReader::create()?;
61        let stream = InputStream::create_from_file_utf8(
62            path.to_str().ok_or(Error::msg("cannot into str"))?,
63        )?;
64        let open_info = ReaderOpenInfo::new(&stream);
65        czi.open(open_info)?;
66        let metadata_segment = czi.get_metadata_segment()?;
67        let document_info = metadata_segment.get_czi_document_info()?;
68        let general_document_info = document_info.get_general_document_info()?;
69        println!(
70            "xml: {}",
71            &general_document_info[..general_document_info.len().min(100)]
72        );
73        Ok(())
74    }
75
76    #[test]
77    fn test_lib_czi_build_information() -> Result<()> {
78        let build_info = LibCZIBuildInformation::get()?;
79        println!(
80            "compiler information: {:?}",
81            build_info.get_compiler_information()
82        );
83        println!("repository url: {:?}", build_info.get_repository_url());
84        println!(
85            "repository branch: {:?}",
86            build_info.get_repository_branch()
87        );
88        println!("repository tag: {:?}", build_info.get_repository_tag());
89        Ok(())
90    }
91}