testsuite: Check more property notification

We can easily check some object types
such as widgets.
This commit is contained in:
Matthias Clasen
2023-03-30 12:43:21 -04:00
parent 87f9e8a4c1
commit 2650c4e974

View File

@@ -86,7 +86,7 @@ check_property (GObject *instance, GParamSpec *pspec)
first = 1;
else
first = 0;
for (i = first; i < class->n_values; i++)
{
current_count = data.count + 1;
@@ -161,7 +161,7 @@ check_property (GObject *instance, GParamSpec *pspec)
assert_notifies (instance, pspec->name, data.count, 1);
g_signal_handler_disconnect (instance, id);
}
}
else if (pspec->value_type == G_TYPE_INT)
{
GParamSpecInt *p = G_PARAM_SPEC_INT (pspec);
@@ -283,7 +283,7 @@ check_property (GObject *instance, GParamSpec *pspec)
/* don't check redundant notifications */
g_object_get (instance, pspec->name, &value, NULL);
if (p->maximum > 100 || p->minimum < -100)
delta = M_PI;
else
@@ -323,7 +323,7 @@ check_property (GObject *instance, GParamSpec *pspec)
/* don't check redundant notifications */
g_object_get (instance, pspec->name, &value, NULL);
new_value = p->minimum;
for (i = 0; i < 10; i++)
{
@@ -340,6 +340,23 @@ check_property (GObject *instance, GParamSpec *pspec)
assert_notifies (instance, pspec->name, data.count, current_count);
}
g_signal_handler_disconnect (instance, id);
}
else if (pspec->value_type == GTK_TYPE_WIDGET)
{
NotifyData data;
gulong id;
GtkWidget *value;
data.name = pspec->name;
data.count = 0;
id = g_signal_connect (instance, "notify", G_CALLBACK (count_notify), &data);
value = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
g_object_set (instance, pspec->name, value, NULL);
assert_notifies (instance, pspec->name, data.count, 1);
g_signal_handler_disconnect (instance, id);
}
else
@@ -406,6 +423,14 @@ test_type (gconstpointer data)
g_type_is_a (type, GTK_TYPE_NAMED_ACTION))
return;
/* needs a surface */
if (g_type_is_a (type, GTK_TYPE_DRAG_ICON))
return;
/* Needs debugging */
if (g_type_is_a (type, GTK_TYPE_SHORTCUTS_WINDOW))
return;
klass = g_type_class_ref (type);
if (g_type_is_a (type, GTK_TYPE_SETTINGS))
@@ -483,7 +508,7 @@ test_type (gconstpointer data)
GParamSpec *pspec = pspecs[i];
if ((pspec->flags & G_PARAM_READABLE) == 0)
continue;
continue;
if ((pspec->flags & G_PARAM_WRITABLE) == 0)
continue;
@@ -492,8 +517,8 @@ test_type (gconstpointer data)
continue;
/* non-GTK */
if (g_str_equal (g_type_name (pspec->owner_type), "GdkPixbufSimpleAnim") ||
g_str_equal (g_type_name (pspec->owner_type), "GMountOperation"))
if (g_str_equal (g_type_name (pspec->owner_type), "GdkPixbufSimpleAnim") ||
g_str_equal (g_type_name (pspec->owner_type), "GMountOperation"))
continue;
/* set properties are best skipped */
@@ -527,11 +552,11 @@ test_type (gconstpointer data)
continue;
if (g_type_is_a (pspec->owner_type, GTK_TYPE_COLOR_CHOOSER) &&
g_str_equal (pspec->name, "show-editor"))
g_str_equal (pspec->name, "show-editor"))
continue;
if (g_type_is_a (pspec->owner_type, GTK_TYPE_NOTEBOOK) &&
g_str_equal (pspec->name, "page"))
g_str_equal (pspec->name, "page"))
continue;
/* Too many special cases involving -set properties */
@@ -573,7 +598,8 @@ test_type (gconstpointer data)
continue;
if (pspec->owner_type == GTK_TYPE_STACK &&
g_str_equal (pspec->name, "visible-child-name"))
(g_str_equal (pspec->name, "visible-child-name") ||
g_str_equal (pspec->name, "visible-child")))
continue;
if (pspec->owner_type == GTK_TYPE_STACK_PAGE && /* Can't change position without a stack */
@@ -603,35 +629,35 @@ test_type (gconstpointer data)
/* This one has a special-purpose default value */
if (g_type_is_a (type, GTK_TYPE_DIALOG) &&
g_str_equal (pspec->name, "use-header-bar"))
continue;
g_str_equal (pspec->name, "use-header-bar"))
continue;
if (g_type_is_a (type, GTK_TYPE_ASSISTANT) &&
g_str_equal (pspec->name, "use-header-bar"))
continue;
g_str_equal (pspec->name, "use-header-bar"))
continue;
if (g_type_is_a (type, GTK_TYPE_SHORTCUTS_SHORTCUT) &&
g_str_equal (pspec->name, "accelerator"))
continue;
g_str_equal (pspec->name, "accelerator"))
continue;
if (g_type_is_a (type, GTK_TYPE_SHORTCUT_LABEL) &&
g_str_equal (pspec->name, "accelerator"))
continue;
g_str_equal (pspec->name, "accelerator"))
continue;
if (g_type_is_a (type, GTK_TYPE_FONT_CHOOSER) &&
g_str_equal (pspec->name, "font"))
continue;
g_str_equal (pspec->name, "font"))
continue;
/* these depend on the min-content- properties in a way that breaks our test */
if (g_type_is_a (type, GTK_TYPE_SCROLLED_WINDOW) &&
(g_str_equal (pspec->name, "max-content-width") ||
g_str_equal (pspec->name, "max-content-height")))
continue;
(g_str_equal (pspec->name, "max-content-width") ||
g_str_equal (pspec->name, "max-content-height")))
continue;
/* expanding only works if rows are expandable */
if (g_type_is_a (type, GTK_TYPE_TREE_LIST_ROW) &&
g_str_equal (pspec->name, "expanded"))
continue;
g_str_equal (pspec->name, "expanded"))
continue;
/* can't select items without an underlying, populated model */
if (g_type_is_a (type, GTK_TYPE_SINGLE_SELECTION) &&
@@ -649,6 +675,10 @@ test_type (gconstpointer data)
g_str_equal (pspec->name, "position"))
continue;
/* This one is special */
if (g_str_equal (pspec->name, "focus-widget"))
continue;
if (g_test_verbose ())
g_print ("Property %s.%s\n", g_type_name (pspec->owner_type), pspec->name);