use crate::compress::CompressionBuilder;
use crate::error::{CompressionError, MismallError};
#[cfg(test)]
mod tests {
use crate::compress::CompressionBuilder;
use crate::error::{CompressionError, MismallError};
#[test]
fn test_compress_nonexistent_file() {
let builder = CompressionBuilder::new("nonexistent_file.txt");
let result = builder.compress();
assert!(result.is_err());
match result.unwrap_err() {
MismallError::Compression {
error: CompressionError::InputRead(_),
..
} => {
}
other => panic!("Expected InputRead error, got {:?}", other),
}
}
#[test]
fn test_compress_empty_file() {
let builder = CompressionBuilder::new("");
let result = builder.compress();
assert!(result.is_err());
match result.unwrap_err() {
MismallError::InvalidInput { message: _, .. } => {
}
other => panic!(
"Expected InvalidInput error for empty filename, got {:?}",
other
),
}
}
#[test]
fn test_compress_invalid_chunk_size_too_small() {
let builder = CompressionBuilder::new("test.txt").with_chunk_size(1023); let result = builder.compress();
assert!(result.is_err());
match result.unwrap_err() {
MismallError::Compression {
error: CompressionError::InvalidChunkSize(_),
..
} => {
}
other => panic!("Expected InvalidChunkSize error, got {:?}", other),
}
}
#[test]
fn test_compress_invalid_chunk_size_too_large() {
let builder = CompressionBuilder::new("test.txt").with_chunk_size(1024 * 1024 * 1024 + 1); let result = builder.compress();
assert!(result.is_err());
match result.unwrap_err() {
MismallError::Compression {
error: CompressionError::InvalidChunkSize(_),
..
} => {
}
other => panic!("Expected InvalidChunkSize error, got {:?}", other),
}
}
#[test]
fn test_compress_with_invalid_password() {
let builder = CompressionBuilder::new("test.txt").with_password("\x00\x01\x02"); let result = builder.compress();
assert!(result.is_err());
}
#[test]
fn test_compress_file_permission_denied() {
let builder = CompressionBuilder::new(".");
let result = builder.compress();
assert!(result.is_err());
}
#[test]
fn test_error_context_preservation() {
let builder = CompressionBuilder::new("test.txt");
let result = builder
.with_context(crate::error::ErrorContext::new("test_operation"))
.compress();
assert!(result.is_err());
}
}