SimpleGraph: add new_vertex
This commit is contained in:
parent
940f244aaf
commit
77118c5d43
1 changed files with 20 additions and 13 deletions
33
src/test.rs
33
src/test.rs
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue