eldek-tad 0.9.1

A project for learning Abstract Data Types (ADTs) in Rust. Heavily inspired by Java's implementation.
Documentation
#[cfg(test)]
mod test{
    use crate::{graph::{graph::Graph, traits::graph_traits::GraphTrait}, linked_list::traits::linked_list_traits::LinkedListTrait};

    #[test]
    fn create() {
        let graph: Graph<i32> = Graph::new();

        assert_eq!(graph.vertex_count(), 0);
        assert_eq!(graph.edge_count(), 0);
    }

    #[test]
    fn add_vertex_increases_count() {
        let mut graph: Graph<i32> = Graph::new();

        graph.add_vertex(1);
        graph.add_vertex(2);

        assert_eq!(graph.vertex_count(), 2);
        assert!(graph.has_vertex(&1));
        assert!(graph.has_vertex(&2));
        assert!(!graph.has_vertex(&3));
    }

    #[test]
    fn add_edge_unidirectional() {
        let mut graph: Graph<i32> = Graph::new();

        graph.add_vertex(1);
        graph.add_vertex(2);

        graph.add_edge(1, 2, false, None);

        assert!(graph.has_edge(&1, &2));
        assert!(!graph.has_edge(&2, &1));
        assert_eq!(graph.edge_count(), 1);
    }

    #[test]
    fn add_edge_bidirectional() {
        let mut graph: Graph<i32> = Graph::new();

        graph.add_vertex(1);
        graph.add_vertex(2);

        graph.add_edge(1, 2, true, None);

        assert!(graph.has_edge(&1, &2));
        assert!(graph.has_edge(&2, &1));
        assert_eq!(graph.edge_count(), 2); 
    }

    #[test]
    fn get_neighbors_returns_correct_list() {
        let mut graph: Graph<i32> = Graph::new();

        graph.add_vertex(1);
        graph.add_vertex(2);
        graph.add_vertex(3);

        graph.add_edge(1, 2, false, None);
        graph.add_edge(1, 3, false, None);

        let neighbors = graph.get_neighbors(&1);

        assert_eq!(neighbors.size(), 2);
        assert!(neighbors.contains(&2));
        assert!(neighbors.contains(&3));
    }

    #[test]
    fn edge_count_correct_multiple_edges() {
        let mut graph: Graph<i32> = Graph::new();

        graph.add_vertex(1);
        graph.add_vertex(2);
        graph.add_vertex(3);

        graph.add_edge(1, 2, false, None);
        graph.add_edge(2, 3, false, None);

        assert_eq!(graph.edge_count(), 2);
    }
}