1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5#[cfg(feature = "bindgen")]
6include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
7
8#[cfg(not(feature = "bindgen"))]
9include!("bindings.rs");
10
11#[cfg(test)]
12mod tests {
13 use super::*;
14
15 #[test]
16 fn test_oodle_decompression() {
17 let input = include_bytes!("../test_data/compressed");
18 let output_size = u32::from_le_bytes([input[0], input[1], input[2], input[3]]);
19 let mut output = vec![0u8; output_size as usize];
20
21 let n = unsafe {
22 OodleLZ_Decompress(
23 input.as_ptr().offset(4) as *const _,
24 input.len() as isize - 4,
25 output.as_mut_ptr() as *mut _,
26 output.len() as isize,
27 OodleLZ_FuzzSafe_OodleLZ_FuzzSafe_Yes,
28 OodleLZ_CheckCRC_OodleLZ_CheckCRC_No,
29 OodleLZ_Verbosity_OodleLZ_Verbosity_None,
30 std::ptr::null_mut(),
31 0,
32 None,
33 std::ptr::null_mut(),
34 std::ptr::null_mut(),
35 0,
36 OodleLZ_Decode_ThreadPhase_OodleLZ_Decode_ThreadPhaseAll,
37 )
38 };
39
40 assert_eq!(n, output_size as isize);
42
43 let expected = include_bytes!("../test_data/decompressed");
45 assert_eq!(output, expected);
46 }
47
48 #[test]
49 fn test_oodle_compression() {
50 let input = include_bytes!("../test_data/decompressed");
51
52 let output_size = unsafe {
53 OodleLZ_GetCompressedBufferSizeNeeded(
54 OodleLZ_Compressor_OodleLZ_Compressor_Kraken,
55 input.len() as isize,
56 )
57 } as usize;
58
59 let mut output = vec![0u8; output_size];
60
61 let n = unsafe {
62 OodleLZ_Compress(
63 OodleLZ_Compressor_OodleLZ_Compressor_Kraken,
64 input.as_ptr() as *const _,
65 input.len() as isize,
66 output.as_mut_ptr() as *mut _,
67 OodleLZ_CompressionLevel_OodleLZ_CompressionLevel_Normal,
68 std::ptr::null(),
69 std::ptr::null(),
70 std::ptr::null(),
71 std::ptr::null_mut(),
72 0,
73 )
74 };
75
76 let output = output[..n as usize].to_vec();
79
80 let expected = include_bytes!("../test_data/compressed");
82 let expected = &expected[4..]; assert_eq!(output, expected);
84 }
85}