diff --git a/src/tests/meta-monitor-manager-test.c b/src/tests/meta-monitor-manager-test.c index 88e7c297d..c5249cd2f 100644 --- a/src/tests/meta-monitor-manager-test.c +++ b/src/tests/meta-monitor-manager-test.c @@ -21,74 +21,42 @@ #include "tests/meta-monitor-manager-test.h" -#define ALL_TRANSFORMS ((1 << (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)) - 1) - struct _MetaMonitorManagerTest { MetaMonitorManager parent; + + MetaMonitorTestSetup *test_setup; }; G_DEFINE_TYPE (MetaMonitorManagerTest, meta_monitor_manager_test, META_TYPE_MONITOR_MANAGER) +static MetaMonitorTestSetup *_initial_test_setup = NULL; + +void +meta_monitor_manager_test_init_test_setup (MetaMonitorTestSetup *test_setup) +{ + _initial_test_setup = test_setup; +} + static void meta_monitor_manager_test_read_current (MetaMonitorManager *manager) { - int n_monitors = 2; - int i; + MetaMonitorManagerTest *manager_test = META_MONITOR_MANAGER_TEST (manager); manager->max_screen_width = 65535; manager->max_screen_height = 65535; - manager->screen_width = 1024; - manager->screen_height = 768; - manager->modes = g_new0 (MetaMonitorMode, 1); - manager->n_modes = 1; + g_assert (manager_test->test_setup); - manager->modes[0].mode_id = 0; - manager->modes[0].width = 1024; - manager->modes[0].height = 768; - manager->modes[0].refresh_rate = 60.0; + manager->modes = manager_test->test_setup->modes; + manager->n_modes = manager_test->test_setup->n_modes; - manager->crtcs = g_new0 (MetaCRTC, n_monitors); - manager->n_crtcs = n_monitors; - manager->outputs = g_new0 (MetaOutput, n_monitors); - manager->n_outputs = n_monitors; + manager->crtcs = manager_test->test_setup->crtcs; + manager->n_crtcs = manager_test->test_setup->n_crtcs; - for (i = 0; i < n_monitors; i++) - { - manager->crtcs[i].crtc_id = i + 1; - manager->crtcs[i].current_mode = &manager->modes[0]; - manager->crtcs[i].transform = META_MONITOR_TRANSFORM_NORMAL; - manager->crtcs[i].all_transforms = ALL_TRANSFORMS; - - - manager->outputs[i].crtc = &manager->crtcs[i]; - manager->outputs[i].winsys_id = i + 1; - manager->outputs[i].name = g_strdup_printf ("LVDS%d", i + 1); - manager->outputs[i].vendor = g_strdup ("MetaProducts Inc."); - manager->outputs[i].product = g_strdup ("unknown"); - manager->outputs[i].serial = g_strdup ("0xC0FFEE"); - manager->outputs[i].suggested_x = -1; - manager->outputs[i].suggested_y = -1; - manager->outputs[i].width_mm = 222; - manager->outputs[i].height_mm = 125; - manager->outputs[i].subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN; - manager->outputs[i].preferred_mode = &manager->modes[0]; - manager->outputs[i].n_modes = 1; - manager->outputs[i].modes = g_new0 (MetaMonitorMode *, 1); - manager->outputs[i].modes[0] = &manager->modes[0]; - manager->outputs[i].n_possible_crtcs = 1; - manager->outputs[i].possible_crtcs = g_new0 (MetaCRTC *, 1); - manager->outputs[i].possible_crtcs[0] = &manager->crtcs[i]; - manager->outputs[i].n_possible_clones = 0; - manager->outputs[i].possible_clones = g_new0 (MetaOutput *, 0); - manager->outputs[i].backlight = -1; - manager->outputs[i].backlight_min = 0; - manager->outputs[i].backlight_max = 0; - manager->outputs[i].connector_type = META_CONNECTOR_TYPE_LVDS; - manager->outputs[i].scale = 1; - } + manager->outputs = manager_test->test_setup->outputs; + manager->n_outputs = manager_test->test_setup->n_outputs; } static void @@ -208,6 +176,9 @@ meta_monitor_manager_test_apply_configuration (MetaMonitorManager *manager, static void meta_monitor_manager_test_init (MetaMonitorManagerTest *manager_test) { + g_assert (_initial_test_setup); + + manager_test->test_setup = _initial_test_setup; } static void diff --git a/src/tests/meta-monitor-manager-test.h b/src/tests/meta-monitor-manager-test.h index 91120ca90..4ad909554 100644 --- a/src/tests/meta-monitor-manager-test.h +++ b/src/tests/meta-monitor-manager-test.h @@ -22,8 +22,20 @@ #include "backends/meta-monitor-manager-private.h" +typedef struct _MetaMonitorTestSetup +{ + MetaMonitorMode *modes; + int n_modes; + MetaOutput *outputs; + int n_outputs; + MetaCRTC *crtcs; + int n_crtcs; +} MetaMonitorTestSetup; + #define META_TYPE_MONITOR_MANAGER_TEST (meta_monitor_manager_test_get_type ()) G_DECLARE_FINAL_TYPE (MetaMonitorManagerTest, meta_monitor_manager_test, META, MONITOR_MANAGER_TEST, MetaMonitorManager) +void meta_monitor_manager_test_init_test_setup (MetaMonitorTestSetup *test_setup); + #endif /* META_MONITOR_MANAGER_TEST_H */ diff --git a/src/tests/monitor-unit-tests.c b/src/tests/monitor-unit-tests.c index 3aa71878a..62712b53f 100644 --- a/src/tests/monitor-unit-tests.c +++ b/src/tests/monitor-unit-tests.c @@ -22,6 +22,11 @@ #include "tests/monitor-unit-tests.h" #include "backends/meta-backend-private.h" +#include "tests/meta-monitor-manager-test.h" + +#define ALL_TRANSFORMS ((1 << (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)) - 1) + +static MetaMonitorTestSetup *current_test_setup = NULL; static void meta_test_monitor_linear_config (void) @@ -60,9 +65,69 @@ meta_test_monitor_linear_config (void) } } +static void +setup_initial_monitor_test_setup (void) +{ + MetaMonitorTestSetup *test_setup; + int n_monitors = 2; + int i; + + test_setup = g_new0 (MetaMonitorTestSetup, 1); + + test_setup->n_modes = 1; + test_setup->modes = g_new0 (MetaMonitorMode, 1); + test_setup->modes[0].mode_id = 0; + test_setup->modes[0].width = 1024; + test_setup->modes[0].height = 768; + test_setup->modes[0].refresh_rate = 60.0; + + test_setup->n_crtcs = n_monitors; + test_setup->crtcs = g_new0 (MetaCRTC, n_monitors); + + test_setup->n_outputs = n_monitors; + test_setup->outputs = g_new0 (MetaOutput, n_monitors); + + for (i = 0; i < n_monitors; i++) + { + test_setup->crtcs[i].crtc_id = i + 1; + test_setup->crtcs[i].current_mode = &test_setup->modes[0]; + test_setup->crtcs[i].transform = META_MONITOR_TRANSFORM_NORMAL; + test_setup->crtcs[i].all_transforms = ALL_TRANSFORMS; + + test_setup->outputs[i].crtc = &test_setup->crtcs[i]; + test_setup->outputs[i].winsys_id = i + 1; + test_setup->outputs[i].name = g_strdup_printf ("LVDS%d", i + 1); + test_setup->outputs[i].vendor = g_strdup ("MetaProducts Inc."); + test_setup->outputs[i].product = g_strdup ("unknown"); + test_setup->outputs[i].serial = g_strdup ("0xC0FFEE"); + test_setup->outputs[i].suggested_x = -1; + test_setup->outputs[i].suggested_y = -1; + test_setup->outputs[i].width_mm = 222; + test_setup->outputs[i].height_mm = 125; + test_setup->outputs[i].subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN; + test_setup->outputs[i].preferred_mode = &test_setup->modes[0]; + test_setup->outputs[i].n_modes = 1; + test_setup->outputs[i].modes = g_new0 (MetaMonitorMode *, 1); + test_setup->outputs[i].modes[0] = &test_setup->modes[0]; + test_setup->outputs[i].n_possible_crtcs = 1; + test_setup->outputs[i].possible_crtcs = g_new0 (MetaCRTC *, 1); + test_setup->outputs[i].possible_crtcs[0] = &test_setup->crtcs[i]; + test_setup->outputs[i].n_possible_clones = 0; + test_setup->outputs[i].possible_clones = NULL; + test_setup->outputs[i].backlight = -1; + test_setup->outputs[i].connector_type = META_CONNECTOR_TYPE_LVDS; + test_setup->outputs[i].scale = 1; + } + + meta_monitor_manager_test_init_test_setup (test_setup); + current_test_setup = test_setup; +} + void init_monitor_tests (void) { + setup_initial_monitor_test_setup (); + g_test_add_func ("/backends/monitor/linear-config", meta_test_monitor_linear_config); } diff --git a/src/tests/unit-tests.c b/src/tests/unit-tests.c index 4f2856b8d..7b7818c07 100644 --- a/src/tests/unit-tests.c +++ b/src/tests/unit-tests.c @@ -221,6 +221,8 @@ main (int argc, char *argv[]) g_option_context_free (ctx); + init_tests (argc, argv); + meta_plugin_manager_load ("default"); meta_override_compositor_configuration (META_COMPOSITOR_TYPE_WAYLAND, @@ -230,7 +232,6 @@ main (int argc, char *argv[]) meta_init (); meta_register_with_session (); - init_tests (argc, argv); g_idle_add (run_tests, NULL); return meta_run ();