[mutter] tests: Also make test case verification declarative



commit d920eaba4a122520cef964d6f291d8c0ec694398
Author: Jonas Ådahl <jadahl gmail com>
Date:   Wed Dec 7 14:18:28 2016 +0800

    tests: Also make test case verification declarative
    
    Set up the expected result in a declarative way in the same place as
    the test case setup is declared. This way we have a completely
    declarative way to create test cases.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=777732

 src/tests/monitor-unit-tests.c |   89 +++++++++++++++++++++++++++++----------
 1 files changed, 66 insertions(+), 23 deletions(-)
---
diff --git a/src/tests/monitor-unit-tests.c b/src/tests/monitor-unit-tests.c
index 01cc1b7..9a14f3c 100644
--- a/src/tests/monitor-unit-tests.c
+++ b/src/tests/monitor-unit-tests.c
@@ -67,9 +67,26 @@ typedef struct _MonitorTestCaseSetup
   int n_crtcs;
 } MonitorTestCaseSetup;
 
+typedef struct _MonitorTestCaseLogicalMonitor
+{
+  MetaRectangle layout;
+  int scale;
+} MonitorTestCaseLogicalMonitor;
+
+typedef struct _MonitorTestCaseExpect
+{
+  MonitorTestCaseLogicalMonitor logical_monitors[MAX_N_LOGICAL_MONITORS];
+  int n_logical_monitors;
+  int n_outputs;
+  int n_crtcs;
+  int screen_width;
+  int screen_height;
+} MonitorTestCaseExpect;
+
 typedef struct _MonitorTestCase
 {
   MonitorTestCaseSetup setup;
+  MonitorTestCaseExpect expect;
 } MonitorTestCase;
 
 static MonitorTestCase initial_test_case = {
@@ -114,44 +131,64 @@ static MonitorTestCase initial_test_case = {
       }
     },
     .n_crtcs = 2
+  },
+
+  .expect = {
+    .logical_monitors = {
+      {
+        .layout = { .x = 0, .y = 0, .width = 1024, .height = 768 },
+        .scale = 1
+      },
+      {
+        .layout = { .x = 1024, .y = 0, .width = 1024, .height = 768 },
+        .scale = 1
+      }
+    },
+    .n_logical_monitors = 2,
+    .n_outputs = 2,
+    .n_crtcs = 2,
+    .screen_width = 1024 * 2,
+    .screen_height = 768
   }
 };
 
 static void
-meta_test_monitor_linear_config (void)
+check_monitor_configuration (MonitorTestCase *test_case)
 {
   MetaBackend *backend = meta_get_backend ();
   MetaMonitorManager *monitor_manager =
     meta_backend_get_monitor_manager (backend);
-  GList *logical_monitors, *l;
-  int n_logical_monitors, i;
-  MetaRectangle expected_rects[] = {
-    { .x = 0, .y = 0, .width = 1024, .height = 768 },
-    { .x = 1024, .y = 0, .width = 1024, .height = 768 },
-  };
-
-  g_assert (monitor_manager->screen_width == 1024 * 2);
-  g_assert (monitor_manager->screen_height == 768);
-  g_assert (monitor_manager->n_outputs == 2);
-  g_assert (monitor_manager->n_crtcs == 2);
+  GList *logical_monitors;
+  int n_logical_monitors;
+  GList *l;
+  int i;
+
+  g_assert (monitor_manager->screen_width == test_case->expect.screen_width);
+  g_assert (monitor_manager->screen_height == test_case->expect.screen_height);
+  g_assert ((int) monitor_manager->n_outputs == test_case->expect.n_outputs);
+  g_assert ((int) monitor_manager->n_crtcs == test_case->expect.n_crtcs);
 
   n_logical_monitors =
     meta_monitor_manager_get_num_logical_monitors (monitor_manager);
-  g_assert (n_logical_monitors == 2);
+  g_assert (n_logical_monitors == test_case->expect.n_logical_monitors);
 
   logical_monitors =
     meta_monitor_manager_get_logical_monitors (monitor_manager);
-  i = 0;
-  for (l = logical_monitors; l; l = l->next)
+  for (l = logical_monitors, i = 0; l; l = l->next, i++)
     {
       MetaLogicalMonitor *logical_monitor = l->data;
-
-      g_assert (logical_monitor->rect.x == expected_rects[i].x);
-      g_assert (logical_monitor->rect.y == expected_rects[i].y);
-      g_assert (logical_monitor->rect.width == expected_rects[i].width);
-      g_assert (logical_monitor->rect.height == expected_rects[i].height);
-      i++;
+      MonitorTestCaseLogicalMonitor *test_logical_monitor =
+        &test_case->expect.logical_monitors[i];
+
+      g_assert (logical_monitor->rect.x == test_logical_monitor->layout.x);
+      g_assert (logical_monitor->rect.y == test_logical_monitor->layout.y);
+      g_assert (logical_monitor->rect.width ==
+                test_logical_monitor->layout.width);
+      g_assert (logical_monitor->rect.height ==
+                test_logical_monitor->layout.height);
+      g_assert (logical_monitor->scale == test_logical_monitor->scale);
     }
+  g_assert (n_logical_monitors == i);
 }
 
 static MetaMonitorTestSetup *
@@ -270,6 +307,12 @@ create_monitor_test_setup (MonitorTestCase *test_case)
   return test_setup;
 }
 
+static void
+meta_test_monitor_initial_linear_config (void)
+{
+  check_monitor_configuration (&initial_test_case);
+}
+
 void
 init_monitor_tests (void)
 {
@@ -278,6 +321,6 @@ init_monitor_tests (void)
   initial_test_setup = create_monitor_test_setup (&initial_test_case);
   meta_monitor_manager_test_init_test_setup (initial_test_setup);
 
-  g_test_add_func ("/backends/monitor/linear-config",
-                   meta_test_monitor_linear_config);
+  g_test_add_func ("/backends/monitor/initial-linear-config",
+                   meta_test_monitor_initial_linear_config);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]