pub mod compression_provider;
pub mod lz13;
pub use compression_provider::CompressionProvider;
pub use lz13::LZ13CompressionProvider;
#[cfg(test)]
mod test {
use super::*;
use std::fs::OpenOptions;
use std::io::Read;
use std::path::PathBuf;
#[test]
fn lz13_decompress_success() {
let compressed = load_test_file("LZ13Test.bin.lz");
let decompressed = load_test_file("LZ13Test.bin");
let lz13 = LZ13CompressionProvider{};
let actual_decompressed = lz13.decompress(&compressed);
assert!(actual_decompressed.is_ok());
assert_eq!(actual_decompressed.unwrap(), decompressed);
}
#[test]
fn lz13_compress_success() {
let compressed = load_test_file("LZ13Test.bin.lz");
let decompressed = load_test_file("LZ13Test.bin");
let lz13 = LZ13CompressionProvider{};
let actual_compressed = lz13.compress(&decompressed);
assert!(actual_compressed.is_ok());
assert_eq!(actual_compressed.unwrap(), compressed);
}
fn load_test_file(name: &str) -> Vec<u8> {
let mut test_file_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
test_file_path.push("resources/test/");
test_file_path.push(name);
let mut file = OpenOptions::new().read(true).open(test_file_path).unwrap();
let mut file_contents: Vec<u8> = Vec::new();
file.read_to_end(&mut file_contents).unwrap();
file_contents
}
}