On Tue, Aug 2, 2022 at 9:19 AM André Almeida <andrealmeid@xxxxxxxxxx> wrote: > Às 13:12 de 02/08/22, Maíra Canal escreveu: > > Increament the example_all_expect_macros_test with the > > KUNIT_EXPECT_ARREQ and KUNIT_EXPECT_ARRNEQ macros by creating a test > > with array assertions. > > > > Signed-off-by: Maíra Canal <mairacanal@xxxxxxxxxx> > > --- > > lib/kunit/kunit-example-test.c | 7 +++++++ > > 1 file changed, 7 insertions(+) > > > > diff --git a/lib/kunit/kunit-example-test.c b/lib/kunit/kunit-example-test.c > > index f8fe582c9e36..fc81a45d9cbc 100644 > > --- a/lib/kunit/kunit-example-test.c > > +++ b/lib/kunit/kunit-example-test.c > > @@ -86,6 +86,9 @@ static void example_mark_skipped_test(struct kunit *test) > > */ > > static void example_all_expect_macros_test(struct kunit *test) > > { > > + const u32 array[] = { 0x0F, 0xFF }; > > + const u32 expected[] = { 0x1F, 0xFF }; Given the distance between the definition and their use, perhaps we can give them clearer names. E.g. array + diff_array, or array1 + array2, etc. I think something to indicate they're arrays and that they're different. The current name `expected` is a bit unclear. > > + > > /* Boolean assertions */ > > KUNIT_EXPECT_TRUE(test, true); > > KUNIT_EXPECT_FALSE(test, false); > > @@ -109,6 +112,10 @@ static void example_all_expect_macros_test(struct kunit *test) > > KUNIT_EXPECT_STREQ(test, "hi", "hi"); > > KUNIT_EXPECT_STRNEQ(test, "hi", "bye"); > > > > + /* Array assertions */ > > + KUNIT_EXPECT_ARREQ(test, expected, expected, 2); > > + KUNIT_EXPECT_ARRNEQ(test, array, expected, 2); > > ARRAY_SIZE() is usually better than constants is this case. Note: that's actually incorrect! Ah right, this was the other blocker I had in mind. I wasn't sure how we'd handle the size parameter. Users might think ARRAY_SIZE() is fine and copy-paste it. But the size parameter is in units of bytes, not array elements! If the element types are not 1 byte, it'll silently not compare the full array. We'd want people to use KUNIT_EXPECT_ARREQ(test, expected, expected, sizeof(expected)); But this doesn't work for `u32 *array`, since it'll silently just compare 1 byte if people get them mixed up. I don't know how we make a maximally fool-proof version of this macro :\