#![cfg(test)] #[cfg(feature = "gzip")] use flate2::read::GzDecoder; fn get_test_file_data(name: &str) -> Vec { use std::fs::File; use std::io::Read; let mut input = Vec::new(); let mut f = File::open(name).unwrap(); f.read_to_end(&mut input).unwrap(); input } pub fn get_test_data() -> Vec { use std::env; let path = env::var("TEST_FILE").unwrap_or("tests/pg11.txt".to_string()); get_test_file_data(&path) } /// Helper function to decompress into a `Vec` pub fn decompress_to_end(input: &[u8]) -> Vec { // use std::str; // let mut inflater = super::inflate::InflateStream::new(); // let mut out = Vec::new(); // let mut n = 0; // println!("input len {}", input.len()); // while n < input.len() { // let res = inflater.update(&input[n..]) ; // if let Ok((num_bytes_read, result)) = res { // println!("result len {}, bytes_read {}", result.len(), num_bytes_read); // n += num_bytes_read; // out.extend(result); // } else { // println!("Output: `{}`", str::from_utf8(&out).unwrap()); // println!("Output decompressed: {}", out.len()); // res.unwrap(); // } // // } // out use std::io::Read; use flate2::read::DeflateDecoder; let mut result = Vec::new(); let i = &input[..]; let mut e = DeflateDecoder::new(i); let res = e.read_to_end(&mut result); if let Ok(_) = res { // println!("{} bytes decompressed successfully", n); } else { println!("result size: {}", result.len()); res.unwrap(); } result } #[cfg(feature = "gzip")] pub fn decompress_gzip(compressed: &[u8]) -> (GzDecoder<&[u8]>, Vec) { use std::io::Read; let mut e = GzDecoder::new(&compressed[..]).unwrap(); let mut result = Vec::new(); e.read_to_end(&mut result).unwrap(); (e, result) } pub fn decompress_zlib(compressed: &[u8]) -> Vec { use std::io::Read; use flate2::read::ZlibDecoder; let mut e = ZlibDecoder::new(&compressed[..]); let mut result = Vec::new(); e.read_to_end(&mut result).unwrap(); result }