diff options
Diffstat (limited to 'src/tests/eina_graph_suite.c')
-rw-r--r-- | src/tests/eina_graph_suite.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/tests/eina_graph_suite.c b/src/tests/eina_graph_suite.c index c187159..138d852 100644 --- a/src/tests/eina_graph_suite.c +++ b/src/tests/eina_graph_suite.c @@ -3,6 +3,7 @@ #endif /* HAVE_CONFIG_H */ #include <check.h> +#include <limits.h> #include "Eina_Graph.h" static void @@ -23,6 +24,45 @@ _feed_simple_graph(Eina_Graph *g) ck_assert(eina_graph_edge_add(g, 5, 3) == EINA_TRUE); } +START_TEST (test_eina_graph_simple_bfs) +{ + Eina_Graph_BFS *bfs; + Eina_List *path, *l; + void *data; + int i; + unsigned int vsr[] = { 0, 5, 3 }; + + ck_assert(eina_graph_init() == 1); + Eina_Graph *g = eina_graph_new(13, 2); + ck_assert(g != NULL); + + _feed_simple_graph(g); + + bfs = eina_graph_bfs_new(g, 0); + ck_assert(eina_graph_bfs_source(bfs) == 0); + ck_assert(eina_graph_bfs_has_path_to(bfs, 12) == EINA_FALSE); + ck_assert(eina_graph_bfs_path_to(bfs, 12) == NULL); + ck_assert(eina_graph_bfs_path_to(bfs, 15) == NULL); + ck_assert(eina_graph_bfs_dist_to(bfs, 15) == UINT_MAX); + ck_assert(eina_graph_bfs_has_path_to(bfs, 3) == EINA_TRUE); + ck_assert(eina_graph_bfs_dist_to(bfs, 3) == 2); + path = eina_graph_bfs_path_to(bfs, 3); + ck_assert(path != NULL); + ck_assert(eina_list_count(path) == (sizeof(vsr)/sizeof(*vsr))); + i = 0; + EINA_LIST_FOREACH(path, l, data) + { + ck_assert(vsr[i] == CAST_D(data)); + i++; + } + eina_graph_bfs_free(bfs); + + eina_graph_free(g); + + ck_assert(eina_graph_shutdown() == 0); +} +END_TEST + START_TEST (test_eina_graph_simple_dfs) { Eina_Graph_DFS *dfs; @@ -133,6 +173,10 @@ eina_graph_suite (void) tcase_add_test (tc_simple_dfs, test_eina_graph_simple_dfs); suite_add_tcase (s, tc_simple_dfs); + TCase *tc_simple_bfs = tcase_create ("Simple Graph BFS"); + tcase_add_test (tc_simple_bfs, test_eina_graph_simple_bfs); + suite_add_tcase (s, tc_simple_bfs); + return s; } |