#[macro_use] extern crate lazy_static; use std::ffi::CString; use std::os::raw::c_char; mod version; mod text_parser; mod text_parser_bindings; mod instruction; mod instruction_parser; pub(crate) unsafe fn allocate_cstring(input: &str) -> *mut c_char { let input_c = CString::new(input).expect("Rust &str -> CString conversion failed"); let space = libc::malloc(libc::strlen(input_c.as_ptr()) + 1) as *mut c_char; libc::strcpy(space, input_c.as_ptr()); return space; } #[cfg(test)] mod tests { use std::io::Read; #[test] fn it_works() { assert_eq!(2 + 2, 4); } #[test] fn vec_read_test() { let vec: Vec = vec![1, 2, 3, 4, 5]; let file_res = crate::text_parser::FilmscriptFile::from_vec(&vec); assert!(file_res.is_ok()); let mut f = file_res.unwrap(); let buf: &mut [u8] = &mut [0; 1]; assert!(f.read(buf).is_ok()); println!("Buffer contains value: {}", buf[0]); assert!(f.read(buf).is_ok()); println!("Buffer contains value: {}", buf[0]); assert!(f.read(buf).is_ok()); println!("Buffer contains value: {}", buf[0]); assert!(f.read(buf).is_ok()); println!("Buffer contains value: {}", buf[0]); assert!(f.read(buf).is_ok()); println!("Buffer contains value: {}", buf[0]); } }