Files
912-notes/thu_dsa/chp6/testGraphMatrix.cpp

149 lines
3.4 KiB
C++

#include "GraphMatrix.h"
#include <iostream>
#include <cassert>
using std::cout;
using std::endl;
void test_constructor();
void test_vertex_insert();
void test_vertex_delete();
void test_edge_insert();
int main(){
cout << "Running tests" << endl;
test_constructor();
test_vertex_insert();
test_edge_insert();
test_vertex_delete();
cout << "All tests passed." << endl;
system("pause");
return 0;
}
void test_constructor(){
GraphMatrix<int, int> G;
assert(G.num_of_edges == 0);
assert(G.num_of_vertices == 0);
}
void test_vertex_insert(){
GraphMatrix<char, int> G;
G.insertVertex('a');
assert(G.num_of_vertices == 1);
assert(G.num_of_edges == 0);
assert(G.exists(0, 0) == false);
assert(G.vertex(0) == 'a');
assert(G.inDegree(0) == 0);
assert(G.outDegree(0) == 0);
assert(G.priority(0) == 0);
assert(G.dtime(0) == -1);
assert(G.ftime(0) == -1);
assert(G.parent(0) == -1);
G.insertVertex('b');
assert(G.num_of_vertices == 2);
assert(G.num_of_edges == 0);
assert(G.exists(0, 1) == false);
assert(G.exists(1, 1) == false);
assert(G.vertex(1) == 'b');
}
void test_edge_insert(){
GraphMatrix<char, int> G;
graph_demo(G);
assert(G.num_of_edges == 8);
assert(G.edge(0, 1) == 1);
assert(G.weight(0, 1) == 1.);
assert(G.type(0, 1) == UNDETERMINED);
assert(G.exists(0, 7));
assert(G.exists(4, 2));
assert(G.exists(5, 4));
assert(G.exists(5, 3));
assert(G.exists(6, 7));
assert(G.exists(9, 6));
assert(G.exists(3, 8));
assert(!G.exists(1, 0));
assert(!G.exists(7, 0));
assert(!G.exists(2, 4));
assert(!G.exists(4, 5));
assert(!G.exists(3, 5));
assert(!G.exists(7, 6));
assert(!G.exists(6, 9));
assert(!G.exists(8, 3));
assert(G.inDegree(0) == 0);
assert(G.inDegree(1) == 1);
assert(G.inDegree(2) == 1);
assert(G.inDegree(3) == 1);
assert(G.inDegree(4) == 1);
assert(G.inDegree(5) == 0);
assert(G.inDegree(6) == 1);
assert(G.inDegree(7) == 2);
assert(G.inDegree(8) == 1);
assert(G.inDegree(9) == 0);
assert(G.outDegree(0) == 2);
assert(G.outDegree(1) == 0);
assert(G.outDegree(2) == 0);
assert(G.outDegree(3) == 1);
assert(G.outDegree(4) == 1);
assert(G.outDegree(5) == 2);
assert(G.outDegree(6) == 1);
assert(G.outDegree(7) == 0);
assert(G.outDegree(8) == 0);
assert(G.outDegree(9) == 1);
}
void test_vertex_delete(){
GraphMatrix<char, int> G;
graph_demo(G);
G.removeVertex(0);
assert(G.num_of_vertices == 9);
assert(G.num_of_edges == 6);
assert(G.inDegree(0) == 0);
assert(G.inDegree(1) == 1);
assert(G.inDegree(2) == 1);
assert(G.inDegree(3) == 1);
assert(G.inDegree(4) == 0);
assert(G.inDegree(5) == 1);
assert(G.inDegree(6) == 1);
assert(G.inDegree(7) == 1);
assert(G.inDegree(8) == 0);
assert(G.outDegree(0) == 0);
assert(G.outDegree(1) == 0);
assert(G.outDegree(2) == 1);
assert(G.outDegree(3) == 1);
assert(G.outDegree(4) == 2);
assert(G.outDegree(5) == 1);
assert(G.outDegree(6) == 0);
assert(G.outDegree(7) == 0);
assert(G.outDegree(8) == 1);
G.removeVertex(5);
assert(G.num_of_vertices == 8);
assert(G.num_of_edges == 4);
assert(G.inDegree(0) == 0);
assert(G.inDegree(1) == 1);
assert(G.inDegree(2) == 1);
assert(G.inDegree(3) == 1);
assert(G.inDegree(4) == 0);
assert(G.inDegree(5) == 0);
assert(G.inDegree(6) == 1);
assert(G.inDegree(7) == 0);
assert(G.outDegree(0) == 0);
assert(G.outDegree(1) == 0);
assert(G.outDegree(2) == 1);
assert(G.outDegree(3) == 1);
assert(G.outDegree(4) == 2);
assert(G.outDegree(5) == 0);
assert(G.outDegree(6) == 0);
assert(G.outDegree(7) == 0);
}