Files
u-tabs/internal/view_skills_test.go
lxy 558b676eea 修复: 技能面板视口按行收口与截断尾部乱码
- 技能列表视口改按行数切片(含描述行),修复变长条目撑爆面板
- 大文件截断改按 rune 边界回退,修复中文内容尾部乱码
- 补视口与截断边界测试
2026-10-03 10:13:35 +08:00

33 lines
946 B
Go

package internal
import (
"strings"
"testing"
)
// TestSkillsListLinesViewportByLines 验证技能列表视口按行数(含描述行)收口,
// 返回行数不超过 listH,避免变长行撑爆面板
func TestSkillsListLinesViewportByLines(t *testing.T) {
m := NewModel()
m.Skills.Loaded = true
for i := 0; i < 3; i++ {
m.Skills.Skills = append(m.Skills.Skills, &SkillInfo{
Name: "skill-" + strings.Repeat("x", i),
Description: "描述行 " + string(rune('A'+i)),
})
}
m.Skills.SkillCur = 0
m.Skills.FocusPanel = 0
listH := 3 // 足够只显示部分(总共 6 行:3 技能 × 2 行)
lines := m.skillsListLines(30, listH)
if len(lines) > listH {
t.Fatalf("skillsListLines 应返回 ≤ %d 行, got %d", listH, len(lines))
}
// 光标在首个技能时,视口应从头开始且光标行可见
if !strings.Contains(lines[0], "▸") {
t.Fatalf("首行应含光标标记, got %q", lines[0])
}
}