package editor import ( "testing" "timshome.page/gilo/gilo" "timshome.page/gilo/key" ) type moveCursor struct { keys []string withFile bool cursor *gilo.Point } var cursorTests = []moveCursor{ {[]string{string(key.Esc)}, false, gilo.DefaultPoint()}, {[]string{keyRight}, true, gilo.NewPoint(1, 0)}, {[]string{keyDown, keyEnd}, true, gilo.NewPoint(14, 1)}, {[]string{keyEnd, keyHome}, true, gilo.DefaultPoint()}, {[]string{keyRight, keyLeft}, true, gilo.DefaultPoint()}, {[]string{keyDown, keyUp}, true, gilo.DefaultPoint()}, // {[]string{keyPageUp}, true, gilo.DefaultPoint()}, } func TestMoveCursor(t *testing.T) { for _, test := range cursorTests { e := NewEditor() if test.withFile { e.Open("editor.go") } for _, k := range test.keys { e.moveCursor(k) } want := test.cursor got := e.cursor if got.X != want.X || got.Y != want.Y { t.Errorf("Output %v not equal to expected %v for input %q", got, want, test.keys) } } } type seqTest struct { input string expected string } var seqTests = []seqTest{ {"OH", keyHome}, {"OF", keyEnd}, {"[A", keyUp}, {"[B", keyDown}, {"[C", keyRight}, {"[D", keyLeft}, {"[H", keyHome}, {"[F", keyEnd}, {"[1~", keyHome}, {"[3~", keyDelete}, {"[4~", keyEnd}, {"[5~", keyPageUp}, {"[6~", keyPageDown}, {"[7~", keyHome}, {"[8~", keyEnd}, {"OQ", string(key.Esc)}, {"XZ", string(key.Esc)}, } func TestEscToKey(t *testing.T) { for _, test := range seqTests { got := escSeqToKey([]rune(test.input)) want := test.expected if got != want { t.Errorf("Got %s for input %s, expected %s", got, test.input, want) } } }