#![cfg(feature = "v2_experimental")]
use sqlitegraph::{EdgeSpec, NodeSpec, config::GraphConfig, open_graph};
use tempfile::TempDir;
#[test]
fn test_node_validation_regression_100_nodes() {
let temp_dir = TempDir::new().expect("Failed to create temp dir");
let db_path = temp_dir.path().join("test_validation.db");
let config = GraphConfig::native();
let graph = open_graph(&db_path, &config).expect("Failed to create native graph");
let mut node_ids = Vec::new();
for i in 1..=100 {
let node_spec = NodeSpec {
kind: "test_node".to_string(),
name: format!("test_node_{}", i),
file_path: None,
data: serde_json::json!({"node_id": i}),
};
let node_id = graph
.insert_node(node_spec)
.expect(&format!("Failed to insert node {}", i));
node_ids.push(node_id);
}
println!(
"DEBUG: Attempting edge from {} to {}",
node_ids[0], node_ids[1]
);
let edge_spec = EdgeSpec {
from: node_ids[0], to: node_ids[1], edge_type: "test_edge".to_string(),
data: serde_json::json!({"test": "edge"}),
};
let result = graph.insert_edge(edge_spec);
match result {
Ok(_) => {
println!("SUCCESS: Edge insertion passed");
}
Err(e) => {
println!("DEBUG: Edge insertion failed with error: {:?}", e);
panic!("REGRESSION: Edge insertion failed with error: {:?}", e);
}
}
}
#[test]
fn test_node_validation_regression_edge_case_99_to_100() {
let temp_dir = TempDir::new().expect("Failed to create temp dir");
let db_path = temp_dir.path().join("test_validation_99_100.db");
let config = GraphConfig::native();
let graph = open_graph(&db_path, &config).expect("Failed to create native graph");
let mut node_ids = Vec::new();
for i in 1..=100 {
let node_spec = NodeSpec {
kind: "test_node".to_string(),
name: format!("test_node_{}", i),
file_path: None,
data: serde_json::json!({"node_id": i}),
};
let node_id = graph
.insert_node(node_spec)
.expect(&format!("Failed to insert node {}", i));
node_ids.push(node_id);
}
let edge_spec = EdgeSpec {
from: node_ids[98], to: node_ids[99], edge_type: "test_edge_99_100".to_string(),
data: serde_json::json!({"test": "edge_99_100"}),
};
let result = graph.insert_edge(edge_spec);
match result {
Ok(_) => {
println!("SUCCESS: Edge 99→100 insertion passed");
}
Err(e) => {
panic!(
"REGRESSION: Edge 99→100 insertion failed with error: {:?}",
e
);
}
}
}
#[test]
fn test_node_validation_regression_smaller_graph() {
let temp_dir = TempDir::new().expect("Failed to create temp dir");
let db_path = temp_dir.path().join("test_validation_small.db");
let config = GraphConfig::native();
let graph = open_graph(&db_path, &config).expect("Failed to create native graph");
let mut node_ids = Vec::new();
for i in 1..=10 {
let node_spec = NodeSpec {
kind: "test_node".to_string(),
name: format!("test_node_{}", i),
file_path: None,
data: serde_json::json!({"node_id": i}),
};
let node_id = graph
.insert_node(node_spec)
.expect(&format!("Failed to insert node {}", i));
node_ids.push(node_id);
}
let edge_spec = EdgeSpec {
from: node_ids[0], to: node_ids[1], edge_type: "test_edge_small".to_string(),
data: serde_json::json!({"test": "edge_small"}),
};
let result = graph.insert_edge(edge_spec);
match result {
Ok(_) => {
println!("SUCCESS: Small graph edge insertion passed");
}
Err(e) => {
panic!(
"REGRESSION: Small graph edge insertion failed with error: {:?}",
e
);
}
}
}