use sqlitegraph::backend::native::{GraphFile, NativeResult, v2::node_record_v2::NodeRecordV2};
use tempfile::tempdir;
#[test]
fn test_direct_v2_parsing_at_offset_1024() -> NativeResult<()> {
let temp_dir =
tempdir().map_err(|e| sqlitegraph::backend::native::NativeBackendError::Io(e))?;
let db_path = temp_dir.path().join("test.db");
let mut graph_file = GraphFile::create(&db_path)?;
let node_record_v2 = NodeRecordV2::new(
1i64,
"test".to_string(),
"test_node".to_string(),
serde_json::json!({}),
);
let buffer = node_record_v2.serialize();
println!(
"DEBUG: Created V2 node record, first 16 bytes: {:?}",
&buffer[..16]
);
let node_data_offset = graph_file.header().node_data_offset;
graph_file.write_bytes(node_data_offset, &buffer)?;
let mut read_buffer = vec![0u8; 32];
graph_file.read_bytes(1024, &mut read_buffer)?;
println!(
"DEBUG: Direct read from offset 1024: {:?}",
&read_buffer[..16]
);
println!(
"DEBUG: check_buffer[0] = {}, check_buffer[2] = {}",
read_buffer[0], read_buffer[2]
);
if read_buffer[0] == 2 {
println!("DEBUG: Would take check_buffer[0] == 2 path");
let node_id = i64::from_be_bytes([
read_buffer[5], read_buffer[6], read_buffer[7], read_buffer[8], read_buffer[9], read_buffer[10], read_buffer[11], read_buffer[12], ]);
println!("DEBUG: Parsed node ID from positions 5-12: {}", node_id);
} else if read_buffer.len() > 2 && read_buffer[2] == 2 {
println!("DEBUG: Would take check_buffer[2] == 2 path");
let node_id = i64::from_be_bytes([
read_buffer[7], read_buffer[8], read_buffer[9], read_buffer[10], read_buffer[11], read_buffer[12], read_buffer[13], read_buffer[14], ]);
println!("DEBUG: Parsed node ID from positions 7-14: {}", node_id);
} else {
println!("DEBUG: Neither V2 parsing path matched");
}
Ok(())
}