int main(void) { struct trivial_graphr tgr; struct parallel_graphr pgr; struct full_graphr fgr; struct chain_graphr cgr; struct grid_graphr ggr1, ggr2; struct error_graphr egr; plan_tests(1 + 5 + 30 + 22 + 21 + 33 + 6); trivial_graphr_init(&tgr); test_adjacency("trivial", &tgr.gr, trivial_adjacencyr); parallel_graphr_init(&pgr, 3); test_adjacency("parallel nlinks 3", &pgr.gr, parallel_adjacencyr_nlinks3); full_graphr_init(&fgr, 5); test_adjacency("full 5", &fgr.gr, full_adjacencyr_5); chain_graphr_init(&cgr, 8); test_adjacency("chain 8", &cgr.fgr.gr, chain_adjacencyr_8); grid_graphr_init(&ggr1, 3, 3, true, true, false, false); test_adjacency("grid 3x3 right-down", &ggr1.gr, grid_adjacencyr_3x3_rightdown); grid_graphr_init(&ggr2, 3, 3, true, true, true, true); test_adjacency("grid 3x3 all", &ggr2.gr, grid_adjacencyr_3x3_all); error_graphr_init(&egr); test_adjacency("error graph", &egr.gr, error_adjacencyr); return exit_status(); }
static void test_error(void) { struct error_graphr egr; struct agar_state *sr; aga_icost_t cost; error_graphr_init(&egr); ok1(sr = agar_dijkstra_new(NULL, &egr.gr, int2ptr(1))); ok1(agar_dijkstra_path(sr, int2ptr(1), &cost, NULL, NULL)); ok1(cost == 0); ok1(agar_dijkstra_path(sr, int2ptr(2), &cost, NULL, NULL)); ok1(cost == 1); ok1(!agar_dijkstra_path(sr, int2ptr(3), &cost, NULL, NULL)); ok1(!agar_dijkstra_path(sr, int2ptr(4), &cost, NULL, NULL)); tal_free(sr); ok1(sr = agar_dijkstra_new(NULL, &egr.gr, int2ptr(3))); ok1(agar_dijkstra_path(sr, int2ptr(3), &cost, NULL, NULL)); ok1(cost == 0); ok1(!agar_dijkstra_path(sr, int2ptr(4), &cost, NULL, NULL)); ok1(agar_error(sr) == -1); tal_free(sr); }
int main(void) { struct trivial_graphr tgr; struct parallel_graphr pgr; struct full_graphr fgr; struct chain_graphr cgr; struct grid_graphr ggr1, ggr2; struct error_graphr egr; struct traversal1_graphr t1gr; struct agar_state *sr; const void *nr; plan_tests(2 * 13 + 12 + 10); trivial_graphr_init(&tgr); test_dfs(&tgr.gr, 1, 1); parallel_graphr_init(&pgr, 3); test_dfs(&pgr.gr, 1, 1, 2); full_graphr_init(&fgr, 5); test_dfs(&fgr.gr, 1, 1, 2, 3, 4, 5); test_dfs(&fgr.gr, 3, 3, 1, 2, 4, 5); chain_graphr_init(&cgr, 8); test_dfs(&cgr.fgr.gr, 1, 1, 2, 3, 4, 5, 6, 7, 8); test_dfs(&cgr.fgr.gr, 8, 8, 7, 6, 5, 4, 3, 2, 1); test_dfs(&cgr.fgr.gr, 5, 5, 4, 3, 2, 1, 6, 7, 8); grid_graphr_init(&ggr1, 3, 3, true, true, false, false); test_dfs(&ggr1.gr, 1, 1, 2, 3, 6, 9, 5, 8, 4, 7); test_dfs(&ggr1.gr, 5, 5, 6, 9, 8); test_dfs(&ggr1.gr, 9, 9); grid_graphr_init(&ggr2, 3, 3, true, true, true, true); test_dfs(&ggr2.gr, 1, 1, 2, 3, 6, 9, 8, 7, 4, 5); test_dfs(&ggr2.gr, 5, 5, 6, 9, 8, 7, 4, 1, 2, 3); test_dfs(&ggr2.gr, 9, 9, 8, 7, 4, 5, 6, 3, 2, 1); error_graphr_init(&egr); test_dfs(&egr.gr, 1, 1, 2); ok((sr = agar_dfs_new(NULL, &egr.gr)), "started error traversal"); ok1(agar_dfs_explore(sr, int2ptr(3), &nr)); ok(ptr2int(nr) == 3, "Expected node #3, actually #%ld", ptr2int(nr)); ok1(agar_dfs_explore(sr, nr, &nr)); ok(ptr2int(nr) == 4, "Expected node #4, actually #%ld", ptr2int(nr)); ok1(!agar_dfs_explore(sr, nr, &nr)); ok(agar_error(sr) == -1, "Error is %d (expected -1)", agar_error(sr)); ok1(!agar_dfs_explore(sr, nr, &nr)); tal_free(sr); test_dfs(&egr.gr, 1, 1, 2); traversal1_graphr_init(&t1gr); test_dfs(&t1gr.gr, 1, 1, 2, 4, 5, 3, 6); test_dfs(&t1gr.gr, 9, 9, 8, 6, 5, 7, 4); ok1((sr = agar_dfs_new(NULL, &t1gr.gr))); test_dfs_partial(sr, 1, 1, 2, 4, 5, 3, 6); test_dfs_partial(sr, 9, 9, 8, 7); tal_free(sr); ok1((sr = agar_dfs_new(NULL, &t1gr.gr))); test_dfs_partial(sr, 9, 9, 8, 6, 5, 7, 4); test_dfs_partial(sr, 1, 1, 2, 3); tal_free(sr); return exit_status(); }