use crate::{Edge, Vertex, populate_graph};
use graph_api_lib::{EdgeReference, EdgeSearch, Graph, VertexReference, VertexSearch};
pub fn test_vertices_fold<G>(graph: &mut G)
where
G: Graph<Vertex = Vertex, Edge = Edge>,
{
let _refs = populate_graph(graph);
let total_age = graph
.walk()
.vertices(VertexSearch::scan())
.fold(0, |total, vertex, _| {
if let Vertex::Person { age, .. } = *vertex.weight() {
total + age
} else {
total
}
});
assert_eq!(total_age, 93);
}
pub fn test_edges_fold<G>(graph: &mut G)
where
G: Graph<Vertex = Vertex, Edge = Edge>,
{
let _refs = populate_graph(graph);
let knows_year = graph
.walk()
.vertices(VertexSearch::scan())
.edges(EdgeSearch::scan())
.fold(None, |result, edge, _| {
if let Edge::Knows { since } = edge.weight() {
Some(*since)
} else {
result
}
});
assert!(knows_year.is_some());
assert_eq!(knows_year.unwrap(), 1999);
}