1package tui
2
3import (
4 "reflect"
5 "strings"
6 "testing"
7)
8
9func TestPinnedSkillsMatchesResourceSections(t *testing.T) {
10 th := Theme{Accent: Color256(75), Muted: Color256(245)}
11 got := RenderPinnedSkills(th, []string{"review", "vscode"}, 80)
12 want := []string{"", th.FGColor(th.Accent, "[Pinned skills]"), th.FGColor(th.Muted, " review, vscode")}
13 if !reflect.DeepEqual(got, want) {
14 t.Fatalf("rows = %q, want %q", got, want)
15 }
16 if got := RenderPinnedSkills(th, nil, 80); len(got) != 0 {
17 t.Fatalf("empty pins rendered rows: %q", got)
18 }
19}
20
21func TestPinnedSkillsWrapNamesToTerminalWidth(t *testing.T) {
22 for _, width := range []int{1, 4, 12, 30, 80} {
23 rows := RenderPinnedSkills(Theme{}, []string{strings.Repeat("界", 20), "review", "vscode"}, width)
24 for _, row := range rows {
25 if got := visibleWidth(row); got > width {
26 t.Fatalf("row width %d exceeds %d: %q", got, width, row)
27 }
28 }
29 if width >= 4 {
30 body := strings.Join(rows[2:], "")
31 if !strings.Contains(body, "vscode") && width >= 12 {
32 t.Fatalf("last skill was truncated: %q", rows)
33 }
34 }
35 }
36}