1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4#![allow(dead_code)]
5
6use std::{ffi::CString, os::raw::c_char};
7
8include!("bindings.rs");
9
10fn str_to_c_char(str: &str) -> *const c_char {
11 let c_string = CString::new(str).expect("CString::new failed");
12 c_string.as_ptr() as *const c_char
13}
14
15#[cfg(test)]
16mod tests {
17 use super::*;
18 use std::{ffi::CString, os::raw::c_char};
19
20 #[test]
21 fn read_image_test() {
22 let mut image: Hobject = std::ptr::null_mut();
23 let file_name = "images/1.png";
24 let file_name_cstring = CString::new(file_name).unwrap();
29 let file_name_c_char = file_name_cstring.as_ptr();
30 let error = unsafe { read_image(&mut image, file_name_c_char) };
31 assert_eq!(error, H_MSG_OK, "Failed to read image: {}", error);
32 let mut width: Hlong = 0;
33 let mut height: Hlong = 0;
34 let error = unsafe { get_image_size(image, &mut width, &mut height) };
35 println!("width: {}, height: {}", width, height);
36 assert_eq!(error, H_MSG_OK, "Failed to get image size: {}", error);
37 assert_ne!(width, 0);
38 assert_ne!(height, 0);
39 let format_cstring = CString::new("png").unwrap();
40 let format_c_char = format_cstring.as_ptr();
41 let save_file_name = CString::new("output.png").unwrap();
42 let save_file_name_c_char = save_file_name.as_ptr();
43 let error = unsafe { write_image(image, format_c_char, 0, save_file_name_c_char) };
44 assert_eq!(error, H_MSG_OK, "Failed to write image: {}", error);
45 }
46}