use sqlitegraph::backend::native::v3::edge_compat::{Direction, V3EdgeCluster};
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Testing Delta Encoding for Edge ID Compression\n");
let mut cluster = V3EdgeCluster::new(1, Direction::Outgoing, 100);
for i in 1..=100 {
cluster.add_edge(i * 100, None); }
let serialized = cluster.serialize()?;
println!("Serialized {} edges with delta encoding", cluster.edges.len());
println!("Total size: {} bytes", serialized.len());
let uncompressed_size = cluster.edges.len() * 12;
println!("Uncompressed size would be: {} bytes", uncompressed_size);
let space_saved = uncompressed_size.saturating_sub(serialized.len());
let compression_ratio = if serialized.len() > 0 {
(space_saved as f64 / uncompressed_size as f64) * 100.0
} else {
0.0
};
println!("\nSpace saved: {} bytes", space_saved);
println!("Compression ratio: {:.1}%", compression_ratio);
let deserialized = V3EdgeCluster::deserialize(&serialized, 100)?;
assert_eq!(deserialized.dsts().len(), 100);
assert_eq!(deserialized.format_version, 3);
println!("\n✓ Delta encoding is working!");
println!("✓ Roundtrip successful: {} edges preserved", deserialized.dsts().len());
Ok(())
}