summaryrefslogtreecommitdiff
path: root/internal/tui/flamegraph/model_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-26 22:38:24 +0300
committerPaul Buetow <paul@buetow.org>2026-05-26 22:38:24 +0300
commit66332e4012e3cfad79f9309a4fd7937f5ccf0d26 (patch)
tree1159da3ce3a82a7c22c4e18626dba5ce2c4ab3de /internal/tui/flamegraph/model_test.go
parentdbd2d5a9afc496b6e913885fea3922f3fed9c4a0 (diff)
flamegraph: add height metric controls/keybinding (so)
Diffstat (limited to 'internal/tui/flamegraph/model_test.go')
-rw-r--r--internal/tui/flamegraph/model_test.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/internal/tui/flamegraph/model_test.go b/internal/tui/flamegraph/model_test.go
index e9d16f7..c5da062 100644
--- a/internal/tui/flamegraph/model_test.go
+++ b/internal/tui/flamegraph/model_test.go
@@ -24,6 +24,9 @@ func TestNewModelDefaults(t *testing.T) {
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 got, want := m.fieldPresets[5], []string{"tracepoint", "comm", "pid"}; !reflect.DeepEqual(got, want) {
+ t.Fatalf("default field preset[5] = %v, want %v", got, want)
+ }
if !m.isDark {
t.Fatalf("expected dark mode enabled by default")
}
@@ -1003,6 +1006,49 @@ func TestControlMetricToggleReconfiguresLiveTrieCountField(t *testing.T) {
}
}
+func TestControlHeightToggleReconfiguresLiveTrieHeightField(t *testing.T) {
+ liveTrie := coreflamegraph.NewLiveTrie([]string{"comm", "path", "tracepoint"}, "count", "")
+ m := NewModel(liveTrie)
+
+ m = pressFlameKey(t, m, tea.KeyPressMsg{Code: []rune{'v'}[0], Text: "v"})
+ if got, want := m.heightField, "duration"; got != want {
+ t.Fatalf("expected model height field %q, got %q", want, got)
+ }
+ if got, want := liveTrie.HeightField(), "duration"; got != want {
+ t.Fatalf("expected live trie height field %q, got %q", want, got)
+ }
+ if got, want := m.statusMessage, "Height: duration (new baseline)"; got != want {
+ t.Fatalf("expected height toggle status %q, got %q", want, got)
+ }
+
+ m = pressFlameKey(t, m, tea.KeyPressMsg{Code: []rune{'v'}[0], Text: "v"})
+ if got, want := m.heightField, "bytes"; got != want {
+ t.Fatalf("expected model height field %q after second toggle, got %q", want, got)
+ }
+ if got, want := liveTrie.HeightField(), "bytes"; got != want {
+ t.Fatalf("expected live trie height field %q after second toggle, got %q", want, got)
+ }
+
+ m = pressFlameKey(t, m, tea.KeyPressMsg{Code: []rune{'v'}[0], Text: "v"})
+ if got, want := m.heightField, "count"; got != want {
+ t.Fatalf("expected model height field %q after third toggle, got %q", want, got)
+ }
+ if got, want := liveTrie.HeightField(), "count"; got != want {
+ t.Fatalf("expected live trie height field %q after third toggle, got %q", want, got)
+ }
+
+ m = pressFlameKey(t, m, tea.KeyPressMsg{Code: []rune{'v'}[0], Text: "v"})
+ if got, want := m.heightField, ""; got != want {
+ t.Fatalf("expected model height field %q after fourth toggle, got %q", want, got)
+ }
+ if got, want := liveTrie.HeightField(), ""; got != want {
+ t.Fatalf("expected live trie height field %q after fourth toggle, got %q", want, got)
+ }
+ if got, want := m.statusMessage, "Height: off (new baseline)"; got != want {
+ t.Fatalf("expected height toggle off status %q, got %q", want, got)
+ }
+}
+
func TestNewModelAlignsPresetIndexToLiveTrieFields(t *testing.T) {
liveTrie := coreflamegraph.NewLiveTrie([]string{"comm", "path", "tracepoint"}, "count", "count")
m := NewModel(liveTrie)
@@ -1019,6 +1065,14 @@ func TestNewModelAlignsCountFieldToLiveTrie(t *testing.T) {
}
}
+func TestNewModelAlignsHeightFieldToLiveTrie(t *testing.T) {
+ liveTrie := coreflamegraph.NewLiveTrie([]string{"comm", "path", "tracepoint"}, "count", "bytes")
+ m := NewModel(liveTrie)
+ if got, want := m.heightField, "bytes"; got != want {
+ t.Fatalf("expected model height field to align with trie field, got %q want %q", got, want)
+ }
+}
+
func TestControlHelpToggle(t *testing.T) {
m := NewModel(nil)
m = pressFlameKey(t, m, tea.KeyPressMsg{Code: []rune{'?'}[0], Text: "?"})