102 lines
2.6 KiB
Go
102 lines
2.6 KiB
Go
package internal
|
|
|
|
import "testing"
|
|
|
|
// TestEditTitleInput 验证编辑标题模式下的按键输入逻辑
|
|
func TestEditTitleInput(t *testing.T) {
|
|
m := NewModel()
|
|
m.history.Projects = []*ProjectDir{
|
|
{DirShort: "test", Sessions: []*Session{
|
|
{ID: "s1", AISummary: "旧标题"},
|
|
}},
|
|
}
|
|
m.history.DirCursor = 2
|
|
m.history.SessCursor = 0
|
|
m.history.FocusPanel = 1
|
|
m.history.Loaded = true
|
|
|
|
// 1. 按 e 进入编辑模式
|
|
m, _ = m.handleKey("e")
|
|
if !m.editTitleMode {
|
|
t.Fatal("按 e 应进入编辑模式")
|
|
}
|
|
if m.editTitleBuf != "旧标题" {
|
|
t.Fatalf("编辑缓冲应预填旧标题, got %q", m.editTitleBuf)
|
|
}
|
|
if m.editTitleCursor != 3 {
|
|
t.Fatalf("光标应在末尾, got %d", m.editTitleCursor)
|
|
}
|
|
|
|
// 2. 输入英文 a
|
|
m, _ = m.handleKey("a")
|
|
if m.editTitleBuf != "旧标题a" {
|
|
t.Fatalf("输入 a 应追加, got %q", m.editTitleBuf)
|
|
}
|
|
if m.editTitleCursor != 4 {
|
|
t.Fatalf("输入 a 后光标应在 4, got %d", m.editTitleCursor)
|
|
}
|
|
|
|
// 3. 空格
|
|
m, _ = m.handleKey("space")
|
|
if m.editTitleBuf != "旧标题a " {
|
|
t.Fatalf("空格应插入空格, got %q", m.editTitleBuf)
|
|
}
|
|
if m.editTitleCursor != 5 {
|
|
t.Fatalf("空格后光标应在 5, got %d", m.editTitleCursor)
|
|
}
|
|
|
|
// 4. backspace 删末尾
|
|
m, _ = m.handleKey("backspace")
|
|
if m.editTitleBuf != "旧标题a" {
|
|
t.Fatalf("backspace 应删末尾, got %q", m.editTitleBuf)
|
|
}
|
|
if m.editTitleCursor != 4 {
|
|
t.Fatalf("backspace 后光标应在 4, got %d", m.editTitleCursor)
|
|
}
|
|
|
|
// 5. 输入中文 新
|
|
m, _ = m.handleKey("新")
|
|
if m.editTitleBuf != "旧标题a新" {
|
|
t.Fatalf("输入中文应追加, got %q", m.editTitleBuf)
|
|
}
|
|
if m.editTitleCursor != 5 {
|
|
t.Fatalf("输入中文后光标应在 5, got %d", m.editTitleCursor)
|
|
}
|
|
|
|
// 6. 左移光标
|
|
m, _ = m.handleKey("left")
|
|
if m.editTitleCursor != 4 {
|
|
t.Fatalf("左移后光标应在 4, got %d", m.editTitleCursor)
|
|
}
|
|
|
|
// 7. 在光标处插入
|
|
m, _ = m.handleKey("X")
|
|
if m.editTitleBuf != "旧标题aX新" {
|
|
t.Fatalf("光标处插入 'X' 失败, got %q", m.editTitleBuf)
|
|
}
|
|
if m.editTitleCursor != 5 {
|
|
t.Fatalf("插入后光标应在 5, got %d", m.editTitleCursor)
|
|
}
|
|
|
|
// 8. delete 删除光标处字符
|
|
m, _ = m.handleKey("delete")
|
|
if m.editTitleBuf != "旧标题aX" {
|
|
t.Fatalf("delete 应删光标处字符, got %q", m.editTitleBuf)
|
|
}
|
|
if m.editTitleCursor != 5 {
|
|
t.Fatalf("delete 后光标应在 5, got %d", m.editTitleCursor)
|
|
}
|
|
|
|
// 9. esc 取消
|
|
m, _ = m.handleKey("esc")
|
|
if m.editTitleMode {
|
|
t.Fatal("esc 应退出编辑模式")
|
|
}
|
|
if m.editTitleBuf != "" {
|
|
t.Fatalf("esc 应清空缓冲, got %q", m.editTitleBuf)
|
|
}
|
|
if m.editTitleCursor != 0 {
|
|
t.Fatalf("esc 应重置光标, got %d", m.editTitleCursor)
|
|
}
|
|
}
|