[gjs: 7/22] testGtk3: Ensure that disposed signal callback gets called with valid object




commit 805d07e79265022c40b586dc7b12ec29c5b6d068
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Wed Mar 24 20:42:19 2021 +0100

    testGtk3: Ensure that disposed signal callback gets called with valid object
    
    As per previous commits we handle the disposal differently, so ensure
    that all works as expected.

 installed-tests/js/testGtk3.js | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
---
diff --git a/installed-tests/js/testGtk3.js b/installed-tests/js/testGtk3.js
index 8d08481f..a6ba2642 100644
--- a/installed-tests/js/testGtk3.js
+++ b/installed-tests/js/testGtk3.js
@@ -214,6 +214,23 @@ describe('Gtk overrides', function () {
             'GTK vfuncs are not called if the object is disposed');
     });
 
+    it('destroy signal is emitted while disposing objects', function () {
+        const label = new Gtk.Label({label: 'Hello'});
+        const handleDispose = jasmine.createSpy('handleDispose').and.callFake(() => {
+            expect(label.label).toBe('Hello');
+        });
+        label.connect('destroy', handleDispose);
+        label.destroy();
+
+        expect(handleDispose).toHaveBeenCalledWith(label);
+
+        GLib.test_expect_message('Gjs', GLib.LogLevelFlags.LEVEL_CRITICAL,
+            'Object Gtk.Label (0x* deallocated *');
+        expect(label.label).toBeUndefined();
+        GLib.test_assert_expected_messages_internal('Gjs', 'testGtk3.js', 0,
+            'GTK destroy signal is emitted while disposing objects');
+    });
+
     it('accepts string in place of GdkAtom', function () {
         expect(() => Gtk.Clipboard.get(1)).toThrow();
         expect(() => Gtk.Clipboard.get(true)).toThrow();


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