mod common;
use common::*;
#[test]
fn test_compress_decompress_roundtrip() -> std::io::Result<()> {
let dir = test_dir();
let original_content =
b"This is test data that should survive a compression/decompression roundtrip perfectly. "
.repeat(10);
let original = create_test_file(dir.path(), "original.txt", &original_content);
let compressed = dir.path().join("original.txt.crush");
let decompressed = dir.path().join("original.txt");
crush_cmd()
.arg("compress")
.arg(&original)
.assert()
.success();
assert_file_exists(&compressed);
assert_compressed(&original, &compressed);
std::fs::remove_file(&original)?;
crush_cmd()
.arg("decompress")
.arg(&compressed)
.assert()
.success();
assert_file_exists(&decompressed);
let decompressed_content = read_file(&decompressed);
assert_eq!(
decompressed_content.as_slice(),
original_content.as_slice(),
"Roundtrip should preserve data exactly"
);
Ok(())
}
#[test]
fn test_roundtrip_large_random_file() -> std::io::Result<()> {
let dir = test_dir();
let original = create_random_file(dir.path(), "large.bin", 10 * 1024); let original_content = read_file(&original);
let compressed = dir.path().join("large.bin.crush");
let decompressed = dir.path().join("large.bin");
crush_cmd()
.arg("compress")
.arg(&original)
.assert()
.success();
assert_file_exists(&compressed);
std::fs::remove_file(&original)?;
crush_cmd()
.arg("decompress")
.arg(&compressed)
.assert()
.success();
let decompressed_content = read_file(&decompressed);
assert_eq!(
decompressed_content, original_content,
"Large file roundtrip should preserve all bytes"
);
Ok(())
}