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>,
|
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 {
|
impl<'a> Graph<SimpleVertex, SimpleEdge> for SimpleGraph {
|
||||||
fn connect(&mut self, vertex_1: usize, vertex_2: usize) -> usize {
|
fn connect(&mut self, vertex_1: usize, vertex_2: usize) -> usize {
|
||||||
|
|
@ -61,32 +68,32 @@ impl<'a> Graph<SimpleVertex, SimpleEdge> for SimpleGraph {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn simple_connect() {
|
fn simple_connect() {
|
||||||
let v1 = SimpleVertex { id: 0 };
|
|
||||||
let v2 = SimpleVertex { id: 1 };
|
|
||||||
let mut g = SimpleGraph {
|
let mut g = SimpleGraph {
|
||||||
vertices: vec![v1, v2],
|
vertices: Vec::new(),
|
||||||
edges: 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.len(), 1);
|
||||||
assert_eq!(g.edges[0].id, 0);
|
assert_eq!(g.edges[0].id, 0);
|
||||||
assert_eq!(g.edges[0].v1, 0);
|
assert_eq!(g.edges[0].v1, h1);
|
||||||
assert_eq!(g.edges[0].v2, 1);
|
assert_eq!(g.edges[0].v2, h2);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn simple_disconnect() {
|
fn simple_disconnect() {
|
||||||
let v1 = SimpleVertex { id: 0 };
|
|
||||||
let v2 = SimpleVertex { id: 1 };
|
|
||||||
let mut g = SimpleGraph {
|
let mut g = SimpleGraph {
|
||||||
vertices: vec![v1, v2],
|
vertices: Vec::new(),
|
||||||
edges: 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.len(), 1);
|
||||||
assert_eq!(g.edges[0].id, 0);
|
assert_eq!(g.edges[0].id, 0);
|
||||||
assert_eq!(g.edges[0].v1, 0);
|
assert_eq!(g.edges[0].v1, h1);
|
||||||
assert_eq!(g.edges[0].v2, 1);
|
assert_eq!(g.edges[0].v2, h2);
|
||||||
|
|
||||||
g.disconnect(e);
|
g.disconnect(e);
|
||||||
assert_eq!(g.edges.len(), 0);
|
assert_eq!(g.edges.len(), 0);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue