/* Graph tests */ #include "test.h" struct graph_st { char *from, *to; } graph[] = { { "A", "B" }, { "B", "C" }, { "B", "D" }, { "E", "F" }, { "F", "G" }, { "H", "A" }, { "I", NULL }, { NULL, NULL } }; int main(void) { vlist *list; vgraph *g; int i; TEST_START("graph"); g = vg_create(); for (i = 0; graph[i].from != NULL; i++) { vg_node(g, graph[i].from); if (graph[i].to != NULL) vg_link(g, graph[i].from, graph[i].to); } TEST("finding path", (list = vg_path_nodes(g, "A", "D")) != NULL && vl_length(list) == 3); TEST("path length", vg_path_length(g, "A", "D") == 2.0); TEST("connectivity", (list = vg_connected(g)) != NULL && vl_length(list) == 3); TEST("reachability", (list = vg_path_reachable(g, "H")) != NULL && vl_length(list) == 5); TEST_FINISH; }