[glib: 11/12] gobject/tests/binding: Add a test with run-dispose




commit 4ef2025d47770ea2da1c4cc9360f21a002d4ed62
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Sun Jul 3 15:10:31 2022 -0400

    gobject/tests/binding: Add a test with run-dispose
    
    Add tests in which `g_object_run_dispose()` is called on the source or target
    of a `GBinding`. After commit a4fa456e677246629e714d05b5de178691571b06,
    the target test caused a failed assertion in `g_weak_ref_set()` that was not
    found by the existing tests.  Commit 94ba14d5424c9304342a601cb9eb0842e56d8f51
    weakens the assertion to allow the test to succeed.
    
    See https://gitlab.gnome.org/GNOME/glib/-/issues/2676

 gobject/tests/binding.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)
---
diff --git a/gobject/tests/binding.c b/gobject/tests/binding.c
index b8373e3455..cc6e65987c 100644
--- a/gobject/tests/binding.c
+++ b/gobject/tests/binding.c
@@ -1089,6 +1089,52 @@ binding_concurrent_finalizing (void)
     }
 }
 
+static void
+binding_dispose_source (void)
+{
+  /* Test that the source can be disposed */
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+  BindingTarget *target = g_object_new (binding_target_get_type (), NULL);
+  GBinding *binding;
+
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2676";);
+
+  binding = g_object_bind_property (source, "foo",
+                                    target, "bar",
+                                    G_BINDING_DEFAULT);
+
+  g_object_add_weak_pointer (G_OBJECT (binding), (gpointer *) &binding);
+
+  g_object_run_dispose (G_OBJECT (source));
+  g_assert_null (binding);
+
+  g_object_unref (target);
+  g_object_unref (source);
+}
+
+static void
+binding_dispose_target (void)
+{
+  /* Test that the target can be disposed */
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+  BindingTarget *target = g_object_new (binding_target_get_type (), NULL);
+  GBinding *binding;
+
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2676";);
+
+  binding = g_object_bind_property (source, "foo",
+                                    target, "bar",
+                                    G_BINDING_DEFAULT);
+
+  g_object_add_weak_pointer (G_OBJECT (binding), (gpointer *) &binding);
+
+  g_object_run_dispose (G_OBJECT (target));
+  g_assert_null (binding);
+
+  g_object_unref (target);
+  g_object_unref (source);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -1111,6 +1157,8 @@ main (int argc, char *argv[])
   g_test_add_func ("/binding/interface", binding_interface);
   g_test_add_func ("/binding/concurrent-unbind", binding_concurrent_unbind);
   g_test_add_func ("/binding/concurrent-finalizing", binding_concurrent_finalizing);
+  g_test_add_func ("/binding/dispose-source", binding_dispose_source);
+  g_test_add_func ("/binding/dispose-target", binding_dispose_target);
 
   return g_test_run ();
 }


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