diff options
Diffstat (limited to 'src/tests/monitor-test-utils.c')
-rw-r--r-- | src/tests/monitor-test-utils.c | 780 |
1 files changed, 0 insertions, 780 deletions
diff --git a/src/tests/monitor-test-utils.c b/src/tests/monitor-test-utils.c deleted file mode 100644 index 933b8912a..000000000 --- a/src/tests/monitor-test-utils.c +++ /dev/null @@ -1,780 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ - -/* - * Copyright (C) 2017 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-test-utils.h" - -#include "backends/meta-backend-private.h" -#include "backends/meta-crtc.h" -#include "backends/meta-logical-monitor.h" -#include "backends/meta-monitor-config-manager.h" -#include "backends/meta-monitor-config-store.h" -#include "backends/meta-output.h" -#include "tests/meta-test-utils.h" -#include "meta-backend-test.h" - -MetaGpu * -test_get_gpu (void) -{ - return META_GPU (meta_backend_get_gpus (meta_get_backend ())->data); -} - -void -set_custom_monitor_config (const char *filename) -{ - MetaBackend *backend = meta_get_backend (); - MetaMonitorManager *monitor_manager = - meta_backend_get_monitor_manager (backend); - MetaMonitorConfigManager *config_manager = monitor_manager->config_manager; - MetaMonitorConfigStore *config_store; - GError *error = NULL; - const char *path; - - g_assert_nonnull (config_manager); - - config_store = meta_monitor_config_manager_get_store (config_manager); - - path = g_test_get_filename (G_TEST_DIST, "tests", "monitor-configs", - filename, NULL); - if (!meta_monitor_config_store_set_custom (config_store, path, NULL, - &error)) - g_error ("Failed to set custom config: %s", error->message); -} - -char * -read_file (const char *file_path) -{ - g_autoptr (GFile) file = NULL; - g_autoptr (GFileInputStream) input_stream = NULL; - g_autoptr (GFileInfo) file_info = NULL; - goffset file_size; - gsize bytes_read; - g_autofree char *buffer = NULL; - GError *error = NULL; - - file = g_file_new_for_path (file_path); - input_stream = g_file_read (file, NULL, &error); - if (!input_stream) - g_error ("Failed to read migrated config file: %s", error->message); - - file_info = g_file_input_stream_query_info (input_stream, - G_FILE_ATTRIBUTE_STANDARD_SIZE, - NULL, &error); - if (!file_info) - g_error ("Failed to read file info: %s", error->message); - - file_size = g_file_info_get_size (file_info); - buffer = g_malloc0 (file_size + 1); - - if (!g_input_stream_read_all (G_INPUT_STREAM (input_stream), - buffer, file_size, &bytes_read, NULL, &error)) - g_error ("Failed to read file content: %s", error->message); - g_assert_cmpint ((goffset) bytes_read, ==, file_size); - - return g_steal_pointer (&buffer); -} - -static MetaOutput * -output_from_winsys_id (MetaBackend *backend, - uint64_t output_id) -{ - MetaGpu *gpu = meta_backend_test_get_gpu (META_BACKEND_TEST (backend)); - GList *l; - - for (l = meta_gpu_get_outputs (gpu); l; l = l->next) - { - MetaOutput *output = l->data; - - if (meta_output_get_id (output) == output_id) - return output; - } - - return NULL; -} - -typedef struct _CheckMonitorModeData -{ - MetaBackend *backend; - MetaTestCaseMonitorCrtcMode *expect_crtc_mode_iter; -} CheckMonitorModeData; - -static gboolean -check_monitor_mode (MetaMonitor *monitor, - MetaMonitorMode *mode, - MetaMonitorCrtcMode *monitor_crtc_mode, - gpointer user_data, - GError **error) -{ - CheckMonitorModeData *data = user_data; - MetaBackend *backend = data->backend; - MetaOutput *output; - MetaCrtcMode *crtc_mode; - int expect_crtc_mode_index; - - output = output_from_winsys_id (backend, - data->expect_crtc_mode_iter->output); - g_assert (monitor_crtc_mode->output == output); - - expect_crtc_mode_index = data->expect_crtc_mode_iter->crtc_mode; - if (expect_crtc_mode_index == -1) - { - crtc_mode = NULL; - } - else - { - MetaGpu *gpu = meta_output_get_gpu (output); - - crtc_mode = g_list_nth_data (meta_gpu_get_modes (gpu), - expect_crtc_mode_index); - } - g_assert (monitor_crtc_mode->crtc_mode == crtc_mode); - - if (crtc_mode) - { - const MetaCrtcModeInfo *crtc_mode_info = - meta_crtc_mode_get_info (crtc_mode); - float refresh_rate; - MetaCrtcModeFlag flags; - - refresh_rate = meta_monitor_mode_get_refresh_rate (mode); - flags = meta_monitor_mode_get_flags (mode); - - g_assert_cmpfloat (refresh_rate, ==, crtc_mode_info->refresh_rate); - g_assert_cmpint (flags, ==, (crtc_mode_info->flags & - HANDLED_CRTC_MODE_FLAGS)); - } - - data->expect_crtc_mode_iter++; - - return TRUE; -} - -static gboolean -check_current_monitor_mode (MetaMonitor *monitor, - MetaMonitorMode *mode, - MetaMonitorCrtcMode *monitor_crtc_mode, - gpointer user_data, - GError **error) -{ - CheckMonitorModeData *data = user_data; - MetaBackend *backend = data->backend; - MetaOutput *output; - MetaCrtc *crtc; - - output = output_from_winsys_id (backend, - data->expect_crtc_mode_iter->output); - crtc = meta_output_get_assigned_crtc (output); - - if (data->expect_crtc_mode_iter->crtc_mode == -1) - { - g_assert_null (crtc); - } - else - { - const MetaCrtcConfig *crtc_config; - MetaLogicalMonitor *logical_monitor; - - g_assert_nonnull (crtc); - - crtc_config = meta_crtc_get_config (crtc); - g_assert_nonnull (crtc_config); - - g_assert (monitor_crtc_mode->crtc_mode == crtc_config->mode); - - logical_monitor = meta_monitor_get_logical_monitor (monitor); - g_assert_nonnull (logical_monitor); - } - - - data->expect_crtc_mode_iter++; - - return TRUE; -} - -static MetaLogicalMonitor * -logical_monitor_from_layout (MetaMonitorManager *monitor_manager, - MetaRectangle *layout) -{ - GList *l; - - for (l = monitor_manager->logical_monitors; l; l = l->next) - { - MetaLogicalMonitor *logical_monitor = l->data; - - if (meta_rectangle_equal (layout, &logical_monitor->rect)) - return logical_monitor; - } - - return NULL; -} - -static void -check_logical_monitor (MetaMonitorManager *monitor_manager, - MonitorTestCaseLogicalMonitor *test_logical_monitor, - GList **all_crtcs) -{ - MetaLogicalMonitor *logical_monitor; - MetaOutput *primary_output; - GList *monitors; - GList *l; - int i; - - logical_monitor = logical_monitor_from_layout (monitor_manager, - &test_logical_monitor->layout); - g_assert_nonnull (logical_monitor); - - g_assert_cmpint (logical_monitor->rect.x, - ==, - test_logical_monitor->layout.x); - g_assert_cmpint (logical_monitor->rect.y, - ==, - test_logical_monitor->layout.y); - g_assert_cmpint (logical_monitor->rect.width, - ==, - test_logical_monitor->layout.width); - g_assert_cmpint (logical_monitor->rect.height, - ==, - test_logical_monitor->layout.height); - g_assert_cmpfloat (logical_monitor->scale, - ==, - test_logical_monitor->scale); - g_assert_cmpuint (logical_monitor->transform, - ==, - test_logical_monitor->transform); - - if (logical_monitor == monitor_manager->primary_logical_monitor) - g_assert (meta_logical_monitor_is_primary (logical_monitor)); - - primary_output = NULL; - monitors = meta_logical_monitor_get_monitors (logical_monitor); - g_assert_cmpint ((int) g_list_length (monitors), - ==, - test_logical_monitor->n_monitors); - - for (i = 0; i < test_logical_monitor->n_monitors; i++) - { - MetaMonitor *monitor = - g_list_nth (monitor_manager->monitors, - test_logical_monitor->monitors[i])->data; - - g_assert_nonnull (g_list_find (monitors, monitor)); - } - - for (l = monitors; l; l = l->next) - { - MetaMonitor *monitor = l->data; - GList *outputs; - GList *l_output; - - outputs = meta_monitor_get_outputs (monitor); - for (l_output = outputs; l_output; l_output = l_output->next) - { - MetaOutput *output = l_output->data; - MetaCrtc *crtc; - - g_assert (meta_output_get_monitor (output) == monitor); - - if (meta_output_is_primary (output)) - { - g_assert_null (primary_output); - primary_output = output; - } - - crtc = meta_output_get_assigned_crtc (output); - if (crtc) - { - g_assert (meta_monitor_get_logical_monitor (monitor) == - logical_monitor); - g_assert (g_list_find ((GList *) meta_crtc_get_outputs (crtc), - output)); - *all_crtcs = g_list_remove (*all_crtcs, crtc); - } - else - { - g_assert_null (crtc); - } - - g_assert_cmpint (logical_monitor->is_presentation, - ==, - meta_output_is_presentation (output)); - } - } - - if (logical_monitor == monitor_manager->primary_logical_monitor) - g_assert_nonnull (primary_output); -} - -void -check_monitor_configuration (MonitorTestCaseExpect *expect) -{ - MetaBackend *backend = meta_get_backend (); - MetaRenderer *renderer = meta_backend_get_renderer (backend); - MetaMonitorManager *monitor_manager = - meta_backend_get_monitor_manager (backend); - MetaMonitorManagerTest *monitor_manager_test = - META_MONITOR_MANAGER_TEST (monitor_manager); - MetaGpu *gpu = meta_backend_test_get_gpu (META_BACKEND_TEST (backend)); - int tiled_monitor_count; - GList *monitors; - GList *crtcs; - int n_logical_monitors; - GList *all_crtcs; - GList *l; - int i; - - g_assert_cmpint (monitor_manager->screen_width, - ==, - expect->screen_width); - g_assert_cmpint (monitor_manager->screen_height, - ==, - expect->screen_height); - g_assert_cmpint ((int) g_list_length (meta_gpu_get_outputs (gpu)), - ==, - expect->n_outputs); - g_assert_cmpint ((int) g_list_length (meta_gpu_get_crtcs (gpu)), - ==, - expect->n_crtcs); - - tiled_monitor_count = - meta_monitor_manager_test_get_tiled_monitor_count (monitor_manager_test); - g_assert_cmpint (tiled_monitor_count, - ==, - expect->n_tiled_monitors); - - monitors = meta_monitor_manager_get_monitors (monitor_manager); - g_assert_cmpint ((int) g_list_length (monitors), - ==, - expect->n_monitors); - for (l = monitors, i = 0; l; l = l->next, i++) - { - MetaMonitor *monitor = l->data; - MetaOutput *main_output; - const MetaOutputInfo *main_output_info; - GList *outputs; - GList *l_output; - int j; - int width_mm, height_mm; - GList *modes; - GList *l_mode; - MetaMonitorMode *current_mode; - int expected_current_mode_index; - MetaMonitorMode *expected_current_mode; - - outputs = meta_monitor_get_outputs (monitor); - - g_assert_cmpint ((int) g_list_length (outputs), - ==, - expect->monitors[i].n_outputs); - - for (l_output = outputs, j = 0; l_output; l_output = l_output->next, j++) - { - MetaOutput *output = l_output->data; - uint64_t winsys_id = expect->monitors[i].outputs[j]; - - g_assert (output == output_from_winsys_id (backend, winsys_id)); - g_assert_cmpint (expect->monitors[i].is_underscanning, - ==, - meta_output_is_underscanning (output)); - } - - meta_monitor_get_physical_dimensions (monitor, &width_mm, &height_mm); - g_assert_cmpint (width_mm, - ==, - expect->monitors[i].width_mm); - g_assert_cmpint (height_mm, - ==, - expect->monitors[i].height_mm); - - main_output = meta_monitor_get_main_output (monitor); - main_output_info = meta_output_get_info (main_output); - g_assert_cmpstr (meta_monitor_get_connector (monitor), ==, - main_output_info->name); - g_assert_cmpstr (meta_monitor_get_vendor (monitor), ==, - main_output_info->vendor); - g_assert_cmpstr (meta_monitor_get_product (monitor), ==, - main_output_info->product); - g_assert_cmpstr (meta_monitor_get_serial (monitor), ==, - main_output_info->serial); - g_assert_cmpint (meta_monitor_get_connector_type (monitor), ==, - main_output_info->connector_type); - - modes = meta_monitor_get_modes (monitor); - g_assert_cmpint (g_list_length (modes), - ==, - expect->monitors[i].n_modes); - - for (l_mode = modes, j = 0; l_mode; l_mode = l_mode->next, j++) - { - MetaMonitorMode *mode = l_mode->data; - int width; - int height; - float refresh_rate; - MetaCrtcModeFlag flags; - CheckMonitorModeData data; - - meta_monitor_mode_get_resolution (mode, &width, &height); - refresh_rate = meta_monitor_mode_get_refresh_rate (mode); - flags = meta_monitor_mode_get_flags (mode); - - g_assert_cmpint (width, - ==, - expect->monitors[i].modes[j].width); - g_assert_cmpint (height, - ==, - expect->monitors[i].modes[j].height); - g_assert_cmpfloat (refresh_rate, - ==, - expect->monitors[i].modes[j].refresh_rate); - g_assert_cmpint (flags, - ==, - expect->monitors[i].modes[j].flags); - - data = (CheckMonitorModeData) { - .backend = backend, - .expect_crtc_mode_iter = - expect->monitors[i].modes[j].crtc_modes - }; - meta_monitor_mode_foreach_output (monitor, mode, - check_monitor_mode, - &data, - NULL); - } - - current_mode = meta_monitor_get_current_mode (monitor); - expected_current_mode_index = expect->monitors[i].current_mode; - if (expected_current_mode_index == -1) - expected_current_mode = NULL; - else - expected_current_mode = g_list_nth (modes, - expected_current_mode_index)->data; - - g_assert (current_mode == expected_current_mode); - if (current_mode) - g_assert (meta_monitor_is_active (monitor)); - else - g_assert (!meta_monitor_is_active (monitor)); - - if (current_mode) - { - CheckMonitorModeData data; - - data = (CheckMonitorModeData) { - .backend = backend, - .expect_crtc_mode_iter = - expect->monitors[i].modes[expected_current_mode_index].crtc_modes - }; - meta_monitor_mode_foreach_output (monitor, expected_current_mode, - check_current_monitor_mode, - &data, - NULL); - } - - meta_monitor_derive_current_mode (monitor); - g_assert (current_mode == meta_monitor_get_current_mode (monitor)); - } - - n_logical_monitors = - meta_monitor_manager_get_num_logical_monitors (monitor_manager); - g_assert_cmpint (n_logical_monitors, - ==, - expect->n_logical_monitors); - - /* - * Check that we have a primary logical monitor (except for headless), - * and that the main output of the first monitor is the only output - * that is marked as primary (further below). Note: outputs being primary or - * not only matters on X11. - */ - if (expect->primary_logical_monitor == -1) - { - g_assert_null (monitor_manager->primary_logical_monitor); - g_assert_null (monitor_manager->logical_monitors); - } - else - { - MonitorTestCaseLogicalMonitor *test_logical_monitor = - &expect->logical_monitors[expect->primary_logical_monitor]; - MetaLogicalMonitor *logical_monitor; - - logical_monitor = - logical_monitor_from_layout (monitor_manager, - &test_logical_monitor->layout); - g_assert (logical_monitor == monitor_manager->primary_logical_monitor); - } - - all_crtcs = NULL; - for (l = meta_backend_get_gpus (backend); l; l = l->next) - { - MetaGpu *gpu = l->data; - - all_crtcs = g_list_concat (all_crtcs, - g_list_copy (meta_gpu_get_crtcs (gpu))); - } - - for (i = 0; i < expect->n_logical_monitors; i++) - { - MonitorTestCaseLogicalMonitor *test_logical_monitor = - &expect->logical_monitors[i]; - - check_logical_monitor (monitor_manager, test_logical_monitor, &all_crtcs); - } - g_assert_cmpint (n_logical_monitors, ==, i); - - for (l = all_crtcs; l; l = l->next) - { - MetaCrtc *crtc = l->data; - - g_assert_null (meta_crtc_get_outputs (crtc)); - } - g_list_free (all_crtcs); - - crtcs = meta_gpu_get_crtcs (gpu); - for (l = crtcs, i = 0; l; l = l->next, i++) - { - MetaCrtc *crtc = l->data; - const MetaCrtcConfig *crtc_config = meta_crtc_get_config (crtc); - - if (expect->crtcs[i].current_mode == -1) - { - g_assert_null (meta_crtc_get_outputs (crtc)); - g_assert_null (crtc_config); - } - else - { - MetaCrtcMode *expected_current_mode; - const GList *l_output; - MetaRendererView *view; - cairo_rectangle_int_t view_layout; - - for (l_output = meta_crtc_get_outputs (crtc); - l_output; - l_output = l_output->next) - { - MetaOutput *output = l_output->data; - - g_assert (meta_output_get_assigned_crtc (output) == crtc); - g_assert_null (g_list_find (l_output->next, output)); - } - - g_assert_nonnull (crtc_config); - - expected_current_mode = - g_list_nth_data (meta_gpu_get_modes (gpu), - expect->crtcs[i].current_mode); - g_assert (crtc_config->mode == expected_current_mode); - - g_assert_cmpuint (crtc_config->transform, - ==, - expect->crtcs[i].transform); - - g_assert_cmpfloat_with_epsilon (crtc_config->layout.origin.x, - expect->crtcs[i].x, - FLT_EPSILON); - g_assert_cmpfloat_with_epsilon (crtc_config->layout.origin.y, - expect->crtcs[i].y, - FLT_EPSILON); - - view = meta_renderer_get_view_for_crtc (renderer, crtc); - g_assert_nonnull (view); - clutter_stage_view_get_layout (CLUTTER_STAGE_VIEW (view), - &view_layout); - g_assert_cmpfloat_with_epsilon (crtc_config->layout.origin.x, - view_layout.x, - FLT_EPSILON); - g_assert_cmpfloat_with_epsilon (crtc_config->layout.origin.y, - view_layout.y, - FLT_EPSILON); - g_assert_cmpfloat_with_epsilon (crtc_config->layout.size.width, - view_layout.width, - FLT_EPSILON); - g_assert_cmpfloat_with_epsilon (crtc_config->layout.size.height, - view_layout.height, - FLT_EPSILON); - } - } -} - -MetaMonitorTestSetup * -create_monitor_test_setup (MonitorTestCaseSetup *setup, - MonitorTestFlag flags) -{ - MetaMonitorTestSetup *test_setup; - int i; - int n_laptop_panels = 0; - int n_normal_panels = 0; - - test_setup = g_new0 (MetaMonitorTestSetup, 1); - - test_setup->modes = NULL; - for (i = 0; i < setup->n_modes; i++) - { - g_autoptr (MetaCrtcModeInfo) crtc_mode_info = NULL; - MetaCrtcMode *mode; - - crtc_mode_info = meta_crtc_mode_info_new (); - crtc_mode_info->width = setup->modes[i].width; - crtc_mode_info->height = setup->modes[i].height; - crtc_mode_info->refresh_rate = setup->modes[i].refresh_rate; - crtc_mode_info->flags = setup->modes[i].flags; - - mode = g_object_new (META_TYPE_CRTC_MODE, - "id", (uint64_t) i, - "info", crtc_mode_info, - NULL); - - test_setup->modes = g_list_append (test_setup->modes, mode); - } - - test_setup->crtcs = NULL; - for (i = 0; i < setup->n_crtcs; i++) - { - MetaCrtc *crtc; - - crtc = g_object_new (META_TYPE_CRTC_TEST, - "id", (uint64_t) i + 1, - "gpu", test_get_gpu (), - NULL); - - test_setup->crtcs = g_list_append (test_setup->crtcs, crtc); - } - - test_setup->outputs = NULL; - for (i = 0; i < setup->n_outputs; i++) - { - MetaOutput *output; - MetaOutputTest *output_test; - int crtc_index; - MetaCrtc *crtc; - int preferred_mode_index; - MetaCrtcMode *preferred_mode; - MetaCrtcMode **modes; - int n_modes; - int j; - MetaCrtc **possible_crtcs; - int n_possible_crtcs; - int scale; - gboolean is_laptop_panel; - const char *serial; - g_autoptr (MetaOutputInfo) output_info = NULL; - - crtc_index = setup->outputs[i].crtc; - if (crtc_index == -1) - crtc = NULL; - else - crtc = g_list_nth_data (test_setup->crtcs, crtc_index); - - preferred_mode_index = setup->outputs[i].preferred_mode; - if (preferred_mode_index == -1) - preferred_mode = NULL; - else - preferred_mode = g_list_nth_data (test_setup->modes, - preferred_mode_index); - - n_modes = setup->outputs[i].n_modes; - modes = g_new0 (MetaCrtcMode *, n_modes); - for (j = 0; j < n_modes; j++) - { - int mode_index; - - mode_index = setup->outputs[i].modes[j]; - modes[j] = g_list_nth_data (test_setup->modes, mode_index); - } - - n_possible_crtcs = setup->outputs[i].n_possible_crtcs; - possible_crtcs = g_new0 (MetaCrtc *, n_possible_crtcs); - for (j = 0; j < n_possible_crtcs; j++) - { - int possible_crtc_index; - - possible_crtc_index = setup->outputs[i].possible_crtcs[j]; - possible_crtcs[j] = g_list_nth_data (test_setup->crtcs, - possible_crtc_index); - } - - scale = setup->outputs[i].scale; - if (scale < 1) - scale = 1; - - is_laptop_panel = setup->outputs[i].is_laptop_panel; - - serial = setup->outputs[i].serial; - if (!serial) - serial = "0x123456"; - - output_info = meta_output_info_new (); - - output_info->name = (is_laptop_panel - ? g_strdup_printf ("eDP-%d", ++n_laptop_panels) - : g_strdup_printf ("DP-%d", ++n_normal_panels)); - output_info->vendor = g_strdup ("MetaProduct's Inc."); - output_info->product = g_strdup ("MetaMonitor"); - output_info->serial = g_strdup (serial); - if (setup->outputs[i].hotplug_mode) - { - output_info->hotplug_mode_update = TRUE; - output_info->suggested_x = setup->outputs[i].suggested_x; - output_info->suggested_y = setup->outputs[i].suggested_y; - } - else if (flags & MONITOR_TEST_FLAG_NO_STORED) - { - output_info->hotplug_mode_update = TRUE; - output_info->suggested_x = -1; - output_info->suggested_y = -1; - } - output_info->width_mm = setup->outputs[i].width_mm; - output_info->height_mm = setup->outputs[i].height_mm; - output_info->subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN; - output_info->preferred_mode = preferred_mode; - output_info->n_modes = n_modes; - output_info->modes = modes; - output_info->n_possible_crtcs = n_possible_crtcs; - output_info->possible_crtcs = possible_crtcs; - output_info->n_possible_clones = 0; - output_info->possible_clones = NULL; - output_info->connector_type = (is_laptop_panel ? META_CONNECTOR_TYPE_eDP - : META_CONNECTOR_TYPE_DisplayPort); - output_info->tile_info = setup->outputs[i].tile_info; - output_info->panel_orientation_transform = - setup->outputs[i].panel_orientation_transform; - - output = g_object_new (META_TYPE_OUTPUT_TEST, - "id", (uint64_t) i, - "gpu", test_get_gpu (), - "info", output_info, - NULL); - - output_test = META_OUTPUT_TEST (output); - output_test->scale = scale; - - if (crtc) - { - MetaOutputAssignment output_assignment; - - output_assignment = (MetaOutputAssignment) { - .is_underscanning = setup->outputs[i].is_underscanning, - }; - meta_output_assign_crtc (output, crtc, &output_assignment); - } - - test_setup->outputs = g_list_append (test_setup->outputs, output); - } - - return test_setup; -} |