use orientdb::SimpleGraph;
#[test]
fn graph_end_to_end_workflow() {
let mut graph = SimpleGraph::new();
let start = graph.add_node("Start");
let mid = graph.add_node("Mid");
let end = graph.add_node("End");
assert!(graph.add_edge(start, mid));
assert!(graph.add_edge(mid, end));
assert_eq!(graph.node_count(), 3);
let neighbors = graph.neighbors(start).expect("start node should have neighbors");
assert_eq!(neighbors.as_slice(), &[mid]);
let found = graph.find(start, |&value| value == "End");
assert_eq!(found, Some(end));
}
#[test]
fn find_returns_none_for_unmatched_value() {
let mut graph = SimpleGraph::new();
let start = graph.add_node("Start");
let isolated = graph.add_node("Isolated");
assert!(graph.add_edge(start, isolated));
let result = graph.find(start, |&value| value == "Missing");
assert!(result.is_none());
}
#[test]
fn add_edge_rejects_unknown_nodes() {
let mut graph = SimpleGraph::new();
let known = graph.add_node("Known");
assert!(!graph.add_edge(99, known));
assert!(!graph.add_edge(known, 100));
let neighbors = graph.neighbors(known).expect("known node should exist");
assert!(neighbors.is_empty());
}