test(03-01): add 19 unit tests for crypto, compression, and format modules
- crypto: encrypt/decrypt roundtrip, empty data, size formula, HMAC compute/verify, SHA-256 known values - compression: compress/decompress roundtrip, empty data, large data, should_compress heuristic - format: header write/read roundtrip, TOC entry roundtrip (ASCII + Cyrillic + empty name), bad magic/version rejection, entry size calculation matching FORMAT.md worked example - Update hex-literal to v1.1
This commit is contained in:
@@ -49,3 +49,51 @@ pub fn should_compress(filename: &str, no_compress_list: &[String]) -> bool {
|
||||
| "7z" | "rar" | "jar"
|
||||
)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_compress_decompress_roundtrip() {
|
||||
let data = b"Hello, World! This is test data for compression.";
|
||||
let compressed = compress(data).unwrap();
|
||||
let decompressed = decompress(&compressed).unwrap();
|
||||
assert_eq!(decompressed, data);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_compress_decompress_empty() {
|
||||
let data = b"";
|
||||
let compressed = compress(data).unwrap();
|
||||
let decompressed = decompress(&compressed).unwrap();
|
||||
assert_eq!(decompressed, data.as_slice());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_compress_decompress_large() {
|
||||
// 10000 bytes of pattern data
|
||||
let data: Vec<u8> = (0..10000).map(|i| (i % 256) as u8).collect();
|
||||
let compressed = compress(&data).unwrap();
|
||||
let decompressed = decompress(&compressed).unwrap();
|
||||
assert_eq!(decompressed, data);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_should_compress_text() {
|
||||
assert!(should_compress("readme.txt", &[]));
|
||||
assert!(should_compress("data.json", &[]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_should_not_compress_known_extensions() {
|
||||
assert!(!should_compress("app.apk", &[]));
|
||||
assert!(!should_compress("photo.jpg", &[]));
|
||||
assert!(!should_compress("archive.zip", &[]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_should_not_compress_excluded() {
|
||||
assert!(!should_compress("special.dat", &["special.dat".into()]));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user