SimpleGraph: add new_vertex

This commit is contained in:
sigil-03 2025-05-25 10:41:51 -06:00
parent 940f244aaf
commit 77118c5d43

View file

@ -31,7 +31,14 @@ struct SimpleGraph {
edges: Vec<SimpleEdge>,
}
impl SimpleGraph {}
impl SimpleGraph {
pub fn new_vertex(&mut self) -> <SimpleVertex as Vertex>::HANDLE {
let id = self.vertices.len();
let v = SimpleVertex { id: id.clone() };
self.vertices.push(v);
id
}
}
impl<'a> Graph<SimpleVertex, SimpleEdge> for SimpleGraph {
fn connect(&mut self, vertex_1: usize, vertex_2: usize) -> usize {
@ -61,32 +68,32 @@ impl<'a> Graph<SimpleVertex, SimpleEdge> for SimpleGraph {
#[test]
fn simple_connect() {
let v1 = SimpleVertex { id: 0 };
let v2 = SimpleVertex { id: 1 };
let mut g = SimpleGraph {
vertices: vec![v1, v2],
vertices: Vec::new(),
edges: Vec::new(),
};
let _e = g.connect(0, 1);
let h1 = g.new_vertex();
let h2 = g.new_vertex();
let _e = g.connect(h1, h2);
assert_eq!(g.edges.len(), 1);
assert_eq!(g.edges[0].id, 0);
assert_eq!(g.edges[0].v1, 0);
assert_eq!(g.edges[0].v2, 1);
assert_eq!(g.edges[0].v1, h1);
assert_eq!(g.edges[0].v2, h2);
}
#[test]
fn simple_disconnect() {
let v1 = SimpleVertex { id: 0 };
let v2 = SimpleVertex { id: 1 };
let mut g = SimpleGraph {
vertices: vec![v1, v2],
vertices: Vec::new(),
edges: Vec::new(),
};
let e = g.connect(0, 1);
let h1 = g.new_vertex();
let h2 = g.new_vertex();
let e = g.connect(h1, h2);
assert_eq!(g.edges.len(), 1);
assert_eq!(g.edges[0].id, 0);
assert_eq!(g.edges[0].v1, 0);
assert_eq!(g.edges[0].v2, 1);
assert_eq!(g.edges[0].v1, h1);
assert_eq!(g.edges[0].v2, h2);
g.disconnect(e);
assert_eq!(g.edges.len(), 0);