1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5#[cfg(feature = "paranoid")]
8include!(concat!(env!("OUT_DIR"), "/lzf_bindings.rs"));
9
10#[cfg(not(feature = "paranoid"))]
11mod pregenerated;
12#[cfg(not(feature = "paranoid"))]
13pub use pregenerated::*;
14
15#[cfg(test)]
16mod tests {
17 use super::*;
18
19 #[test]
20 fn roundtrip() {
21 let message = "This very interesting long string which contains much valuable information";
22
23 let mut compressed_buffer = vec![0_u8; message.len() + 1];
24
25 let bytes_used = unsafe {
26 lzf_compress(
27 message.as_ptr() as *const _,
28 message.len() as _,
29 compressed_buffer.as_mut_ptr() as *mut _,
30 compressed_buffer.len() as _,
31 )
32 };
33 assert_ne!(bytes_used, 0);
34
35 let mut output = vec![0_u8; message.len()];
36 let bytes_used = unsafe {
37 lzf_decompress(
38 compressed_buffer.as_ptr() as *mut _,
39 bytes_used,
40 output.as_mut_ptr() as *mut _,
41 output.len() as _,
42 )
43 };
44 assert_eq!(bytes_used, message.len() as _);
45
46 assert_eq!(message.as_bytes(), &output[..]);
47 }
48}