diff --git a/src/Makefile-tests.am b/src/Makefile-tests.am
index 278d3b048..45b2d6bfe 100644
--- a/src/Makefile-tests.am
+++ b/src/Makefile-tests.am
@@ -48,6 +48,8 @@ mutter_test_unit_tests_SOURCES = \
tests/test-utils.c \
tests/test-utils.h \
tests/unit-tests.c \
+ tests/boxes-tests.c \
+ tests/boxes-tests.h \
tests/meta-backend-test.c \
tests/meta-backend-test.h \
tests/meta-monitor-manager-test.c \
@@ -89,10 +91,3 @@ run-headless-start-test: mutter-test-headless-start-test
run-tests: run-test-runner-tests run-unit-tests run-headless-start-test
endif
-
-# Some random test programs for bits of the code
-
-testboxes_SOURCES = core/testboxes.c
-testboxes_LDADD = $(MUTTER_LIBS) libmutter-$(LIBMUTTER_API_VERSION).la
-
-noinst_PROGRAMS += testboxes
diff --git a/src/core/boxes.c b/src/core/boxes.c
index 35e9ac3cd..91c9ba12b 100644
--- a/src/core/boxes.c
+++ b/src/core/boxes.c
@@ -437,8 +437,8 @@ merge_spanning_rects_in_region (GList *region)
if (region == NULL)
{
- meta_warning ("Region to merge was empty! Either you have a some "
- "pathological STRUT list or there's a bug somewhere!\n");
+ g_warning ("Region to merge was empty! Either you have a some "
+ "pathological STRUT list or there's a bug somewhere!\n");
return NULL;
}
@@ -961,7 +961,7 @@ meta_rectangle_clamp_to_fit_into_region (const GList *spanning_rects,
/* Clamp rect appropriately */
if (best_rect == NULL)
{
- meta_warning ("No rect whose size to clamp to found!\n");
+ g_warning ("No rect whose size to clamp to found!\n");
/* If it doesn't fit, at least make it no bigger than it has to be */
if (!(fixed_directions & FIXED_DIRECTION_X))
@@ -1024,7 +1024,9 @@ meta_rectangle_clip_to_region (const GList *spanning_rects,
/* Clip rect appropriately */
if (best_rect == NULL)
- meta_warning ("No rect to clip to found!\n");
+ {
+ g_warning ("No rect to clip to found!\n");
+ }
else
{
/* Extra precaution with checking fixed direction shouldn't be needed
@@ -1120,7 +1122,9 @@ meta_rectangle_shove_into_region (const GList *spanning_rects,
/* Shove rect appropriately */
if (best_rect == NULL)
- meta_warning ("No rect to shove into found!\n");
+ {
+ g_warning ("No rect to shove into found!\n");
+ }
else
{
/* Extra precaution with checking fixed direction shouldn't be needed
diff --git a/src/core/testboxes.c b/src/tests/boxes-tests.c
similarity index 96%
rename from src/core/testboxes.c
rename to src/tests/boxes-tests.c
index 94da52b6b..bc5d2d0ce 100644
--- a/src/core/testboxes.c
+++ b/src/tests/boxes-tests.c
@@ -19,20 +19,23 @@
* along with this program; if not, see .
*/
-#include "boxes-private.h"
+#include "tests/boxes-tests.h"
+
#include
#include
#include
-#include /* Just for the definition of the various gravities */
-#include /* To initialize random seed */
+#include
+#include
#include
+#include "core/boxes-private.h"
+
#define NUM_RANDOM_RUNS 10000
static void
init_random_ness (void)
{
- srand(time(NULL));
+ srand (time (NULL));
}
static void
@@ -111,8 +114,6 @@ test_area (void)
temp = meta_rect (0, 0, 5, 7);
g_assert (meta_rectangle_area (&temp) == 35);
-
- printf ("%s passed.\n", G_STRFUNC);
}
static void
@@ -139,8 +140,6 @@ test_intersect (void)
meta_rectangle_intersect (&b, &d, &b);
g_assert (meta_rectangle_equal (&b, &b_intersect_d));
-
- printf ("%s passed.\n", G_STRFUNC);
}
static void
@@ -158,8 +157,6 @@ test_equal (void)
g_assert (!meta_rectangle_equal (&a, &d));
g_assert (!meta_rectangle_equal (&a, &e));
g_assert (!meta_rectangle_equal (&a, &f));
-
- printf ("%s passed.\n", G_STRFUNC);
}
static void
@@ -181,8 +178,6 @@ test_overlap_funcs (void)
g_assert (!meta_rectangle_overlap (&temp1, &temp2));
g_assert (!meta_rectangle_horiz_overlap (&temp1, &temp2));
g_assert ( meta_rectangle_vert_overlap (&temp1, &temp2));
-
- printf ("%s passed.\n", G_STRFUNC);
}
static void
@@ -219,8 +214,6 @@ test_basic_fitting (void)
g_assert (!meta_rectangle_contains_rect (&temp1, &temp3));
g_assert ( meta_rectangle_could_fit_rect (&temp1, &temp3));
g_assert (!meta_rectangle_could_fit_rect (&temp3, &temp2));
-
- printf ("%s passed.\n", G_STRFUNC);
}
static void
@@ -652,16 +645,16 @@ test_regions_okay (void)
/*************************************************************/
/* Make sure test region 5 has the right spanning rectangles */
/*************************************************************/
- printf ("The next test intentionally causes a warning, "
- "but it can be ignored.\n");
+ g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING,
+ "Region to merge was empty!*");
region = get_screen_region (5);
+ g_test_assert_expected_messages ();
+
verify_lists_are_equal (region, NULL);
/* FIXME: Still to do:
* - Create random struts and check the regions somehow
*/
-
- printf ("%s passed.\n", G_STRFUNC);
}
static void
@@ -704,8 +697,6 @@ test_region_fitting (void)
g_assert (!meta_rectangle_contained_in_region (region, &rect));
meta_rectangle_free_list_and_elements (region);
-
- printf ("%s passed.\n", G_STRFUNC);
}
static void
@@ -760,14 +751,17 @@ test_clamping_to_region (void)
&min_size);
g_assert (rect.width == 400 && rect.height == 1180);
- printf ("The next test intentionally causes a warning, "
- "but it can be ignored.\n");
rect = meta_rect (50, 50, 10000, 10000);
min_size.width = 600; min_size.height = 1170;
+
+ g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING,
+ "No rect whose size to clamp to found*");
meta_rectangle_clamp_to_fit_into_region (region,
fixed_directions,
&rect,
&min_size);
+ g_test_assert_expected_messages ();
+
g_assert (rect.width == 600 && rect.height == 1170);
rect = meta_rect (350, 50, 100, 1100);
@@ -788,20 +782,21 @@ test_clamping_to_region (void)
&min_size);
g_assert (rect.width == 400 && rect.height == 1100);
- printf ("The next test intentionally causes a warning, "
- "but it can be ignored.\n");
rect = meta_rect (300, 70, 999999, 999999);
min_size.width = 100; min_size.height = 200;
fixed_directions = FIXED_DIRECTION_Y;
+
+ g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING,
+ "No rect whose size to clamp to found*");
meta_rectangle_clamp_to_fit_into_region (region,
fixed_directions,
&rect,
&min_size);
+ g_test_assert_expected_messages ();
+
g_assert (rect.width == 100 && rect.height == 999999);
meta_rectangle_free_list_and_elements (region);
-
- printf ("%s passed.\n", G_STRFUNC);
}
static gboolean
@@ -883,8 +878,6 @@ test_clipping_to_region (void)
g_assert (meta_rectangle_equal (&rect, &temp));
meta_rectangle_free_list_and_elements (region);
-
- printf ("%s passed.\n", G_STRFUNC);
}
static void
@@ -953,8 +946,6 @@ test_shoving_into_region (void)
g_assert (meta_rectangle_equal (&rect, &temp));
meta_rectangle_free_list_and_elements (region);
-
- printf ("%s passed.\n", G_STRFUNC);
}
static void
@@ -1133,8 +1124,6 @@ test_find_onscreen_edges (void)
verify_edge_lists_are_equal (edges, tmp);
meta_rectangle_free_list_and_elements (tmp);
meta_rectangle_free_list_and_elements (edges);
-
- printf ("%s passed.\n", G_STRFUNC);
}
static void
@@ -1222,8 +1211,6 @@ test_find_nonintersected_monitor_edges (void)
verify_edge_lists_are_equal (edges, tmp);
meta_rectangle_free_list_and_elements (tmp);
meta_rectangle_free_list_and_elements (edges);
-
- printf ("%s passed.\n", G_STRFUNC);
}
static void
@@ -1323,8 +1310,6 @@ test_gravity_resize (void)
430,
211);
g_assert (meta_rectangle_equal (&rect, &temp));
-
- printf ("%s passed.\n", G_STRFUNC);
}
#define EPSILON 0.000000001
@@ -1376,35 +1361,33 @@ test_find_closest_point_to_line (void)
px, py,
&rx, &ry);
g_assert (fabs (rx - answer_x) < EPSILON && fabs (ry - answer_y) < EPSILON);
-
- printf ("%s passed.\n", G_STRFUNC);
}
-int
-main(void)
+void
+init_boxes_tests (void)
{
init_random_ness ();
- test_area ();
- test_intersect ();
- test_equal ();
- test_overlap_funcs ();
- test_basic_fitting ();
- test_regions_okay ();
- test_region_fitting ();
+ g_test_add_func ("/util/boxes/area", test_area);
+ g_test_add_func ("/util/boxes/intersect", test_intersect);
+ g_test_add_func ("/util/boxes/equal", test_equal);
+ g_test_add_func ("/util/boxes/overlap", test_overlap_funcs);
+ g_test_add_func ("/util/boxes/basic-fitting", test_basic_fitting);
- test_clamping_to_region ();
- test_clipping_to_region ();
- test_shoving_into_region ();
+ g_test_add_func ("/util/boxes/regions-ok", test_regions_okay);
+ g_test_add_func ("/util/boxes/regions-fitting", test_region_fitting);
+
+ g_test_add_func ("/util/boxes/clamp-to-region", test_clamping_to_region);
+ g_test_add_func ("/util/boxes/clip-to-region", test_clipping_to_region);
+ g_test_add_func ("/util/boxes/shove-into-region", test_shoving_into_region);
/* And now the functions dealing with edges more than boxes */
- test_find_onscreen_edges ();
- test_find_nonintersected_monitor_edges ();
+ g_test_add_func ("/util/boxes/onscreen-edges", test_find_onscreen_edges);
+ g_test_add_func ("/util/boxes/nonintersected-monitor-edges",
+ test_find_nonintersected_monitor_edges);
/* And now the misfit functions that don't quite fit in anywhere else... */
- test_gravity_resize ();
- test_find_closest_point_to_line ();
-
- printf ("All tests passed.\n");
- return 0;
+ g_test_add_func ("/util/boxes/gravity-resize", test_gravity_resize);
+ g_test_add_func ("/util/boxes/closest-point-to-line",
+ test_find_closest_point_to_line);
}
diff --git a/src/tests/boxes-tests.h b/src/tests/boxes-tests.h
new file mode 100644
index 000000000..9f3b778b7
--- /dev/null
+++ b/src/tests/boxes-tests.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2018 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 .
+ */
+
+#ifndef BOXES_TESTS_H
+#define BOXES_TESTS_H
+
+void init_boxes_tests (void);
+
+#endif /* BOXES_TESTS_H */
diff --git a/src/tests/unit-tests.c b/src/tests/unit-tests.c
index 59c70d5db..f933ff9ba 100644
--- a/src/tests/unit-tests.c
+++ b/src/tests/unit-tests.c
@@ -28,6 +28,7 @@
#include "compositor/meta-plugin-manager.h"
#include "core/boxes-private.h"
#include "core/main-private.h"
+#include "tests/boxes-tests.h"
#include "tests/meta-backend-test.h"
#include "tests/monitor-config-migration-unit-tests.h"
#include "tests/monitor-unit-tests.h"
@@ -252,6 +253,7 @@ init_tests (int argc, char **argv)
init_monitor_store_tests ();
init_monitor_config_migration_tests ();
init_monitor_tests ();
+ init_boxes_tests ();
}
int