[PATCH 2/2] drm/format: Split into more granular test cases

Maíra Canal mairacanal at riseup.net
Wed Aug 31 22:15:11 UTC 2022


Hi Michał

Some very minor nits inline, but either way:

Reviewed-by: Maíra Canal <mairacanal at riseup.net>

On 8/31/22 18:56, Michał Winiarski wrote:
> While we have multiple test cases, most of them check multiple
> conditions, calling the function that is tested multiple times with
> different arguments (with comments that indicate test case boundary).
> This usually means that it can be easily converted into multiple test
> cases.
> 
> Passing output:
> ============================================================
> ================= drm_format (18 subtests) =================
> [PASSED] drm_format_block_width_invalid
> [PASSED] drm_format_block_width_one_plane
> [PASSED] drm_format_block_width_two_plane
> [PASSED] drm_format_block_width_three_plane
> [PASSED] drm_format_block_width_tiled
> [PASSED] drm_format_block_height_invalid
> [PASSED] drm_format_block_height_one_plane
> [PASSED] drm_format_block_height_two_plane
> [PASSED] drm_format_block_height_three_plane
> [PASSED] drm_format_block_height_tiled
> [PASSED] drm_format_min_pitch_invalid
> [PASSED] drm_format_min_pitch_one_plane_8bpp
> [PASSED] drm_format_min_pitch_one_plane_16bpp
> [PASSED] drm_format_min_pitch_one_plane_24bpp
> [PASSED] drm_format_min_pitch_one_plane_32bpp
> [PASSED] drm_format_min_pitch_two_plane
> [PASSED] drm_format_min_pitch_three_plane_8bpp
> [PASSED] drm_format_min_pitch_tiled

As Jani pointed out in [1], "drm_" prefix can be a bit confusing. I will 
send a patch tomorrow using the prefix "test_drm_" on all tests to make 
the naming more consistent. It would be nice if this patch already hold 
the new naming, but anyway I can send a patch changing it later with the 
new prefix gets approved.

[1] 
https://lore.kernel.org/dri-devel/20220831104941.doc75juindcm5mcl@nostramo.hardline.pl/T/#m82b4e710063b47029a8bd4716d137e575640da9a

> =================== [PASSED] drm_format ====================
> ============================================================
> Testing complete. Ran 18 tests: passed: 18
> 
> Signed-off-by: Michał Winiarski <michal.winiarski at intel.com>
> ---
>   drivers/gpu/drm/tests/drm_format_test.c | 156 ++++++++++++++++--------
>   1 file changed, 108 insertions(+), 48 deletions(-)
> 
> diff --git a/drivers/gpu/drm/tests/drm_format_test.c b/drivers/gpu/drm/tests/drm_format_test.c
> index 0efa88bf56a9..1936d2d59908 100644
> --- a/drivers/gpu/drm/tests/drm_format_test.c
> +++ b/drivers/gpu/drm/tests/drm_format_test.c
> @@ -9,100 +9,133 @@
>   
>   #include <drm/drm_fourcc.h>
>   
> -static void igt_check_drm_format_block_width(struct kunit *test)
> +static void drm_format_block_width_invalid(struct kunit *test)
>   {
>   	const struct drm_format_info *info = NULL;
>   
> -	/* Test invalid arguments */
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, -1), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 1), 0);
> +}
> +
> +static void drm_format_block_width_one_plane(struct kunit *test)
> +{
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_XRGB4444);
>   
> -	/* Test 1 plane format */
> -	info = drm_format_info(DRM_FORMAT_XRGB4444);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 0), 1);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 1), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, -1), 0);
> +}
> +
> +static void drm_format_block_width_two_plane(struct kunit *test)

s/plane/planes

Best Regards,
- Maíra Canal

> +{
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_NV12);
>   
> -	/* Test 2 planes format */
> -	info = drm_format_info(DRM_FORMAT_NV12);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 0), 1);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 1), 1);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 2), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, -1), 0);
> +}
> +
> +static void drm_format_block_width_three_plane(struct kunit *test)
> +{
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_YUV422);
>   
> -	/* Test 3 planes format */
> -	info = drm_format_info(DRM_FORMAT_YUV422);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 0), 1);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 1), 1);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 2), 1);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 3), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, -1), 0);
> +}
> +
> +static void drm_format_block_width_tiled(struct kunit *test)
> +{
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_X0L0);
>   
> -	/* Test a tiled format */
> -	info = drm_format_info(DRM_FORMAT_X0L0);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 0), 2);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 1), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, -1), 0);
>   }
>   
> -static void igt_check_drm_format_block_height(struct kunit *test)
> +static void drm_format_block_height_invalid(struct kunit *test)
>   {
>   	const struct drm_format_info *info = NULL;
>   
> -	/* Test invalid arguments */
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, -1), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 1), 0);
> +}
> +
> +static void drm_format_block_height_one_plane(struct kunit *test)
> +{
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_XRGB4444);
>   
> -	/* Test 1 plane format */
> -	info = drm_format_info(DRM_FORMAT_XRGB4444);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 0), 1);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, -1), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 1), 0);
> +}
> +
> +static void drm_format_block_height_two_plane(struct kunit *test)
> +{
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_NV12);
>   
> -	/* Test 2 planes format */
> -	info = drm_format_info(DRM_FORMAT_NV12);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 0), 1);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 1), 1);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 2), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, -1), 0);
> +}
> +
> +static void drm_format_block_height_three_plane(struct kunit *test)
> +{
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_YUV422);
>   
> -	/* Test 3 planes format */
> -	info = drm_format_info(DRM_FORMAT_YUV422);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 0), 1);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 1), 1);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 2), 1);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 3), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, -1), 0);
> +}
> +
> +static void drm_format_block_height_tiled(struct kunit *test)
> +{
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_X0L0);
>   
> -	/* Test a tiled format */
> -	info = drm_format_info(DRM_FORMAT_X0L0);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 0), 2);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 1), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, -1), 0);
>   }
>   
> -static void igt_check_drm_format_min_pitch_for_single_plane(struct kunit *test)
> +static void drm_format_min_pitch_invalid(struct kunit *test)
>   {
>   	const struct drm_format_info *info = NULL;
>   
> -	/* Test invalid arguments */
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> +}
> +
> +static void drm_format_min_pitch_one_plane_8bpp(struct kunit *test)
> +{
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_RGB332);
>   
> -	/* Test 1 plane 8 bits per pixel format */
> -	info = drm_format_info(DRM_FORMAT_RGB332);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> @@ -118,10 +151,14 @@ static void igt_check_drm_format_min_pitch_for_single_plane(struct kunit *test)
>   			(uint64_t)UINT_MAX);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, (UINT_MAX - 1)),
>   			(uint64_t)(UINT_MAX - 1));
> +}
> +
> +static void drm_format_min_pitch_one_plane_16bpp(struct kunit *test)
> +{
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_XRGB4444);
>   
> -	/* Test 1 plane 16 bits per pixel format */
> -	info = drm_format_info(DRM_FORMAT_XRGB4444);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> @@ -137,10 +174,14 @@ static void igt_check_drm_format_min_pitch_for_single_plane(struct kunit *test)
>   			(uint64_t)UINT_MAX * 2);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, (UINT_MAX - 1)),
>   			(uint64_t)(UINT_MAX - 1) * 2);
> +}
> +
> +static void drm_format_min_pitch_one_plane_24bpp(struct kunit *test)
> +{
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_RGB888);
>   
> -	/* Test 1 plane 24 bits per pixel format */
> -	info = drm_format_info(DRM_FORMAT_RGB888);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> @@ -154,12 +195,16 @@ static void igt_check_drm_format_min_pitch_for_single_plane(struct kunit *test)
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 671), 2013);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, UINT_MAX),
>   			(uint64_t)UINT_MAX * 3);
> -	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, (UINT_MAX - 1)),
> +	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, UINT_MAX - 1),
>   			(uint64_t)(UINT_MAX - 1) * 3);
> +}
> +
> +static void drm_format_min_pitch_one_plane_32bpp(struct kunit *test)
> +{
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_ABGR8888);
>   
> -	/* Test 1 plane 32 bits per pixel format */
> -	info = drm_format_info(DRM_FORMAT_ABGR8888);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> @@ -173,17 +218,16 @@ static void igt_check_drm_format_min_pitch_for_single_plane(struct kunit *test)
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 671), 2684);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, UINT_MAX),
>   			(uint64_t)UINT_MAX * 4);
> -	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, (UINT_MAX - 1)),
> +	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, UINT_MAX - 1),
>   			(uint64_t)(UINT_MAX - 1) * 4);
>   }
>   
> -static void igt_check_drm_format_min_pitch_for_multi_planar(struct kunit *test)
> +static void drm_format_min_pitch_two_plane(struct kunit *test)
>   {
> -	const struct drm_format_info *info = NULL;
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_NV12);
>   
> -	/* Test 2 planes format */
> -	info = drm_format_info(DRM_FORMAT_NV12);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
> @@ -211,10 +255,14 @@ static void igt_check_drm_format_min_pitch_for_multi_planar(struct kunit *test)
>   			(uint64_t)(UINT_MAX - 1));
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, (UINT_MAX - 1) /  2),
>   			(uint64_t)(UINT_MAX - 1));
> +}
> +
> +static void drm_format_min_pitch_three_plane_8bpp(struct kunit *test)
> +{
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_YUV422);
>   
> -	/* Test 3 planes 8 bits per pixel format */
> -	info = drm_format_info(DRM_FORMAT_YUV422);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 2, 0), 0);
> @@ -256,13 +304,12 @@ static void igt_check_drm_format_min_pitch_for_multi_planar(struct kunit *test)
>   			(uint64_t)(UINT_MAX - 1) / 2);
>   }
>   
> -static void igt_check_drm_format_min_pitch_for_tiled_format(struct kunit *test)
> +static void drm_format_min_pitch_tiled(struct kunit *test)
>   {
> -	const struct drm_format_info *info = NULL;
> +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_X0L2);
>   
> -	/* Test tiled format */
> -	info = drm_format_info(DRM_FORMAT_X0L2);
>   	KUNIT_ASSERT_NOT_NULL(test, info);
> +
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
>   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> @@ -281,12 +328,25 @@ static void igt_check_drm_format_min_pitch_for_tiled_format(struct kunit *test)
>   }
>   
>   static struct kunit_case drm_format_tests[] = {
> -	KUNIT_CASE(igt_check_drm_format_block_width),
> -	KUNIT_CASE(igt_check_drm_format_block_height),
> -	KUNIT_CASE(igt_check_drm_format_min_pitch_for_single_plane),
> -	KUNIT_CASE(igt_check_drm_format_min_pitch_for_multi_planar),
> -	KUNIT_CASE(igt_check_drm_format_min_pitch_for_tiled_format),
> -	{ }
> +	KUNIT_CASE(drm_format_block_width_invalid),
> +	KUNIT_CASE(drm_format_block_width_one_plane),
> +	KUNIT_CASE(drm_format_block_width_two_plane),
> +	KUNIT_CASE(drm_format_block_width_three_plane),
> +	KUNIT_CASE(drm_format_block_width_tiled),
> +	KUNIT_CASE(drm_format_block_height_invalid),
> +	KUNIT_CASE(drm_format_block_height_one_plane),
> +	KUNIT_CASE(drm_format_block_height_two_plane),
> +	KUNIT_CASE(drm_format_block_height_three_plane),
> +	KUNIT_CASE(drm_format_block_height_tiled),
> +	KUNIT_CASE(drm_format_min_pitch_invalid),
> +	KUNIT_CASE(drm_format_min_pitch_one_plane_8bpp),
> +	KUNIT_CASE(drm_format_min_pitch_one_plane_16bpp),
> +	KUNIT_CASE(drm_format_min_pitch_one_plane_24bpp),
> +	KUNIT_CASE(drm_format_min_pitch_one_plane_32bpp),
> +	KUNIT_CASE(drm_format_min_pitch_two_plane),
> +	KUNIT_CASE(drm_format_min_pitch_three_plane_8bpp),
> +	KUNIT_CASE(drm_format_min_pitch_tiled),
> +	{}
>   };
>   
>   static struct kunit_suite drm_format_test_suite = {


More information about the dri-devel mailing list