| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Kunit test for drm_modes functions |
| */ |
| |
| #include <drm/drm_connector.h> |
| |
| #include <kunit/test.h> |
| |
| struct drm_get_tv_mode_from_name_test { |
| const char *name; |
| enum drm_connector_tv_mode expected_mode; |
| }; |
| |
| #define TV_MODE_NAME(_name, _mode) \ |
| { \ |
| .name = _name, \ |
| .expected_mode = _mode, \ |
| } |
| |
| static void drm_test_get_tv_mode_from_name_valid(struct kunit *test) |
| { |
| const struct drm_get_tv_mode_from_name_test *params = test->param_value; |
| |
| KUNIT_EXPECT_EQ(test, |
| drm_get_tv_mode_from_name(params->name, strlen(params->name)), |
| params->expected_mode); |
| } |
| |
| static const |
| struct drm_get_tv_mode_from_name_test drm_get_tv_mode_from_name_valid_tests[] = { |
| TV_MODE_NAME("NTSC", DRM_MODE_TV_MODE_NTSC), |
| TV_MODE_NAME("NTSC-443", DRM_MODE_TV_MODE_NTSC_443), |
| TV_MODE_NAME("NTSC-J", DRM_MODE_TV_MODE_NTSC_J), |
| TV_MODE_NAME("PAL", DRM_MODE_TV_MODE_PAL), |
| TV_MODE_NAME("PAL-M", DRM_MODE_TV_MODE_PAL_M), |
| TV_MODE_NAME("PAL-N", DRM_MODE_TV_MODE_PAL_N), |
| TV_MODE_NAME("SECAM", DRM_MODE_TV_MODE_SECAM), |
| }; |
| |
| static void |
| drm_get_tv_mode_from_name_valid_desc(const struct drm_get_tv_mode_from_name_test *t, |
| char *desc) |
| { |
| sprintf(desc, "%s", t->name); |
| } |
| |
| KUNIT_ARRAY_PARAM(drm_get_tv_mode_from_name_valid, |
| drm_get_tv_mode_from_name_valid_tests, |
| drm_get_tv_mode_from_name_valid_desc); |
| |
| static void drm_test_get_tv_mode_from_name_truncated(struct kunit *test) |
| { |
| const char *name = "NTS"; |
| int ret; |
| |
| ret = drm_get_tv_mode_from_name(name, strlen(name)); |
| KUNIT_EXPECT_LT(test, ret, 0); |
| }; |
| |
| static struct kunit_case drm_get_tv_mode_from_name_tests[] = { |
| KUNIT_CASE_PARAM(drm_test_get_tv_mode_from_name_valid, |
| drm_get_tv_mode_from_name_valid_gen_params), |
| KUNIT_CASE(drm_test_get_tv_mode_from_name_truncated), |
| { } |
| }; |
| |
| static struct kunit_suite drm_get_tv_mode_from_name_test_suite = { |
| .name = "drm_get_tv_mode_from_name", |
| .test_cases = drm_get_tv_mode_from_name_tests, |
| }; |
| |
| kunit_test_suite(drm_get_tv_mode_from_name_test_suite); |
| |
| MODULE_AUTHOR("Maxime Ripard <maxime@cerno.tech>"); |
| MODULE_LICENSE("GPL"); |