diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-09 08:05:26 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-09 08:05:26 +0200 |
| commit | 9f35d16940f35591dd0b0c782d2ec8e57bba84b5 (patch) | |
| tree | 031bd61cd47299ed66736012370541f4af760ceb /internal/tui/flamegraph/model_test.go | |
| parent | 1277f03a01fafd5ce7931bf9d48dc92f089c6894 (diff) | |
tui: harden paused flame rendering
Diffstat (limited to 'internal/tui/flamegraph/model_test.go')
| -rw-r--r-- | internal/tui/flamegraph/model_test.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/internal/tui/flamegraph/model_test.go b/internal/tui/flamegraph/model_test.go index 2f98b73..f83ccff 100644 --- a/internal/tui/flamegraph/model_test.go +++ b/internal/tui/flamegraph/model_test.go @@ -1130,6 +1130,36 @@ func TestResizeRecalculatesLayoutAndCullsNarrowFrames(t *testing.T) { } } +func TestSetViewportSameSizeKeepsPausedZoomLayoutStable(t *testing.T) { + m := newZoomModel() + m.selectedIdx = mustFrameIndex(t, m.frames, "root"+pathSeparator+"A") + m = pressFlameKey(t, m, tea.KeyPressMsg{Code: tea.KeyEnter}) + m.paused = true + + rootIdx := mustFrameIndex(t, m.frames, "root"+pathSeparator+"A") + if got, want := m.frames[rootIdx].Width, m.width; got != want { + t.Fatalf("expected zoom root to span full width before redundant viewport set, got %d want %d", got, want) + } + + beforeFrames := append([]tuiFrame(nil), m.frames...) + beforeTargets := append([]tuiFrame(nil), m.targetFrames...) + m.SetViewport(m.width, m.height) + + if m.animating { + t.Fatalf("expected redundant viewport set to avoid starting animation") + } + if !reflect.DeepEqual(m.frames, beforeFrames) { + t.Fatalf("expected redundant viewport set to preserve current frames") + } + if !reflect.DeepEqual(m.targetFrames, beforeTargets) { + t.Fatalf("expected redundant viewport set to preserve target frames") + } + rootIdx = mustFrameIndex(t, m.frames, "root"+pathSeparator+"A") + if got, want := m.frames[rootIdx].Width, m.width; got != want { + t.Fatalf("expected zoom root to remain full width after redundant viewport set, got %d want %d", got, want) + } +} + func newZoomModel() Model { m := NewModel(nil) m.width = 120 |
