Skip to content

Commit 07c51e1

Browse files
committed
add editor test for moving cursor from command line
1 parent c702044 commit 07c51e1

File tree

1 file changed

+63
-11
lines changed

1 file changed

+63
-11
lines changed

editor/editor_test.go

Lines changed: 63 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -341,9 +341,6 @@ func TestEditorWriteVisualSelection(t *testing.T) {
341341
}
342342

343343
func TestEditorWriteUndo(t *testing.T) {
344-
if runtime.GOOS == "windows" {
345-
t.Skip("skip on Windows")
346-
}
347344
ui := newTestUI()
348345
editor := NewEditor(ui, window.NewManager(), cmdline.NewCmdline())
349346
if err := editor.Init(); err != nil {
@@ -358,9 +355,9 @@ func TestEditorWriteUndo(t *testing.T) {
358355
}
359356
go func() {
360357
ui.Emit(event.Event{Type: event.DeleteByte})
361-
ui.Emit(event.Event{Type: event.Write, Arg: f.Name()})
358+
ui.Emit(event.Event{Type: event.Write, Arg: f.Name() + ".out"})
362359
ui.Emit(event.Event{Type: event.Undo})
363-
ui.Emit(event.Event{Type: event.WriteQuit, Arg: f.Name()})
360+
ui.Emit(event.Event{Type: event.Quit})
364361
}()
365362
if err := editor.Run(); err != nil {
366363
t.Errorf("err should be nil but got: %v", err)
@@ -382,12 +379,16 @@ func TestEditorWriteUndo(t *testing.T) {
382379
if expected := "abc"; string(bs) != expected {
383380
t.Errorf("file contents should be %q but got %q", expected, string(bs))
384381
}
382+
bs, err = os.ReadFile(f.Name() + ".out")
383+
if err != nil {
384+
t.Errorf("err should be nil but got: %v", err)
385+
}
386+
if expected := "bc"; string(bs) != expected {
387+
t.Errorf("file contents should be %q but got %q", expected, string(bs))
388+
}
385389
}
386390

387391
func TestEditorSearch(t *testing.T) {
388-
if runtime.GOOS == "windows" {
389-
t.Skip("skip on Windows")
390-
}
391392
ui := newTestUI()
392393
editor := NewEditor(ui, window.NewManager(), cmdline.NewCmdline())
393394
if err := editor.Init(); err != nil {
@@ -418,8 +419,8 @@ func TestEditorSearch(t *testing.T) {
418419
ui.Emit(event.Event{Type: event.DeleteByte})
419420
ui.Emit(event.Event{Type: event.PreviousSearch})
420421
ui.Emit(event.Event{Type: event.DeleteByte})
421-
ui.Emit(event.Event{Type: event.Write})
422-
ui.Emit(event.Event{Type: event.Quit})
422+
ui.Emit(event.Event{Type: event.Write, Arg: f.Name() + ".out"})
423+
ui.Emit(event.Event{Type: event.Quit, Bang: true})
423424
}()
424425
if err := editor.Run(); err != nil {
425426
t.Errorf("err should be nil but got: %v", err)
@@ -434,7 +435,7 @@ func TestEditorSearch(t *testing.T) {
434435
if err := editor.Close(); err != nil {
435436
t.Errorf("err should be nil but got: %v", err)
436437
}
437-
bs, err := os.ReadFile(f.Name())
438+
bs, err := os.ReadFile(f.Name() + ".out")
438439
if err != nil {
439440
t.Errorf("err should be nil but got: %v", err)
440441
}
@@ -443,6 +444,57 @@ func TestEditorSearch(t *testing.T) {
443444
}
444445
}
445446

447+
func TestEditorCmdlineCursorGoto(t *testing.T) {
448+
ui := newTestUI()
449+
editor := NewEditor(ui, window.NewManager(), cmdline.NewCmdline())
450+
if err := editor.Init(); err != nil {
451+
t.Fatalf("err should be nil but got: %v", err)
452+
}
453+
f, err := createTemp(t.TempDir(), "Hello, world!")
454+
if err != nil {
455+
t.Fatalf("err should be nil but got: %v", err)
456+
}
457+
if err := editor.Open(f.Name()); err != nil {
458+
t.Fatalf("err should be nil but got: %v", err)
459+
}
460+
go func() {
461+
ui.Emit(event.Event{Type: event.StartCmdlineCommand})
462+
ui.Emit(event.Event{Type: event.Rune, Rune: '6'})
463+
ui.Emit(event.Event{Type: event.ExecuteCmdline})
464+
ui.Emit(event.Event{Type: event.DeleteByte})
465+
ui.Emit(event.Event{Type: event.Write, Arg: f.Name() + ".out1"})
466+
ui.Emit(event.Event{Type: event.Undo})
467+
ui.Emit(event.Event{Type: event.StartCmdlineCommand})
468+
ui.Emit(event.Event{Type: event.Rune, Rune: '7'})
469+
ui.Emit(event.Event{Type: event.Rune, Rune: '0'})
470+
ui.Emit(event.Event{Type: event.Rune, Rune: '%'})
471+
ui.Emit(event.Event{Type: event.ExecuteCmdline})
472+
ui.Emit(event.Event{Type: event.DeleteByte})
473+
ui.Emit(event.Event{Type: event.Write, Arg: f.Name() + ".out2"})
474+
ui.Emit(event.Event{Type: event.Quit, Bang: true})
475+
}()
476+
if err := editor.Run(); err != nil {
477+
t.Errorf("err should be nil but got: %v", err)
478+
}
479+
if err := editor.Close(); err != nil {
480+
t.Errorf("err should be nil but got: %v", err)
481+
}
482+
bs, err := os.ReadFile(f.Name() + ".out1")
483+
if err != nil {
484+
t.Errorf("err should be nil but got: %v", err)
485+
}
486+
if expected := "Hello,world!"; string(bs) != expected {
487+
t.Errorf("file contents should be %q but got %q", expected, string(bs))
488+
}
489+
bs, err = os.ReadFile(f.Name() + ".out2")
490+
if err != nil {
491+
t.Errorf("err should be nil but got: %v", err)
492+
}
493+
if expected := "Hello, wold!"; string(bs) != expected {
494+
t.Errorf("file contents should be %q but got %q", expected, string(bs))
495+
}
496+
}
497+
446498
func TestEditorCmdlineQuit(t *testing.T) {
447499
ui := newTestUI()
448500
editor := NewEditor(ui, window.NewManager(), cmdline.NewCmdline())

0 commit comments

Comments
 (0)