On Thu, 11 Jul 2024 at 01:07, Eric Chan <[email protected]> wrote: > > Introduces KUNIT_ASSERT_MEMEQ and KUNIT_ASSERT_MEMNEQ macros > to provide assert-type equivalents for memory comparison. > While KUNIT_EXPECT_MEMEQ and KUNIT_EXPECT_MEMNEQ are available for > expectations, the addition of these new macros ensures that assertions > can also be used for memory comparisons, enhancing the consistency and > completeness of the kunit framework. > > Signed-off-by: Eric Chan <[email protected]> > ---
Nice catch, thanks! Reviewed-by: David Gow <[email protected]> Cheers, -- David > include/kunit/test.h | 54 ++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 54 insertions(+) > > diff --git a/include/kunit/test.h b/include/kunit/test.h > index d1b085fd5dc3..52bd50d2b150 100644 > --- a/include/kunit/test.h > +++ b/include/kunit/test.h > @@ -1451,6 +1451,60 @@ do { > \ > fmt, > \ > ##__VA_ARGS__) > > +/** > + * KUNIT_ASSERT_MEMEQ() - Asserts that the first @size bytes of @left and > @right are equal. > + * @test: The test context object. > + * @left: An arbitrary expression that evaluates to the specified size. > + * @right: An arbitrary expression that evaluates to the specified size. > + * @size: Number of bytes compared. > + * > + * Sets an assertion that the values that @left and @right evaluate to are > + * equal. This is semantically equivalent to > + * KUNIT_ASSERT_TRUE(@test, !memcmp((@left), (@right), (@size))). See > + * KUNIT_ASSERT_TRUE() for more information. > + * > + * Although this assertion works for any memory block, it is not recommended > + * for comparing more structured data, such as structs. This assertion is > + * recommended for comparing, for example, data arrays. > + */ > +#define KUNIT_ASSERT_MEMEQ(test, left, right, size) \ > + KUNIT_ASSERT_MEMEQ_MSG(test, left, right, size, NULL) > + > +#define KUNIT_ASSERT_MEMEQ_MSG(test, left, right, size, fmt, ...) > \ > + KUNIT_MEM_ASSERTION(test, > \ > + KUNIT_ASSERTION, > \ > + left, ==, right, > \ > + size, > \ > + fmt, > \ > + ##__VA_ARGS__) > + > +/** > + * KUNIT_ASSERT_MEMNEQ() - Asserts that the first @size bytes of @left and > @right are not equal. > + * @test: The test context object. > + * @left: An arbitrary expression that evaluates to the specified size. > + * @right: An arbitrary expression that evaluates to the specified size. > + * @size: Number of bytes compared. > + * > + * Sets an assertion that the values that @left and @right evaluate to are > + * not equal. This is semantically equivalent to > + * KUNIT_ASSERT_TRUE(@test, memcmp((@left), (@right), (@size))). See > + * KUNIT_ASSERT_TRUE() for more information. > + * > + * Although this assertion works for any memory block, it is not recommended > + * for comparing more structured data, such as structs. This assertion is > + * recommended for comparing, for example, data arrays. > + */ > +#define KUNIT_ASSERT_MEMNEQ(test, left, right, size) \ > + KUNIT_ASSERT_MEMNEQ_MSG(test, left, right, size, NULL) > + > +#define KUNIT_ASSERT_MEMNEQ_MSG(test, left, right, size, fmt, ...) > \ > + KUNIT_MEM_ASSERTION(test, > \ > + KUNIT_ASSERTION, > \ > + left, !=, right, > \ > + size, > \ > + fmt, > \ > + ##__VA_ARGS__) > + > /** > * KUNIT_ASSERT_NULL() - Asserts that pointers @ptr is null. > * @test: The test context object. > -- > 2.45.2.803.g4e1b14247a-goog
smime.p7s
Description: S/MIME Cryptographic Signature
