1 #include <ccan/dgraph/dgraph.h>
2 /* Include the C files directly. */
3 #include <ccan/dgraph/dgraph.c>
4 #include <ccan/tap/tap.h>
6 static bool count_nodes(struct dgraph_node *n, unsigned int *count)
12 static bool stop_traverse(struct dgraph_node *n, unsigned int *count)
21 struct dgraph_node n1, n2, n3;
22 unsigned int count = 0;
24 /* This is how many tests you plan to run */
27 dgraph_init_node(&n1);
29 dgraph_traverse_from(&n1, count_nodes, &count);
32 dgraph_traverse_to(&n1, count_nodes, &count);
35 dgraph_init_node(&n2);
36 dgraph_add_edge(&n1, &n2);
38 dgraph_traverse_from(&n1, count_nodes, &count);
41 dgraph_traverse_to(&n1, count_nodes, &count);
44 dgraph_traverse_from(&n2, count_nodes, &count);
47 dgraph_traverse_to(&n2, count_nodes, &count);
50 dgraph_init_node(&n3);
51 dgraph_add_edge(&n2, &n3);
53 dgraph_traverse_from(&n1, count_nodes, &count);
56 dgraph_traverse_to(&n1, count_nodes, &count);
59 dgraph_traverse_from(&n2, count_nodes, &count);
62 dgraph_traverse_to(&n2, count_nodes, &count);
65 dgraph_traverse_from(&n3, count_nodes, &count);
68 dgraph_traverse_to(&n3, count_nodes, &count);
71 /* Check stopping traverse. */
73 dgraph_traverse_from(&n1, stop_traverse, &count);
76 dgraph_traverse_from(&n1, stop_traverse, &count);
79 dgraph_traverse_from(&n1, stop_traverse, &count);
82 dgraph_clear_node(&n1);
85 dgraph_traverse_from(&n2, count_nodes, &count);
88 dgraph_traverse_to(&n2, count_nodes, &count);
91 dgraph_traverse_from(&n3, count_nodes, &count);
94 dgraph_traverse_to(&n3, count_nodes, &count);
97 ok1(dgraph_del_edge(&n2, &n3));
99 dgraph_traverse_from(&n2, count_nodes, &count);
102 dgraph_traverse_to(&n2, count_nodes, &count);
105 dgraph_traverse_from(&n3, count_nodes, &count);
108 dgraph_traverse_to(&n3, count_nodes, &count);
111 ok1(!dgraph_del_edge(&n2, &n3));
112 dgraph_clear_node(&n2);
114 /* This exits depending on whether all tests passed */
115 return exit_status();