file_endec 1.0.1

Secure file encryption and decryption from the command line.
Documentation
#![cfg(any(test, feature = "expose"))]

#[cfg(test)]
use ::std::path::PathBuf;
#[cfg(test)]
use ::tempfile::{NamedTempFile, TempDir};

mod tests {
    #[allow(unused_imports)]
    use super::generate_test_file_content_for_test;

    #[test]
    fn generate() {
        let data = generate_test_file_content_for_test(15_001);
        assert_eq!(15_001, data.len());
        assert!(data.contains(&0));
        assert!(data.contains(&127));
        assert!(data.contains(&255));
    }
}

pub fn generate_test_file_content_for_test(len: usize) -> Vec<u8> {
    let mut data = vec![0u8; len];
    let mut a: u32 = 1;
    let mut b: u32 = 1;
    #[allow(clippy::needless_range_loop)]
    for i in 0..len {
        let c = (a + b) % 256;
        data[i] = c as u8;
        a = b;
        b = c;
    }
    data
}

#[cfg(test)]
pub fn write_test_file(len: usize) -> (TempDir, PathBuf, Vec<u8>) {
    use ::std::fs;
    let dir = TempDir::new().unwrap();
    let pth = NamedTempFile::new_in(dir.path()).unwrap().path().to_owned();
    let big = generate_test_file_content_for_test(len);
    fs::write(&pth, &big).unwrap();
    (dir, pth, big)
}