use sqlitegraph::backend::GraphBackend;
use sqlitegraph::backend::native::v3::V3Backend;
use sqlitegraph::backend::native::v3::kv_store::types::KvValue;
use sqlitegraph::snapshot::SnapshotId;
use tempfile::TempDir;
#[test]
fn test_large_kv_value_survives_checkpoint() {
let temp_dir = TempDir::new().unwrap();
let db_path = temp_dir.path().join("test.graph");
let key = b"large_json".to_vec();
let large_str = "A".repeat(70000);
let large_value = KvValue::String(large_str.clone());
{
let backend = V3Backend::create(&db_path).unwrap();
backend.kv_set_v3(key.clone(), large_value, None);
backend.flush().unwrap();
}
{
let backend = V3Backend::open(&db_path).unwrap();
let value = backend
.kv_get_v3(SnapshotId::current(), &key)
.expect("Failed to get large key after reopen");
if let KvValue::String(s) = value {
assert_eq!(s.len(), 70000);
assert_eq!(s, large_str);
} else {
panic!("Expected KvValue::String");
}
}
}