monitor-unit-tests: Check tiled monitor adding/removing notification

Check that the moniter manager backends get the tiled monitor
added/removed notification.

https://bugzilla.gnome.org/show_bug.cgi?id=777732
This commit is contained in:
Jonas Ådahl 2016-12-13 20:11:48 +08:00
parent 78799e58d2
commit 310064601c
3 changed files with 39 additions and 0 deletions

View File

@ -25,6 +25,8 @@ struct _MetaMonitorManagerTest
{
MetaMonitorManager parent;
int tiled_monitor_count;
MetaMonitorTestSetup *test_setup;
};
@ -55,6 +57,12 @@ meta_monitor_manager_test_emulate_hotplug (MetaMonitorManagerTest *manager_test,
g_free (old_test_setup);
}
int
meta_monitor_manager_test_get_tiled_monitor_count (MetaMonitorManagerTest *manager_test)
{
return manager_test->tiled_monitor_count;
}
static void
meta_monitor_manager_test_read_current (MetaMonitorManager *manager)
{
@ -189,6 +197,24 @@ meta_monitor_manager_test_apply_configuration (MetaMonitorManager *manager,
meta_monitor_manager_rebuild_derived (manager);
}
static void
meta_monitor_manager_test_tiled_monitor_added (MetaMonitorManager *manager,
MetaMonitor *monitor)
{
MetaMonitorManagerTest *manager_test = META_MONITOR_MANAGER_TEST (manager);
manager_test->tiled_monitor_count++;
}
static void
meta_monitor_manager_test_tiled_monitor_removed (MetaMonitorManager *manager,
MetaMonitor *monitor)
{
MetaMonitorManagerTest *manager_test = META_MONITOR_MANAGER_TEST (manager);
manager_test->tiled_monitor_count--;
}
static void
meta_monitor_manager_test_dispose (GObject *object)
{
@ -215,4 +241,6 @@ meta_monitor_manager_test_class_init (MetaMonitorManagerTestClass *klass)
manager_class->read_current = meta_monitor_manager_test_read_current;
manager_class->apply_configuration = meta_monitor_manager_test_apply_configuration;
manager_class->tiled_monitor_added = meta_monitor_manager_test_tiled_monitor_added;
manager_class->tiled_monitor_removed = meta_monitor_manager_test_tiled_monitor_removed;
}

View File

@ -41,4 +41,6 @@ void meta_monitor_manager_test_init_test_setup (MetaMonitorTestSetup *test_setup
void meta_monitor_manager_test_emulate_hotplug (MetaMonitorManagerTest *manager_test,
MetaMonitorTestSetup *test_setup);
int meta_monitor_manager_test_get_tiled_monitor_count (MetaMonitorManagerTest *manager_test);
#endif /* META_MONITOR_MANAGER_TEST_H */

View File

@ -135,6 +135,7 @@ typedef struct _MonitorTestCaseExpect
int n_logical_monitors;
int n_outputs;
int n_crtcs;
int n_tiled_monitors;
int screen_width;
int screen_height;
} MonitorTestCaseExpect;
@ -246,6 +247,9 @@ check_monitor_configuration (MonitorTestCase *test_case)
MetaBackend *backend = meta_get_backend ();
MetaMonitorManager *monitor_manager =
meta_backend_get_monitor_manager (backend);
MetaMonitorManagerTest *monitor_manager_test =
META_MONITOR_MANAGER_TEST (monitor_manager);
int tiled_monitor_count;
GList *monitors;
GList *logical_monitors;
int n_logical_monitors;
@ -257,6 +261,10 @@ check_monitor_configuration (MonitorTestCase *test_case)
g_assert ((int) monitor_manager->n_outputs == test_case->expect.n_outputs);
g_assert ((int) monitor_manager->n_crtcs == test_case->expect.n_crtcs);
tiled_monitor_count =
meta_monitor_manager_test_get_tiled_monitor_count (monitor_manager_test);
g_assert (tiled_monitor_count == test_case->expect.n_tiled_monitors);
monitors = meta_monitor_manager_get_monitors (monitor_manager);
g_assert ((int) g_list_length (monitors) == test_case->expect.n_monitors);
for (l = monitors, i = 0; l; l = l->next, i++)
@ -724,6 +732,7 @@ meta_test_monitor_tiled_linear_config (void)
.n_logical_monitors = 1,
.n_outputs = 2,
.n_crtcs = 2,
.n_tiled_monitors = 1,
.screen_width = 800,
.screen_height = 600,
}