Commit d32f7960 authored by Maíra Canal's avatar Maíra Canal Committed by Maíra Canal
Browse files

drm/tests: Split drm_test_dp_mst_calc_pbn_mode into parameterized tests



The drm_test_dp_mst_calc_pbn_mode is based on a loop that executes tests
for a couple of test cases. This could be better represented by
parameterized tests, provided by KUnit.

So, convert the drm_test_dp_mst_calc_pbn_mode into parameterized tests.

Signed-off-by: default avatarMaíra Canal <mcanal@igalia.com>
Reviewed-by: default avatarMichał Winiarski <michal.winiarski@intel.com>
Signed-off-by: default avatarMaíra Canal <mairacanal@riseup.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20221001223422.857505-1-mcanal@igalia.com
parent 202fb33b
Loading
Loading
Loading
Loading
+53 −24
Original line number Diff line number Diff line
@@ -16,33 +16,62 @@

#include "../display/drm_dp_mst_topology_internal.h"

static void drm_test_dp_mst_calc_pbn_mode(struct kunit *test)
struct drm_dp_mst_calc_pbn_mode_test {
	const int clock;
	const int bpp;
	const bool dsc;
	const int expected;
};

static const struct drm_dp_mst_calc_pbn_mode_test drm_dp_mst_calc_pbn_mode_cases[] = {
	{
		.clock = 154000,
		.bpp = 30,
		.dsc = false,
		.expected = 689
	},
	{
		.clock = 234000,
		.bpp = 30,
		.dsc = false,
		.expected = 1047
	},
	{
		.clock = 297000,
		.bpp = 24,
		.dsc = false,
		.expected = 1063
	},
	{
		.clock = 332880,
		.bpp = 24,
		.dsc = true,
		.expected = 50
	},
	{
	int pbn, i;
	const struct {
		int rate;
		int bpp;
		int expected;
		bool dsc;
	} test_params[] = {
		{ 154000, 30, 689, false },
		{ 234000, 30, 1047, false },
		{ 297000, 24, 1063, false },
		{ 332880, 24, 50, true },
		{ 324540, 24, 49, true },
		.clock = 324540,
		.bpp = 24,
		.dsc = true,
		.expected = 49
	},
};

	for (i = 0; i < ARRAY_SIZE(test_params); i++) {
		pbn = drm_dp_calc_pbn_mode(test_params[i].rate,
					   test_params[i].bpp,
					   test_params[i].dsc);
		KUNIT_EXPECT_EQ_MSG(test, pbn, test_params[i].expected,
				    "Expected PBN %d for clock %d bpp %d, got %d\n",
		     test_params[i].expected, test_params[i].rate,
		     test_params[i].bpp, pbn);
static void drm_test_dp_mst_calc_pbn_mode(struct kunit *test)
{
	const struct drm_dp_mst_calc_pbn_mode_test *params = test->param_value;

	KUNIT_EXPECT_EQ(test, drm_dp_calc_pbn_mode(params->clock, params->bpp, params->dsc),
			params->expected);
}

static void dp_mst_calc_pbn_mode_desc(const struct drm_dp_mst_calc_pbn_mode_test *t, char *desc)
{
	sprintf(desc, "Clock %d BPP %d DSC %s", t->clock, t->bpp, t->dsc ? "enabled" : "disabled");
}

KUNIT_ARRAY_PARAM(drm_dp_mst_calc_pbn_mode, drm_dp_mst_calc_pbn_mode_cases,
		  dp_mst_calc_pbn_mode_desc);

static bool
sideband_msg_req_equal(const struct drm_dp_sideband_msg_req_body *in,
		       const struct drm_dp_sideband_msg_req_body *out)
@@ -271,7 +300,7 @@ static void drm_test_dp_mst_sideband_msg_req_decode(struct kunit *test)
}

static struct kunit_case drm_dp_mst_helper_tests[] = {
	KUNIT_CASE(drm_test_dp_mst_calc_pbn_mode),
	KUNIT_CASE_PARAM(drm_test_dp_mst_calc_pbn_mode, drm_dp_mst_calc_pbn_mode_gen_params),
	KUNIT_CASE(drm_test_dp_mst_sideband_msg_req_decode),
	{ }
};