rust_code_obfuscator_core 0.3.1

Core encryption and obfuscation logic for rustfuscator
Documentation
use std::{error, fmt, path::PathBuf};

#[derive(Debug)]
pub enum ObfuscatorError {
    EncryptionError,
    InvalidFileExtension { path: PathBuf },
}

impl fmt::Display for ObfuscatorError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            ObfuscatorError::EncryptionError => write!(f, "Encryption failed :("),
            ObfuscatorError::InvalidFileExtension { path } => {
                write!(f, "Invalid file extension for: {}", path.display())
            }
        }
    }
}

impl error::Error for ObfuscatorError {}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn display_encryption_error() {
        let encryption_err = ObfuscatorError::EncryptionError;

        let displayed = encryption_err.to_string();

        assert! {
            displayed.contains("Encryption failed :(")
        }
    }

    #[test]
    fn display_inv_file_ext() {
        let test_file_path = "./test.txt";

        let inv_file_ext_err = ObfuscatorError::InvalidFileExtension {
            path: PathBuf::from(test_file_path),
        };

        let displayed = inv_file_ext_err.to_string();

        assert! {
            displayed.contains(test_file_path),
            "Expected output contains: '{}',got: {}",
            test_file_path,
            displayed
        }
    }
}