Re: [PATCH v2 5/5] t-reftable-tree: improve the test for infix_walk()
From: Patrick Steinhardt <hidden>
Date: 2024-06-12 06:59:55
On Wed, Jun 12, 2024 at 11:08:14AM +0530, Chandra Pratap wrote:
In the current testing setup for infix_walk(), the following properties of an infix traversal of a tree remain untested: - every node of the tree must be visited - every node must be visited exactly only
s/only/once
and only the property 'traversal in increasing order' is tested.
Nit: this reads a bit awkward. How about "In fact, we only verify that the traversal happens in increasing order."
quoted hunk ↗ jump to hunk
@@ -51,6 +50,7 @@ static void test_infix_walk(void) { struct tree_node *root = NULL; void *values[11] = { 0 }; + void *out[20] = { 0 };
From the test below it looks like we only expect 11 values to be added to `out`. Why does this array have length 20? We could of course also use something like `ALLOC_GROW()` to grow the array dynamically. But that'd likely be overkill.
quoted hunk ↗ jump to hunk
struct curry c = { 0 }; size_t i = 1;@@ -59,7 +59,11 @@ static void test_infix_walk(void) i = (i * 7) % 11; } while (i != 1); - infix_walk(root, &check_increasing, &c); + c.arr = (void **) &out;
We can initialize this variable directly when declaring `c`:
struct curry c = {
.arr = &out;
};
Also, is the cast necessary? This is the only site where we use `struct
curry` if I'm not mistaken, so I'd expect that the type of `arr` should
match our expectations.
+ infix_walk(root, &store, &c); + for (i = 1; i < ARRAY_SIZE(values); i++) + check_pointer_eq(values + i, out[i - 1]);
Let's also verify that `c.len` matches the expected number of nodes visited. Patrick
+ check(!out[i]); tree_free(root); }
Attachments
- signature.asc [application/pgp-signature] 833 bytes