diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-06 18:30:23 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-06 18:30:23 +0200 |
| commit | b3bbf184dcdff908abbd4413c77e1455b24de0c9 (patch) | |
| tree | 27012d656db8b010c75c5367f95c20064720e7aa /internal/tui/dashboard/model_test.go | |
| parent | bd076884619c8f4d9e76ef8bc67b3bfd8b83235a (diff) | |
feat(tui): add syscalls treemap visualization mode (task 383)
Diffstat (limited to 'internal/tui/dashboard/model_test.go')
| -rw-r--r-- | internal/tui/dashboard/model_test.go | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/internal/tui/dashboard/model_test.go b/internal/tui/dashboard/model_test.go index e33271b..a92a77c 100644 --- a/internal/tui/dashboard/model_test.go +++ b/internal/tui/dashboard/model_test.go @@ -342,7 +342,7 @@ func TestDirGroupKeyTogglesOnlyOnFilesTab(t *testing.T) { } } -func TestBubbleVisualizationToggleForSyscallsTab(t *testing.T) { +func TestVisualizationCycleForSyscallsTab(t *testing.T) { snap := statsengine.NewSnapshot(nil, nil, nil, []statsengine.SyscallSnapshot{ {Name: "read", Count: 9, Bytes: 512}, {Name: "write", Count: 3, Bytes: 1024}, @@ -359,8 +359,14 @@ func TestBubbleVisualizationToggleForSyscallsTab(t *testing.T) { next, _ = model.Update(tea.KeyPressMsg{Code: []rune{'v'}[0], Text: string([]rune{'v'})}) model = next.(Model) + if got := model.syscallsVizMode; got != tabVizModeTreemap { + t.Fatalf("expected syscalls treemap mode enabled") + } + + next, _ = model.Update(tea.KeyPressMsg{Code: []rune{'v'}[0], Text: string([]rune{'v'})}) + model = next.(Model) if got := model.syscallsVizMode; got != tabVizModeTable { - t.Fatalf("expected syscalls bubble mode toggled off") + t.Fatalf("expected syscalls mode cycled back to table") } } @@ -434,6 +440,41 @@ func TestBubbleModeUsesJKForSelection(t *testing.T) { } } +func TestTreemapModeUsesJKForSelection(t *testing.T) { + snap := statsengine.NewSnapshot(nil, nil, nil, []statsengine.SyscallSnapshot{ + {Name: "read", Count: 9, Bytes: 512}, + {Name: "write", Count: 3, Bytes: 1024}, + }, nil, nil, statsengine.HistogramSnapshot{}, statsengine.HistogramSnapshot{}) + m := NewModelWithConfig(nil, nil, 250, common.DefaultKeyMap()) + m.activeTab = TabSyscalls + m.latest = &snap + m.syscallsVizMode = tabVizModeTreemap + + next, _ := m.Update(tea.KeyPressMsg{Code: []rune{'j'}[0], Text: string([]rune{'j'})}) + model := next.(Model) + if model.syscallsTreemapSelection != 1 { + t.Fatalf("expected treemap selection to move to index 1, got %d", model.syscallsTreemapSelection) + } +} + +func TestTreemapModeRendersTreemapHeader(t *testing.T) { + snap := statsengine.NewSnapshot(nil, nil, nil, []statsengine.SyscallSnapshot{ + {Name: "read", Count: 9, Bytes: 512}, + {Name: "write", Count: 3, Bytes: 1024}, + }, nil, nil, statsengine.HistogramSnapshot{}, statsengine.HistogramSnapshot{}) + m := NewModelWithConfig(nil, nil, 250, common.DefaultKeyMap()) + m.activeTab = TabSyscalls + m.latest = &snap + m.syscallsVizMode = tabVizModeTreemap + m.width = 120 + m.height = 28 + + out := m.View().Content + if !strings.Contains(out, "Syscalls treemap") { + t.Fatalf("expected treemap header in syscalls view") + } +} + func TestScrollOffsetDoesNotGrowUnbounded(t *testing.T) { m := NewModelWithConfig(nil, nil, 250, common.DefaultKeyMap()) m.activeTab = TabSyscalls |
