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: Maíra Canal <mca...@igalia.com>
Reviewed-by: Michał Winiarski <michal.winiar...@intel.com>
---
v1 -> v2: 
https://lore.kernel.org/dri-devel/20220925222719.345424-1-mca...@igalia.com/T/#m056610a23a63109484afeafefb5846178c4d36b2
- Add Michał's Reviewed-by tag.

v2 -> v3: 
https://lore.kernel.org/dri-devel/20220927221206.55930-1-mca...@igalia.com/T/#m2dc961da2d4921566cd0f9a8ed9d2d33a1cf4416
- No changes.
---
 .../gpu/drm/tests/drm_dp_mst_helper_test.c    | 77 +++++++++++++------
 1 file changed, 53 insertions(+), 24 deletions(-)

diff --git a/drivers/gpu/drm/tests/drm_dp_mst_helper_test.c 
b/drivers/gpu/drm/tests/drm_dp_mst_helper_test.c
index 65c9d225b558..12f41881db6b 100644
--- a/drivers/gpu/drm/tests/drm_dp_mst_helper_test.c
+++ b/drivers/gpu/drm/tests/drm_dp_mst_helper_test.c
@@ -16,33 +16,62 @@
 
 #include "../display/drm_dp_mst_topology_internal.h"
 
+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
+       },
+       {
+               .clock = 324540,
+               .bpp = 24,
+               .dsc = true,
+               .expected = 49
+       },
+};
+
 static void drm_test_dp_mst_calc_pbn_mode(struct kunit *test)
 {
-       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 },
-       };
-
-       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);
-       }
+       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),
        { }
 };
-- 
2.37.3

Reply via email to