static void test_trivial(void) { struct agar_state *sr; aga_icost_t cost; const void *node; ok1(sr = agar_dijkstra_new(NULL, &trivial_graphr.gr, int2ptr(1))); ok1(agar_dijkstra_step(sr, &node)); ok1(ptr2int(node) == 1); ok1(!agar_dijkstra_step(sr, &node)); ok1(agar_dijkstra_path(sr, int2ptr(1), &cost, NULL, NULL)); ok1(cost == 0); tal_free(sr); }
static void test_parallel(void) { struct parallel_graphr pgr; struct agar_state *sr; aga_icost_t cost; const void *node, *edge; parallel_graphr_init(&pgr, 3, 0); ok1(sr = agar_dijkstra_new(NULL, &pgr.gr, int2ptr(1))); ok1(agar_dijkstra_step(sr, &node)); ok1(ptr2int(node) == 1); ok1(agar_dijkstra_step(sr, &node)); ok1(ptr2int(node) == 2); ok1(!agar_dijkstra_step(sr, &node)); ok1(agar_dijkstra_path(sr, int2ptr(1), &cost, NULL, NULL)); ok1(cost == 0); ok1(agar_dijkstra_path(sr, int2ptr(2), &cost, &node, NULL)); ok1(cost == 2); ok1(node == int2ptr(1)); tal_free(sr); ok1(sr = agar_dijkstra_new(NULL, &pgr.gr, int2ptr(2))); ok1(agar_dijkstra_step(sr, &node)); ok1(ptr2int(node) == 2); ok1(!agar_dijkstra_step(sr, &node)); ok1(agar_dijkstra_path(sr, int2ptr(2), &cost, NULL, NULL)); ok1(cost == 0); ok1(!agar_dijkstra_path(sr, int2ptr(1), NULL, NULL, NULL)); tal_free(sr); parallel_graphr_init(&pgr, 3, 2); ok1(sr = agar_dijkstra_new(NULL, &pgr.gr, int2ptr(1))); ok1(agar_dijkstra_path(sr, int2ptr(2), &cost, &node, &edge)); ok1(cost == 1); ok1(ptr2int(node) == 1); ok1(ptr2int(edge) == 2); tal_free(sr); }