orientdb 0.1.2

A Rust library for in-memory graph database
Documentation
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());
}