]> git.ozlabs.org Git - ccan/blobdiff - ccan/order/test/run-fancy.c
order: total_order_cmp() helper and better tests
[ccan] / ccan / order / test / run-fancy.c
diff --git a/ccan/order/test/run-fancy.c b/ccan/order/test/run-fancy.c
new file mode 100644 (file)
index 0000000..be5ff3f
--- /dev/null
@@ -0,0 +1,68 @@
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <ccan/order/order.h>
+
+#include <ccan/tap/tap.h>
+
+#include "fancy_cmp.h"
+
+int main(int argc, char *argv[])
+{
+       struct item item1 = {
+               .value = 0,
+               .str = "aaa",
+       };
+       struct item item2 = {
+               .value = 0,
+               .str = "abb",
+       };
+       struct item item3 = {
+               .value = 0x1000,
+               .str = "baa",
+       };
+       struct cmp_info ctx1 = {
+               .xcode = 0,
+               .offset = 0,
+       };
+       struct cmp_info ctx2 = {
+               .xcode = 0x1000,
+               .offset = 1,
+       };
+       total_order(order1, struct item, struct cmp_info *) = {
+               fancy_cmp, &ctx1,
+       };
+       total_order(order2, struct item, struct cmp_info *) = {
+               fancy_cmp, &ctx2,
+       };
+
+       plan_tests(18);
+
+       ok1(total_order_cmp(order1, &item1, &item1) == 0);
+       ok1(total_order_cmp(order1, &item2, &item2) == 0);
+       ok1(total_order_cmp(order1, &item3, &item3) == 0);
+
+       ok1(total_order_cmp(order1, &item1, &item2) == -1);
+       ok1(total_order_cmp(order1, &item2, &item3) == -1);
+       ok1(total_order_cmp(order1, &item1, &item3) == -1);
+
+       ok1(total_order_cmp(order1, &item2, &item1) == 1);
+       ok1(total_order_cmp(order1, &item3, &item2) == 1);
+       ok1(total_order_cmp(order1, &item3, &item1) == 1);
+
+
+       ok1(total_order_cmp(order2, &item1, &item1) == 0);
+       ok1(total_order_cmp(order2, &item2, &item2) == 0);
+       ok1(total_order_cmp(order2, &item3, &item3) == 0);
+
+       ok1(total_order_cmp(order2, &item1, &item2) == 1);
+       ok1(total_order_cmp(order2, &item2, &item3) == 1);
+       ok1(total_order_cmp(order2, &item1, &item3) == 1);
+
+       ok1(total_order_cmp(order2, &item2, &item1) == -1);
+       ok1(total_order_cmp(order2, &item3, &item2) == -1);
+       ok1(total_order_cmp(order2, &item3, &item1) == -1);
+       
+       exit(0);
+}