Re: [PATCH v2 5/5] t-reftable-tree: improve the test for infix_walk()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 12 Jun 2024 at 12:29, Patrick Steinhardt <ps@xxxxxx> wrote:
>
> 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."
>
> > @@ -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?

That's an error. I'll correct it in the next iteration.

> We could of course also use something like `ALLOC_GROW()` to grow the
> array dynamically. But that'd likely be overkill.
>
> >       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;
>     };

Right, this seems more concise.

> 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.

Trying to do this without a cast produces the following compilation error
for me:
initialization of ‘void **’ from incompatible pointer type ‘void * (*)[11]’

> > +     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.

Sure.





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux