librualg 0.4.0

Collection of basic algorithms for everyday development
Documentation
extern crate librualg;

use librualg::graph::Graph;
use std::thread::sleep;
use std::time::Duration;

#[test]
fn test_bfs() {
    let mut graph = Graph::new();
    graph.add_oriented_edge(1, 2, 0);
    graph.add_oriented_edge(2, 3, 0);
    graph.add_oriented_edge(2, 4, 0);
    graph.add_oriented_edge(2, 5, 0);
    graph.add_oriented_edge(4, 8, 0);
    graph.add_oriented_edge(8, 17, 0);
    let parents = graph.bfs(1);
    assert_eq!(graph.search_path(5, &parents).unwrap(), vec![1, 2, 5]);
    assert_eq!(graph.search_path(17, &parents).unwrap(), vec![1, 2, 4, 8, 17]);

    graph.add_oriented_edge(17, 1, 0);
    let parents = graph.bfs(1);
    assert_eq!(graph.search_path(5, &parents).unwrap(), vec![1, 2, 5]);
    assert_eq!(graph.search_path(17, &parents).unwrap(), vec![1, 2, 4, 8, 17]);

    let parents = graph.bfs(101);
    assert_eq!(graph.search_path(101, &parents), None);
}