}
struct curry {
- void *last;
+ void **arr;
+ size_t len;
};
-static void check_increasing(void *arg, void *key)
+static void store(void *arg, void *key)
{
struct curry *c = arg;
- if (c->last)
- check_int(t_compare(c->last, key), <, 0);
- c->last = key;
+ c->arr[c->len++] = key;
}
static void t_tree_search(void)
{
struct tree_node *root = NULL;
void *values[11] = { 0 };
- struct curry c = { 0 };
+ void *out[11] = { 0 };
+ struct curry c = {
+ .arr = (void **) &out,
+ };
size_t i = 1;
+ size_t count = 0;
do {
tree_search(&values[i], &root, t_compare, 1);
i = (i * 7) % 11;
+ count++;
} while (i != 1);
- infix_walk(root, &check_increasing, &c);
+ infix_walk(root, &store, &c);
+ for (i = 1; i < ARRAY_SIZE(values); i++)
+ check_pointer_eq(&values[i], out[i - 1]);
+ check(!out[i - 1]);
+ check_int(c.len, ==, count);
tree_free(root);
}