diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-06 14:33:52 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-06 14:33:52 +0200 |
| commit | 3e08a3d199fdf603b7c0a4002ca9822b6ecf2575 (patch) | |
| tree | 7e096a07cc515ffc18f0eca308819e8162df1d60 /internal/tui/flamegraph/model_test.go | |
| parent | aa4f638206b9b79de267f9a1daab7ec6698b241d (diff) | |
flamegraph: make esc undo one zoom level and aggregate syscalls by default
Diffstat (limited to 'internal/tui/flamegraph/model_test.go')
| -rw-r--r-- | internal/tui/flamegraph/model_test.go | 42 |
1 files changed, 35 insertions, 7 deletions
diff --git a/internal/tui/flamegraph/model_test.go b/internal/tui/flamegraph/model_test.go index e98d936..e253c76 100644 --- a/internal/tui/flamegraph/model_test.go +++ b/internal/tui/flamegraph/model_test.go @@ -21,6 +21,9 @@ func TestNewModelDefaults(t *testing.T) { if len(m.fieldPresets) == 0 { t.Fatalf("expected default field presets to be initialized") } + if got, want := m.fieldPresets[0], []string{"comm", "tracepoint", "path"}; !reflect.DeepEqual(got, want) { + t.Fatalf("default field preset[0] = %v, want %v", got, want) + } if !m.isDark { t.Fatalf("expected dark mode enabled by default") } @@ -399,7 +402,7 @@ func TestFilteredNavigationSkipsHiddenBranches(t *testing.T) { } } -func TestZoomInUndoResetAndNestedZoom(t *testing.T) { +func TestZoomInUndoSingleLevelAndNestedEsc(t *testing.T) { m := newZoomModel() m.selectedIdx = mustFrameIndex(t, m.frames, "root"+pathSeparator+"A") @@ -423,17 +426,33 @@ func TestZoomInUndoResetAndNestedZoom(t *testing.T) { t.Fatalf("expected nested zoom stack to preserve parent path, got %#v", m.zoomStack) } - m = pressFlameKey(t, m, tea.KeyPressMsg{Code: tea.KeyBackspace}) + m = pressFlameKey(t, m, tea.KeyPressMsg{Code: tea.KeyEsc}) if got, want := m.zoomPath, "root"+pathSeparator+"A"; got != want { - t.Fatalf("expected zoomPath after undo %q, got %q", want, got) + t.Fatalf("expected zoomPath after esc undo %q, got %q", want, got) } if len(m.zoomStack) != 1 { - t.Fatalf("expected one stack entry after undo, got %d", len(m.zoomStack)) + t.Fatalf("expected one stack entry after esc undo, got %d", len(m.zoomStack)) } m = pressFlameKey(t, m, tea.KeyPressMsg{Code: tea.KeyEsc}) if m.zoomPath != "" || m.zoomRoot != nil || len(m.zoomStack) != 0 { - t.Fatalf("expected zoom reset to root state, got path=%q root=%+v stack=%d", m.zoomPath, m.zoomRoot, len(m.zoomStack)) + t.Fatalf("expected second esc undo to return to root state, got path=%q root=%+v stack=%d", m.zoomPath, m.zoomRoot, len(m.zoomStack)) + } +} + +func TestZoomResetToRoot(t *testing.T) { + m := newZoomModel() + m.selectedIdx = mustFrameIndex(t, m.frames, "root"+pathSeparator+"A") + m = pressFlameKey(t, m, tea.KeyPressMsg{Code: tea.KeyEnter}) + m.selectedIdx = mustFrameIndex(t, m.frames, "root"+pathSeparator+"A"+pathSeparator+"A1") + m = pressFlameKey(t, m, tea.KeyPressMsg{Code: tea.KeyEnter}) + if m.zoomPath == "" || len(m.zoomStack) == 0 { + t.Fatalf("expected nested zoom before reset") + } + + m.zoomReset() + if m.zoomPath != "" || m.zoomRoot != nil || len(m.zoomStack) != 0 { + t.Fatalf("expected explicit zoom reset to clear zoom stack, got path=%q root=%+v stack=%d", m.zoomPath, m.zoomRoot, len(m.zoomStack)) } } @@ -620,10 +639,11 @@ func TestControlCycleFieldOrderReconfiguresLiveTrie(t *testing.T) { liveTrie := coreflamegraph.NewLiveTrie([]string{"comm", "path", "tracepoint"}, "count") m := NewModel(liveTrie) initial := append([]string(nil), m.fieldPresets[m.fieldIndex]...) + expectedNextIdx := (m.fieldIndex + 1) % len(m.fieldPresets) m = pressFlameKey(t, m, tea.KeyPressMsg{Code: []rune{'o'}[0], Text: "o"}) - if m.fieldIndex != 1 { - t.Fatalf("expected field index to advance to 1, got %d", m.fieldIndex) + if m.fieldIndex != expectedNextIdx { + t.Fatalf("expected field index to advance to %d, got %d", expectedNextIdx, m.fieldIndex) } next := m.fieldPresets[m.fieldIndex] if reflect.DeepEqual(initial, next) { @@ -634,6 +654,14 @@ func TestControlCycleFieldOrderReconfiguresLiveTrie(t *testing.T) { } } +func TestNewModelAlignsPresetIndexToLiveTrieFields(t *testing.T) { + liveTrie := coreflamegraph.NewLiveTrie([]string{"comm", "path", "tracepoint"}, "count") + m := NewModel(liveTrie) + if got, want := m.fieldPresets[m.fieldIndex], []string{"comm", "path", "tracepoint"}; !reflect.DeepEqual(got, want) { + t.Fatalf("expected model field preset to align with trie fields, got %v want %v", got, want) + } +} + func TestControlHelpToggle(t *testing.T) { m := NewModel(nil) m = pressFlameKey(t, m, tea.KeyPressMsg{Code: []rune{'?'}[0], Text: "?"}) |
