Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

48 Zeilen
1.3KB

  1. #[macro_use]
  2. extern crate lazy_static;
  3. use std::ffi::CString;
  4. use std::os::raw::c_char;
  5. mod version;
  6. mod text_parser;
  7. mod text_parser_bindings;
  8. mod instruction;
  9. mod instruction_parser;
  10. pub(crate) unsafe fn allocate_cstring(input: &str) -> *mut c_char {
  11. let input_c = CString::new(input).expect("Rust &str -> CString conversion failed");
  12. let space = libc::malloc(libc::strlen(input_c.as_ptr()) + 1) as *mut c_char;
  13. libc::strcpy(space, input_c.as_ptr());
  14. return space;
  15. }
  16. #[cfg(test)]
  17. mod tests {
  18. use std::io::Read;
  19. #[test]
  20. fn it_works() {
  21. assert_eq!(2 + 2, 4);
  22. }
  23. #[test]
  24. fn vec_read_test() {
  25. let vec: Vec<u8> = vec![1, 2, 3, 4, 5];
  26. let file_res = crate::text_parser::FilmscriptFile::from_vec(&vec);
  27. assert!(file_res.is_ok());
  28. let mut f = file_res.unwrap();
  29. let buf: &mut [u8] = &mut [0; 1];
  30. assert!(f.read(buf).is_ok());
  31. println!("Buffer contains value: {}", buf[0]);
  32. assert!(f.read(buf).is_ok());
  33. println!("Buffer contains value: {}", buf[0]);
  34. assert!(f.read(buf).is_ok());
  35. println!("Buffer contains value: {}", buf[0]);
  36. assert!(f.read(buf).is_ok());
  37. println!("Buffer contains value: {}", buf[0]);
  38. assert!(f.read(buf).is_ok());
  39. println!("Buffer contains value: {}", buf[0]);
  40. }
  41. }