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}