diff options
Diffstat (limited to 'src/tests')
| -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;  }  | 
