72 lines
1.8 KiB
Go
72 lines
1.8 KiB
Go
|
package key
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"b612.me/apps/b612/bed/event"
|
||
|
)
|
||
|
|
||
|
func TestKeyManagerPress(t *testing.T) {
|
||
|
km := NewManager(true)
|
||
|
km.Register(event.CursorUp, "k")
|
||
|
e := km.Press("k")
|
||
|
if e.Type != event.CursorUp {
|
||
|
t.Errorf("pressing k should emit event.CursorUp but got: %d", e.Type)
|
||
|
}
|
||
|
e = km.Press("j")
|
||
|
if e.Type != event.Nop {
|
||
|
t.Errorf("pressing j should be nop but got: %d", e.Type)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestKeyManagerPressMulti(t *testing.T) {
|
||
|
km := NewManager(true)
|
||
|
km.Register(event.CursorUp, "k", "k", "j")
|
||
|
km.Register(event.CursorDown, "k", "j", "j")
|
||
|
km.Register(event.CursorDown, "j", "k", "k")
|
||
|
e := km.Press("k")
|
||
|
if e.Type != event.Nop {
|
||
|
t.Errorf("pressing k should be nop but got: %d", e.Type)
|
||
|
}
|
||
|
e = km.Press("k")
|
||
|
if e.Type != event.Nop {
|
||
|
t.Errorf("pressing k twice should be nop but got: %d", e.Type)
|
||
|
}
|
||
|
e = km.Press("k")
|
||
|
if e.Type != event.Nop {
|
||
|
t.Errorf("pressing k three times should be nop but got: %d", e.Type)
|
||
|
}
|
||
|
e = km.Press("j")
|
||
|
if e.Type != event.CursorUp {
|
||
|
t.Errorf("pressing kkj should emit event.CursorUp but got: %d", e.Type)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestKeyManagerPressCount(t *testing.T) {
|
||
|
km := NewManager(true)
|
||
|
km.Register(event.CursorUp, "k", "j")
|
||
|
e := km.Press("k")
|
||
|
if e.Type != event.Nop {
|
||
|
t.Errorf("pressing k should be nop but got: %d", e.Type)
|
||
|
}
|
||
|
e = km.Press("3")
|
||
|
if e.Type != event.Nop {
|
||
|
t.Errorf("pressing 3 should be nop but got: %d", e.Type)
|
||
|
}
|
||
|
e = km.Press("7")
|
||
|
if e.Type != event.Nop {
|
||
|
t.Errorf("pressing 7 should be nop but got: %d", e.Type)
|
||
|
}
|
||
|
e = km.Press("k")
|
||
|
if e.Type != event.Nop {
|
||
|
t.Errorf("pressing k should be nop but got: %d", e.Type)
|
||
|
}
|
||
|
e = km.Press("j")
|
||
|
if e.Type != event.CursorUp {
|
||
|
t.Errorf("pressing 37kj should emit event.CursorUp but got: %d", e.Type)
|
||
|
}
|
||
|
if e.Count != 37 {
|
||
|
t.Errorf("pressing 37kj should emit event.CursorUp with count 37 but got: %d", e.Count)
|
||
|
}
|
||
|
}
|