Add some more visual tests
These are just basic tests to ensure that the visual implementation of a backend is sound.
This commit is contained in:
@ -50,16 +50,136 @@ test_rgba_visual (void)
|
||||
g_assert_cmpint (b_precision, ==, 8);
|
||||
}
|
||||
|
||||
static void
|
||||
test_list_visuals (void)
|
||||
{
|
||||
GdkScreen *screen;
|
||||
GdkVisual *visual;
|
||||
GdkVisual *rgba_visual;
|
||||
GdkVisual *system_visual;
|
||||
GList *list, *l;
|
||||
gboolean found_system, found_rgba;
|
||||
|
||||
screen = gdk_screen_get_default ();
|
||||
system_visual = gdk_screen_get_system_visual (screen);
|
||||
rgba_visual = gdk_screen_get_rgba_visual (screen);
|
||||
|
||||
found_system = FALSE;
|
||||
found_rgba = FALSE;
|
||||
|
||||
list = gdk_screen_list_visuals (screen);
|
||||
for (l = list; l; l = l->next)
|
||||
{
|
||||
visual = l->data;
|
||||
if (visual == system_visual)
|
||||
found_system = TRUE;
|
||||
if (visual == rgba_visual)
|
||||
found_rgba = TRUE;
|
||||
}
|
||||
g_list_free (list);
|
||||
|
||||
g_assert (system_visual != NULL && found_system);
|
||||
g_assert (rgba_visual == NULL || found_rgba);
|
||||
}
|
||||
|
||||
static void
|
||||
test_depth (void)
|
||||
{
|
||||
GdkVisual *visual;
|
||||
gint *depths;
|
||||
gint n_depths;
|
||||
gint i, j;
|
||||
gboolean is_depth;
|
||||
|
||||
gdk_query_depths (&depths, &n_depths);
|
||||
g_assert_cmpint (n_depths, >, 0);
|
||||
for (i = 0; i < n_depths; i++)
|
||||
{
|
||||
g_assert_cmpint (depths[i], >, 0);
|
||||
g_assert_cmpint (depths[i], <=, 32);
|
||||
|
||||
visual = gdk_visual_get_best_with_depth (depths[i]);
|
||||
|
||||
g_assert_nonnull (visual);
|
||||
g_assert_cmpint (gdk_visual_get_depth (visual), ==, depths[i]);
|
||||
}
|
||||
|
||||
for (i = 1; i <= 32; i++)
|
||||
{
|
||||
is_depth = FALSE;
|
||||
for (j = 0; j < n_depths; j++)
|
||||
{
|
||||
if (i == depths[j])
|
||||
is_depth = TRUE;
|
||||
}
|
||||
|
||||
visual = gdk_visual_get_best_with_depth (i);
|
||||
if (!is_depth)
|
||||
g_assert_null (visual);
|
||||
else
|
||||
{
|
||||
g_assert_nonnull (visual);
|
||||
g_assert_cmpint (gdk_visual_get_depth (visual), ==, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
test_type (void)
|
||||
{
|
||||
GdkVisual *visual;
|
||||
GdkVisualType *types;
|
||||
gint n_types;
|
||||
gint i, j;
|
||||
gboolean is_type;
|
||||
|
||||
gdk_query_visual_types (&types, &n_types);
|
||||
g_assert_cmpint (n_types, >, 0);
|
||||
for (i = 0; i < n_types; i++)
|
||||
{
|
||||
g_assert_cmpint (types[i], >=, GDK_VISUAL_STATIC_GRAY);
|
||||
g_assert_cmpint (types[i], <=, GDK_VISUAL_DIRECT_COLOR);
|
||||
|
||||
visual = gdk_visual_get_best_with_type (types[i]);
|
||||
|
||||
g_assert_nonnull (visual);
|
||||
g_assert_cmpint (gdk_visual_get_visual_type (visual), ==, types[i]);
|
||||
}
|
||||
|
||||
for (i = GDK_VISUAL_STATIC_GRAY; i <= GDK_VISUAL_DIRECT_COLOR; i++)
|
||||
{
|
||||
is_type = FALSE;
|
||||
for (j = 0; j < n_types; j++)
|
||||
{
|
||||
if (i == types[j])
|
||||
is_type = TRUE;
|
||||
}
|
||||
|
||||
visual = gdk_visual_get_best_with_type (i);
|
||||
if (!is_type)
|
||||
g_assert_null (visual);
|
||||
else
|
||||
{
|
||||
g_assert_nonnull (visual);
|
||||
g_assert_cmpint (gdk_visual_get_visual_type (visual), ==, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
g_test_init (&argc, &argv, NULL);
|
||||
g_test_init (&argc, &argv, NULL);
|
||||
|
||||
gdk_init (NULL, NULL);
|
||||
gdk_init (NULL, NULL);
|
||||
|
||||
g_test_bug_base ("http://bugzilla.gnome.org/");
|
||||
g_test_bug_base ("http://bugzilla.gnome.org/");
|
||||
|
||||
g_test_add_func ("/visual/rgba", test_rgba_visual);
|
||||
g_test_add_func ("/visual/list", test_list_visuals);
|
||||
g_test_add_func ("/visual/rgba", test_rgba_visual);
|
||||
g_test_add_func ("/visual/depth", test_depth);
|
||||
g_test_add_func ("/visual/type", test_type);
|
||||
|
||||
return g_test_run ();
|
||||
return g_test_run ();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user