1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4use std::ffi::{c_char, c_int};
5include!("./bindings.rs");
6
7pub fn compress_simple(input: &str) -> Vec<u8> {
8 let mut output = vec![0; input.len() * 2];
9 let len = unsafe {
10 unishox2_compress_simple(
11 input.as_ptr() as *const c_char,
12 input.len() as c_int,
13 output.as_mut_ptr() as *mut c_char,
14 )
15 };
16 unsafe { output.set_len(len as usize) };
17 println!("{:?}", output);
18 output
19}
20
21pub fn decompress_simple(input: &Vec<u8>) -> String {
22 let mut output = vec![0; input.len() * 2];
23 let len = unsafe {
24 unishox2_decompress_simple(
25 input.as_ptr() as *const c_char,
26 input.len() as c_int,
27 output.as_mut_ptr() as *mut c_char,
28 )
29 };
30 unsafe { output.set_len(len as usize) };
31 println!("{:?}", output);
32 String::from_utf8(output).unwrap()
33}
34
35#[cfg(test)]
36mod tests {
37 use super::*;
38
39 #[test]
40 fn compress_simple_test() {
41 let input = "Hello World!";
42 let output = compress_simple(input);
43 print!("{:?}", output);
44 assert_eq!(output, [135, 103, 199, 20, 131, 222, 183, 199, 67, 238]);
45 }
46
47 #[test]
48 fn decompress_simple_test() {
49 let input = vec![135, 103, 199, 20, 131, 222, 183, 199, 67, 238];
50 let output = decompress_simple(&input);
51 print!("{}", output);
52 assert_eq!(output, "Hello World!");
53 }
54}