summaryrefslogtreecommitdiff
path: root/src/tests/monitor-store-unit-tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/monitor-store-unit-tests.c')
-rw-r--r--src/tests/monitor-store-unit-tests.c864
1 files changed, 0 insertions, 864 deletions
diff --git a/src/tests/monitor-store-unit-tests.c b/src/tests/monitor-store-unit-tests.c
deleted file mode 100644
index b9d5622b7..000000000
--- a/src/tests/monitor-store-unit-tests.c
+++ /dev/null
@@ -1,864 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
-
-/*
- * Copyright (C) 2016 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "config.h"
-
-#include "tests/monitor-store-unit-tests.h"
-
-#include "backends/meta-backend-private.h"
-#include "backends/meta-monitor-config-store.h"
-#include "backends/meta-monitor-config-manager.h"
-#include "backends/meta-monitor-manager-private.h"
-#include "tests/monitor-test-utils.h"
-
-#define MAX_N_MONITORS 10
-#define MAX_N_LOGICAL_MONITORS 10
-#define MAX_N_CONFIGURATIONS 10
-
-typedef struct _MonitorStoreTestCaseMonitorMode
-{
- int width;
- int height;
- float refresh_rate;
- MetaCrtcModeFlag flags;
-} MonitorStoreTestCaseMonitorMode;
-
-typedef struct _MonitorStoreTestCaseMonitor
-{
- const char *connector;
- const char *vendor;
- const char *product;
- const char *serial;
- MonitorStoreTestCaseMonitorMode mode;
- gboolean is_underscanning;
-} MonitorStoreTestCaseMonitor;
-
-typedef struct _MonitorStoreTestCaseLogicalMonitor
-{
- MetaRectangle layout;
- float scale;
- MetaMonitorTransform transform;
- gboolean is_primary;
- gboolean is_presentation;
- MonitorStoreTestCaseMonitor monitors[MAX_N_MONITORS];
- int n_monitors;
-} MonitorStoreTestCaseLogicalMonitor;
-
-typedef struct _MonitorStoreTestConfiguration
-{
- MonitorStoreTestCaseLogicalMonitor logical_monitors[MAX_N_LOGICAL_MONITORS];
- int n_logical_monitors;
-} MonitorStoreTestConfiguration;
-
-typedef struct _MonitorStoreTestExpect
-{
- MonitorStoreTestConfiguration configurations[MAX_N_CONFIGURATIONS];
- int n_configurations;
-} MonitorStoreTestExpect;
-
-static MetaMonitorsConfigKey *
-create_config_key_from_expect (MonitorStoreTestConfiguration *expect_config)
-{
- MetaMonitorsConfigKey *config_key;
- GList *monitor_specs;
- int i;
-
- monitor_specs = NULL;
- for (i = 0; i < expect_config->n_logical_monitors; i++)
- {
- int j;
-
- for (j = 0; j < expect_config->logical_monitors[i].n_monitors; j++)
- {
- MetaMonitorSpec *monitor_spec;
- MonitorStoreTestCaseMonitor *test_monitor =
- &expect_config->logical_monitors[i].monitors[j];
-
- monitor_spec = g_new0 (MetaMonitorSpec, 1);
-
- monitor_spec->connector = g_strdup (test_monitor->connector);
- monitor_spec->vendor = g_strdup (test_monitor->vendor);
- monitor_spec->product = g_strdup (test_monitor->product);
- monitor_spec->serial = g_strdup (test_monitor->serial);
-
- monitor_specs = g_list_prepend (monitor_specs, monitor_spec);
- }
- }
-
- g_assert_nonnull (monitor_specs);
-
- monitor_specs = g_list_sort (monitor_specs,
- (GCompareFunc) meta_monitor_spec_compare);
-
- config_key = g_new0 (MetaMonitorsConfigKey, 1);
- *config_key = (MetaMonitorsConfigKey) {
- .monitor_specs = monitor_specs
- };
-
- return config_key;
-}
-
-static void
-check_monitor_store_configuration (MetaMonitorConfigStore *config_store,
- MonitorStoreTestConfiguration *config_expect)
-{
- MetaMonitorsConfigKey *config_key;
- MetaMonitorsConfig *config;
- GList *l;
- int i;
-
- config_key = create_config_key_from_expect (config_expect);
- config = meta_monitor_config_store_lookup (config_store, config_key);
- g_assert_nonnull (config);
-
- g_assert (meta_monitors_config_key_equal (config->key, config_key));
- meta_monitors_config_key_free (config_key);
-
- g_assert_cmpuint (g_list_length (config->logical_monitor_configs),
- ==,
- config_expect->n_logical_monitors);
-
- for (l = config->logical_monitor_configs, i = 0; l; l = l->next, i++)
- {
- MetaLogicalMonitorConfig *logical_monitor_config = l->data;
- GList *k;
- int j;
-
- g_assert (meta_rectangle_equal (&logical_monitor_config->layout,
- &config_expect->logical_monitors[i].layout));
- g_assert_cmpfloat (logical_monitor_config->scale,
- ==,
- config_expect->logical_monitors[i].scale);
- g_assert_cmpint (logical_monitor_config->transform,
- ==,
- config_expect->logical_monitors[i].transform);
- g_assert_cmpint (logical_monitor_config->is_primary,
- ==,
- config_expect->logical_monitors[i].is_primary);
- g_assert_cmpint (logical_monitor_config->is_presentation,
- ==,
- config_expect->logical_monitors[i].is_presentation);
-
- g_assert_cmpint ((int) g_list_length (logical_monitor_config->monitor_configs),
- ==,
- config_expect->logical_monitors[i].n_monitors);
-
- for (k = logical_monitor_config->monitor_configs, j = 0;
- k;
- k = k->next, j++)
- {
- MetaMonitorConfig *monitor_config = k->data;
- MonitorStoreTestCaseMonitor *test_monitor =
- &config_expect->logical_monitors[i].monitors[j];
-
- g_assert_cmpstr (monitor_config->monitor_spec->connector,
- ==,
- test_monitor->connector);
- g_assert_cmpstr (monitor_config->monitor_spec->vendor,
- ==,
- test_monitor->vendor);
- g_assert_cmpstr (monitor_config->monitor_spec->product,
- ==,
- test_monitor->product);
- g_assert_cmpstr (monitor_config->monitor_spec->serial,
- ==,
- test_monitor->serial);
-
- g_assert_cmpint (monitor_config->mode_spec->width,
- ==,
- test_monitor->mode.width);
- g_assert_cmpint (monitor_config->mode_spec->height,
- ==,
- test_monitor->mode.height);
- g_assert_cmpfloat (monitor_config->mode_spec->refresh_rate,
- ==,
- test_monitor->mode.refresh_rate);
- g_assert_cmpint (monitor_config->mode_spec->flags,
- ==,
- test_monitor->mode.flags);
- g_assert_cmpint (monitor_config->enable_underscanning,
- ==,
- test_monitor->is_underscanning);
- }
- }
-}
-
-static void
-check_monitor_store_configurations (MonitorStoreTestExpect *expect)
-{
- MetaBackend *backend = meta_get_backend ();
- MetaMonitorManager *monitor_manager =
- meta_backend_get_monitor_manager (backend);
- MetaMonitorConfigManager *config_manager = monitor_manager->config_manager;
- MetaMonitorConfigStore *config_store =
- meta_monitor_config_manager_get_store (config_manager);
- int i;
-
- g_assert_cmpint (meta_monitor_config_store_get_config_count (config_store),
- ==,
- expect->n_configurations);
-
- for (i = 0; i < expect->n_configurations; i++)
- check_monitor_store_configuration (config_store, &expect->configurations[i]);
-}
-
-static void
-meta_test_monitor_store_single (void)
-{
- MonitorStoreTestExpect expect = {
- .configurations = {
- {
- .logical_monitors = {
- {
- .layout = {
- .x = 0,
- .y = 0,
- .width = 1920,
- .height = 1080
- },
- .scale = 1,
- .is_primary = TRUE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-1",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 1920,
- .height = 1080,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 1,
- }
- },
- .n_logical_monitors = 1
- }
- },
- .n_configurations = 1
- };
-
- set_custom_monitor_config ("single.xml");
-
- check_monitor_store_configurations (&expect);
-}
-
-static void
-meta_test_monitor_store_vertical (void)
-{
- MonitorStoreTestExpect expect = {
- .configurations = {
- {
- .logical_monitors = {
- {
- .layout = {
- .x = 0,
- .y = 0,
- .width = 1024,
- .height = 768
- },
- .scale = 1,
- .is_primary = TRUE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-1",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 1024,
- .height = 768,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 1,
- },
- {
- .layout = {
- .x = 0,
- .y = 768,
- .width = 800,
- .height = 600
- },
- .scale = 1,
- .is_primary = FALSE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-2",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 800,
- .height = 600,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 1,
- }
- },
- .n_logical_monitors = 2
- }
- },
- .n_configurations = 1
- };
-
- set_custom_monitor_config ("vertical.xml");
-
- check_monitor_store_configurations (&expect);
-}
-
-static void
-meta_test_monitor_store_primary (void)
-{
- MonitorStoreTestExpect expect = {
- .configurations = {
- {
- .logical_monitors = {
- {
- .layout = {
- .x = 0,
- .y = 0,
- .width = 1024,
- .height = 768
- },
- .scale = 1,
- .is_primary = FALSE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-1",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 1024,
- .height = 768,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 1,
- },
- {
- .layout = {
- .x = 1024,
- .y = 0,
- .width = 800,
- .height = 600
- },
- .scale = 1,
- .is_primary = TRUE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-2",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 800,
- .height = 600,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 1,
- }
- },
- .n_logical_monitors = 2
- }
- },
- .n_configurations = 1
- };
-
- set_custom_monitor_config ("primary.xml");
-
- check_monitor_store_configurations (&expect);
-}
-
-static void
-meta_test_monitor_store_underscanning (void)
-{
- MonitorStoreTestExpect expect = {
- .configurations = {
- {
- .logical_monitors = {
- {
- .layout = {
- .x = 0,
- .y = 0,
- .width = 1024,
- .height = 768
- },
- .scale = 1,
- .is_primary = TRUE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-1",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .is_underscanning = TRUE,
- .mode = {
- .width = 1024,
- .height = 768,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 1,
- },
- },
- .n_logical_monitors = 1
- }
- },
- .n_configurations = 1
- };
-
- set_custom_monitor_config ("underscanning.xml");
-
- check_monitor_store_configurations (&expect);
-}
-
-static void
-meta_test_monitor_store_scale (void)
-{
- MonitorStoreTestExpect expect = {
- .configurations = {
- {
- .logical_monitors = {
- {
- .layout = {
- .x = 0,
- .y = 0,
- .width = 960,
- .height = 540
- },
- .scale = 2,
- .is_primary = TRUE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-1",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 1920,
- .height = 1080,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 1,
- }
- },
- .n_logical_monitors = 1
- }
- },
- .n_configurations = 1
- };
-
- if (!meta_is_stage_views_enabled ())
- {
- g_test_skip ("Not using stage views");
- return;
- }
-
- set_custom_monitor_config ("scale.xml");
-
- check_monitor_store_configurations (&expect);
-}
-
-static void
-meta_test_monitor_store_fractional_scale (void)
-{
- MonitorStoreTestExpect expect = {
- .configurations = {
- {
- .logical_monitors = {
- {
- .layout = {
- .x = 0,
- .y = 0,
- .width = 800,
- .height = 600
- },
- .scale = 1.5,
- .is_primary = TRUE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-1",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 1200,
- .height = 900,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 1,
- }
- },
- .n_logical_monitors = 1
- }
- },
- .n_configurations = 1
- };
-
- if (!meta_is_stage_views_enabled ())
- {
- g_test_skip ("Not using stage views");
- return;
- }
-
- set_custom_monitor_config ("fractional-scale.xml");
-
- check_monitor_store_configurations (&expect);
-}
-
-static void
-meta_test_monitor_store_high_precision_fractional_scale (void)
-{
- MonitorStoreTestExpect expect = {
- .configurations = {
- {
- .logical_monitors = {
- {
- .layout = {
- .x = 0,
- .y = 0,
- .width = 744,
- .height = 558
- },
- .scale = 1.3763440847396851,
- .is_primary = TRUE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-1",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 1024,
- .height = 768,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 1,
- }
- },
- .n_logical_monitors = 1
- }
- },
- .n_configurations = 1
- };
-
- if (!meta_is_stage_views_enabled ())
- {
- g_test_skip ("Not using stage views");
- return;
- }
-
- set_custom_monitor_config ("high-precision-fractional-scale.xml");
-
- check_monitor_store_configurations (&expect);
-}
-
-static void
-meta_test_monitor_store_mirrored (void)
-{
- MonitorStoreTestExpect expect = {
- .configurations = {
- {
- .logical_monitors = {
- {
- .layout = {
- .x = 0,
- .y = 0,
- .width = 800,
- .height = 600
- },
- .scale = 1,
- .is_primary = TRUE,
- .monitors = {
- {
- .connector = "DP-1",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 800,
- .height = 600,
- .refresh_rate = 60.000495910644531
- }
- },
- {
- .connector = "DP-2",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 800,
- .height = 600,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 2,
- }
- },
- .n_logical_monitors = 1
- }
- },
- .n_configurations = 1
- };
-
- set_custom_monitor_config ("mirrored.xml");
-
- check_monitor_store_configurations (&expect);
-}
-
-static void
-meta_test_monitor_store_first_rotated (void)
-{
- MonitorStoreTestExpect expect = {
- .configurations = {
- {
- .logical_monitors = {
- {
- .layout = {
- .x = 0,
- .y = 0,
- .width = 768,
- .height = 1024
- },
- .scale = 1,
- .transform = META_MONITOR_TRANSFORM_270,
- .is_primary = TRUE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-1",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 1024,
- .height = 768,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 1,
- },
- {
- .layout = {
- .x = 768,
- .y = 0,
- .width = 1024,
- .height = 768
- },
- .scale = 1,
- .transform = META_MONITOR_TRANSFORM_NORMAL,
- .is_primary = FALSE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-2",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 1024,
- .height = 768,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 1,
- }
- },
- .n_logical_monitors = 2
- }
- },
- .n_configurations = 1
- };
-
- set_custom_monitor_config ("first-rotated.xml");
-
- check_monitor_store_configurations (&expect);
-}
-
-static void
-meta_test_monitor_store_second_rotated (void)
-{
- MonitorStoreTestExpect expect = {
- .configurations = {
- {
- .logical_monitors = {
- {
- .layout = {
- .x = 0,
- .y = 256,
- .width = 1024,
- .height = 768
- },
- .scale = 1,
- .transform = META_MONITOR_TRANSFORM_NORMAL,
- .is_primary = TRUE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-1",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 1024,
- .height = 768,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 1,
- },
- {
- .layout = {
- .x = 1024,
- .y = 0,
- .width = 768,
- .height = 1024
- },
- .scale = 1,
- .transform = META_MONITOR_TRANSFORM_90,
- .is_primary = FALSE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-2",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 1024,
- .height = 768,
- .refresh_rate = 60.000495910644531
- }
- }
- },
- .n_monitors = 1,
- }
- },
- .n_logical_monitors = 2
- }
- },
- .n_configurations = 1
- };
-
- set_custom_monitor_config ("second-rotated.xml");
-
- check_monitor_store_configurations (&expect);
-}
-
-static void
-meta_test_monitor_store_interlaced (void)
-{
- MonitorStoreTestExpect expect = {
- .configurations = {
- {
- .logical_monitors = {
- {
- .layout = {
- .x = 0,
- .y = 0,
- .width = 1024,
- .height = 768
- },
- .scale = 1,
- .is_primary = TRUE,
- .is_presentation = FALSE,
- .monitors = {
- {
- .connector = "DP-1",
- .vendor = "MetaProduct's Inc.",
- .product = "MetaMonitor",
- .serial = "0x123456",
- .mode = {
- .width = 1024,
- .height = 768,
- .refresh_rate = 60.000495910644531,
- .flags = META_CRTC_MODE_FLAG_INTERLACE,
- }
- }
- },
- .n_monitors = 1,
- },
- },
- .n_logical_monitors = 1
- }
- },
- .n_configurations = 1
- };
-
- set_custom_monitor_config ("interlaced.xml");
-
- check_monitor_store_configurations (&expect);
-}
-
-void
-init_monitor_store_tests (void)
-{
- g_test_add_func ("/backends/monitor-store/single",
- meta_test_monitor_store_single);
- g_test_add_func ("/backends/monitor-store/vertical",
- meta_test_monitor_store_vertical);
- g_test_add_func ("/backends/monitor-store/primary",
- meta_test_monitor_store_primary);
- g_test_add_func ("/backends/monitor-store/underscanning",
- meta_test_monitor_store_underscanning);
- g_test_add_func ("/backends/monitor-store/scale",
- meta_test_monitor_store_scale);
- g_test_add_func ("/backends/monitor-store/fractional-scale",
- meta_test_monitor_store_fractional_scale);
- g_test_add_func ("/backends/monitor-store/high-precision-fractional-scale",
- meta_test_monitor_store_high_precision_fractional_scale);
- g_test_add_func ("/backends/monitor-store/mirrored",
- meta_test_monitor_store_mirrored);
- g_test_add_func ("/backends/monitor-store/first-rotated",
- meta_test_monitor_store_first_rotated);
- g_test_add_func ("/backends/monitor-store/second-rotated",
- meta_test_monitor_store_second_rotated);
- g_test_add_func ("/backends/monitor-store/interlaced",
- meta_test_monitor_store_interlaced);
-}