test(ticks): cover raw callback slot cleanup
- commit
- d80cc8e00a818df812cf0d1310951d5c5721acdf
- author
- brice · · 2026-07-14 06:22 UTC
- committer
- brice · · 2026-07-14 07:06 UTC
- parent
- 1c59f12
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
2 files · +36 -0
A internal/infrastructure/cef/webview_begin_frame_cleanup_test.go +18 -0
| @@ -0,0 +1,18 @@ | |||
| 1 | + | package cef | |
| 2 | + | ||
| 3 | + | import ( | |
| 4 | + | "testing" | |
| 5 | + | ||
| 6 | + | "github.com/bnema/puregotk/v4/gtk" | |
| 7 | + | ) | |
| 8 | + | ||
| 9 | + | func TestStopBeginFrameLoopReleasesCallbackSlotWithoutWidget(t *testing.T) { | |
| 10 | + | callback := new(gtk.TickCallback) | |
| 11 | + | wv := &WebView{beginFrameTick: callback, beginFrameTickID: 17} | |
| 12 | + | ||
| 13 | + | wv.stopBeginFrameLoop() | |
| 14 | + | ||
| 15 | + | if wv.beginFrameTick != nil || wv.beginFrameTickID != 0 { | |
| 16 | + | t.Fatal("stop must release the BeginFrame callback slot even after the GTK widget is gone") | |
| 17 | + | } | |
| 18 | + | } | |
| @@ -0,0 +1,18 @@ | |||||
| 1 | + | package cef | |||
| 2 | + | ||||
| 3 | + | import ( | |||
| 4 | + | "testing" | |||
| 5 | + | ||||
| 6 | + | "github.com/bnema/puregotk/v4/gtk" | |||
| 7 | + | ) | |||
| 8 | + | ||||
| 9 | + | func TestStopBeginFrameLoopReleasesCallbackSlotWithoutWidget(t *testing.T) { | |||
| 10 | + | callback := new(gtk.TickCallback) | |||
| 11 | + | wv := &WebView{beginFrameTick: callback, beginFrameTickID: 17} | |||
| 12 | + | ||||
| 13 | + | wv.stopBeginFrameLoop() | |||
| 14 | + | ||||
| 15 | + | if wv.beginFrameTick != nil || wv.beginFrameTickID != 0 { | |||
| 16 | + | t.Fatal("stop must release the BeginFrame callback slot even after the GTK widget is gone") | |||
| 17 | + | } | |||
| 18 | + | } | |||
A internal/ui/floating_pane_callback_cleanup_test.go +18 -0
| @@ -0,0 +1,18 @@ | |||
| 1 | + | package ui | |
| 2 | + | ||
| 3 | + | import ( | |
| 4 | + | "testing" | |
| 5 | + | ||
| 6 | + | "github.com/bnema/puregotk/v4/gtk" | |
| 7 | + | ) | |
| 8 | + | ||
| 9 | + | func TestStopFloatingResizeWatcherReleasesRawCallbackSlot(t *testing.T) { | |
| 10 | + | callback := new(gtk.TickCallback) | |
| 11 | + | session := &floatingWorkspaceSession{resizeTickCallback: callback, resizeTickID: 17, resizeWatcherActive: true} | |
| 12 | + | ||
| 13 | + | (&App{}).stopFloatingResizeWatcher(session) | |
| 14 | + | ||
| 15 | + | if session.resizeTickCallback != nil || session.resizeTickID != 0 || session.resizeWatcherActive { | |
| 16 | + | t.Fatal("stop must release the floating resize callback slot exactly once") | |
| 17 | + | } | |
| 18 | + | } | |
| @@ -0,0 +1,18 @@ | |||||
| 1 | + | package ui | |||
| 2 | + | ||||
| 3 | + | import ( | |||
| 4 | + | "testing" | |||
| 5 | + | ||||
| 6 | + | "github.com/bnema/puregotk/v4/gtk" | |||
| 7 | + | ) | |||
| 8 | + | ||||
| 9 | + | func TestStopFloatingResizeWatcherReleasesRawCallbackSlot(t *testing.T) { | |||
| 10 | + | callback := new(gtk.TickCallback) | |||
| 11 | + | session := &floatingWorkspaceSession{resizeTickCallback: callback, resizeTickID: 17, resizeWatcherActive: true} | |||
| 12 | + | ||||
| 13 | + | (&App{}).stopFloatingResizeWatcher(session) | |||
| 14 | + | ||||
| 15 | + | if session.resizeTickCallback != nil || session.resizeTickID != 0 || session.resizeWatcherActive { | |||
| 16 | + | t.Fatal("stop must release the floating resize callback slot exactly once") | |||
| 17 | + | } | |||
| 18 | + | } | |||