use dbx_core::engine::SerializationRegistry;
use dbx_core::error::DbxResult;
#[test]
fn test_compression_zstd() -> DbxResult<()> {
let registry = SerializationRegistry::new();
let original = b"Hello, World! This is a test data for compression. ".repeat(100);
let compressed = registry.compress(&original, 3)?;
println!("Original size: {} bytes", original.len());
println!("Compressed size: {} bytes", compressed.len());
println!(
"Compression ratio: {:.2}%",
(compressed.len() as f64 / original.len() as f64) * 100.0
);
assert!(
compressed.len() < original.len(),
"Compressed data should be smaller"
);
let decompressed = registry.decompress(&compressed)?;
assert_eq!(decompressed, original);
Ok(())
}
#[test]
fn test_checksum_sha256() {
let registry = SerializationRegistry::new();
let data = b"Hello, World!";
let checksum = registry.checksum(data);
assert_eq!(checksum.len(), 32);
assert!(registry.verify_checksum(data, &checksum));
let wrong_checksum = vec![0u8; 32];
assert!(!registry.verify_checksum(data, &wrong_checksum));
}
#[test]
fn test_compression_with_checksum() -> DbxResult<()> {
let registry = SerializationRegistry::new();
let original = b"Important data that needs integrity verification".repeat(50);
let compressed = registry.compress(&original, 5)?;
let checksum = registry.checksum(&compressed);
let decompressed = registry.decompress(&compressed)?;
assert!(registry.verify_checksum(&compressed, &checksum));
assert_eq!(decompressed, original);
Ok(())
}
#[test]
fn test_compression_levels() -> DbxResult<()> {
let registry = SerializationRegistry::new();
let original = b"Test data for compression level comparison. ".repeat(200);
for level in [1, 3, 5, 10, 15] {
let compressed = registry.compress(&original, level)?;
let decompressed = registry.decompress(&compressed)?;
println!(
"Level {}: {} bytes -> {} bytes ({:.2}%)",
level,
original.len(),
compressed.len(),
(compressed.len() as f64 / original.len() as f64) * 100.0
);
assert_eq!(decompressed, original);
}
Ok(())
}