]> git.ozlabs.org Git - ccan/blobdiff - ccan/aga/test/api-concurrent.c
aga: Testcase for attempt to run concurrent algorithms
[ccan] / ccan / aga / test / api-concurrent.c
diff --git a/ccan/aga/test/api-concurrent.c b/ccan/aga/test/api-concurrent.c
new file mode 100644 (file)
index 0000000..19d0eab
--- /dev/null
@@ -0,0 +1,52 @@
+#include "config.h"
+
+#include <stddef.h>
+#include <assert.h>
+
+#include <ccan/aga/aga.h>
+
+#include <ccan/tap/tap.h>
+
+#include "simple-graph.h"
+
+
+#define NUM_ALGOS      2
+
+#define check_one_inner(algo) \
+       ok1(aga_##algo##_start(&tg.sg.g) == -1);
+
+#define check_all_inner()                      \
+       do {                                    \
+               check_one_inner(dfs);           \
+               check_one_inner(bfs);           \
+       } while (0)
+
+#define check_one_outer(algo)                                  \
+       do {                                                    \
+               ok1(aga_##algo##_start(&tg.sg.g) == 0);         \
+               check_all_inner();                              \
+               aga_finish(&tg.sg.g);                           \
+       } while (0)
+
+#define check_all_outer()                      \
+       do {                                    \
+               check_one_outer(dfs);           \
+               check_one_outer(bfs);           \
+       } while (0)
+
+int main(void)
+{
+       struct trivial_graph tg;
+
+       if (NUM_ALGOS)
+               plan_tests(NUM_ALGOS + NUM_ALGOS * NUM_ALGOS);
+       else
+               plan_skip_all("Nothing to test");
+
+       trivial_graph_init(&tg);
+
+       check_all_outer();
+
+       /* This exits depending on whether all tests passed */
+       return exit_status();
+}