Skip to content

Commit 80c4ea6

Browse files
committed
nvim: add SetBufferText testcase
1 parent 3297da2 commit 80c4ea6

File tree

1 file changed

+183
-77
lines changed

1 file changed

+183
-77
lines changed

nvim/nvim_test.go

Lines changed: 183 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -539,85 +539,191 @@ func testTabpage(v *Nvim) func(*testing.T) {
539539
func testLines(v *Nvim) func(*testing.T) {
540540
return func(t *testing.T) {
541541
t.Run("Nvim", func(t *testing.T) {
542-
buf, err := v.CurrentBuffer()
543-
if err != nil {
544-
t.Fatal(err)
545-
}
542+
t.Run("BufferLines", func(t *testing.T) {
543+
buf, err := v.CurrentBuffer()
544+
if err != nil {
545+
t.Fatal(err)
546+
}
547+
defer clearBuffer(t, v, buf) // clear buffer after run sub-test.
546548

547-
lines := [][]byte{[]byte("hello"), []byte("world")}
548-
if err := v.SetBufferLines(buf, 0, -1, true, lines); err != nil {
549-
t.Fatal(err)
550-
}
551-
lines2, err := v.BufferLines(buf, 0, -1, true)
552-
if err != nil {
553-
t.Fatal(err)
554-
}
555-
if !reflect.DeepEqual(lines2, lines) {
556-
t.Fatalf("lines = %+v, want %+v", lines2, lines)
557-
}
549+
lines := [][]byte{[]byte("hello"), []byte("world")}
550+
if err := v.SetBufferLines(buf, 0, -1, true, lines); err != nil {
551+
t.Fatal(err)
552+
}
553+
lines2, err := v.BufferLines(buf, 0, -1, true)
554+
if err != nil {
555+
t.Fatal(err)
556+
}
557+
if !reflect.DeepEqual(lines2, lines) {
558+
t.Fatalf("lines = %+v, want %+v", lines2, lines)
559+
}
558560

559-
const wantCount = 2
560-
count, err := v.BufferLineCount(buf)
561-
if err != nil {
562-
t.Fatal(err)
563-
}
564-
if count != wantCount {
565-
t.Fatalf("got count %d but want %d", count, wantCount)
566-
}
561+
const wantCount = 2
562+
count, err := v.BufferLineCount(buf)
563+
if err != nil {
564+
t.Fatal(err)
565+
}
566+
if count != wantCount {
567+
t.Fatalf("got count %d but want %d", count, wantCount)
568+
}
567569

568-
const wantOffset = 12 // [][]byte{[]byte("hello"), []byte("\n"), []byte("world"), []byte("\n")}
569-
offset, err := v.BufferOffset(buf, count)
570-
if err != nil {
571-
t.Fatal(err)
572-
}
573-
if offset != wantOffset {
574-
t.Fatalf("got offset %d but want %d", offset, wantOffset)
575-
}
570+
const wantOffset = 12 // [][]byte{[]byte("hello"), []byte("\n"), []byte("world"), []byte("\n")}
571+
offset, err := v.BufferOffset(buf, count)
572+
if err != nil {
573+
t.Fatal(err)
574+
}
575+
if offset != wantOffset {
576+
t.Fatalf("got offset %d but want %d", offset, wantOffset)
577+
}
578+
})
579+
580+
t.Run("SetBufferText", func(t *testing.T) {
581+
buf, err := v.CurrentBuffer()
582+
if err != nil {
583+
t.Fatal(err)
584+
}
585+
defer clearBuffer(t, v, buf) // clear buffer after run sub-test.
586+
587+
// sets test buffer text.
588+
lines := [][]byte{[]byte("Vim is the"), []byte("Nvim-fork? focused on extensibility and usability")}
589+
if err := v.SetBufferLines(buf, 0, -1, true, lines); err != nil {
590+
t.Fatal(err)
591+
}
592+
593+
// Replace `Vim is the` to `Neovim is the`
594+
if err := v.SetBufferText(buf, 0, 0, 0, 3, [][]byte{[]byte("Neovim")}); err != nil {
595+
t.Fatal(err)
596+
}
597+
// Replace `Nvim-fork?` to `Vim-fork`
598+
if err := v.SetBufferText(buf, 1, 0, 1, 10, [][]byte{[]byte("Vim-fork")}); err != nil {
599+
t.Fatal(err)
600+
}
601+
602+
want := [2][]byte{
603+
[]byte("Neovim is the"),
604+
[]byte("Vim-fork focused on extensibility and usability"),
605+
}
606+
got, err := v.BufferLines(buf, 0, -1, true)
607+
if err != nil {
608+
t.Fatal(err)
609+
}
610+
611+
// assert buffer lines count.
612+
const wantCount = 2
613+
if len(got) != wantCount {
614+
t.Fatalf("expected buffer lines rows is %d: got %d", wantCount, len(got))
615+
}
616+
617+
// assert row 1 buffer text.
618+
if !bytes.EqualFold(want[0], got[0]) {
619+
t.Fatalf("row 1 is not equal: want: %q, got: %q", string(want[0]), string(got[0]))
620+
}
621+
622+
// assert row 2 buffer text.
623+
if !bytes.EqualFold(want[1], got[1]) {
624+
t.Fatalf("row 2 is not equal: want: %q, got: %q", string(want[1]), string(got[1]))
625+
}
626+
})
576627
})
577628

578629
t.Run("Batch", func(t *testing.T) {
579-
b := v.NewBatch()
630+
t.Run("BufferLines", func(t *testing.T) {
631+
b := v.NewBatch()
580632

581-
var buf Buffer
582-
b.CurrentBuffer(&buf)
583-
if err := b.Execute(); err != nil {
584-
t.Fatal(err)
585-
}
633+
var buf Buffer
634+
b.CurrentBuffer(&buf)
635+
if err := b.Execute(); err != nil {
636+
t.Fatal(err)
637+
}
638+
defer clearBuffer(t, v, buf) // clear buffer after run sub-test.
586639

587-
lines := [][]byte{[]byte("hello"), []byte("world")}
588-
b.SetBufferLines(buf, 0, -1, true, lines)
589-
if err := b.Execute(); err != nil {
590-
t.Fatal(err)
591-
}
640+
lines := [][]byte{[]byte("hello"), []byte("world")}
641+
b.SetBufferLines(buf, 0, -1, true, lines)
642+
if err := b.Execute(); err != nil {
643+
t.Fatal(err)
644+
}
592645

593-
var lines2 [][]byte
594-
b.BufferLines(buf, 0, -1, true, &lines2)
595-
if err := b.Execute(); err != nil {
596-
t.Fatal(err)
597-
}
598-
if !reflect.DeepEqual(lines2, lines) {
599-
t.Fatalf("lines = %+v, want %+v", lines2, lines)
600-
}
646+
var lines2 [][]byte
647+
b.BufferLines(buf, 0, -1, true, &lines2)
648+
if err := b.Execute(); err != nil {
649+
t.Fatal(err)
650+
}
651+
if !reflect.DeepEqual(lines2, lines) {
652+
t.Fatalf("lines = %+v, want %+v", lines2, lines)
653+
}
601654

602-
const wantCount = 2
603-
var count int
604-
b.BufferLineCount(buf, &count)
605-
if err := b.Execute(); err != nil {
606-
t.Fatal(err)
607-
}
608-
if count != wantCount {
609-
t.Fatalf("count is not 2 %d", count)
610-
}
655+
const wantCount = 2
656+
var count int
657+
b.BufferLineCount(buf, &count)
658+
if err := b.Execute(); err != nil {
659+
t.Fatal(err)
660+
}
661+
if count != wantCount {
662+
t.Fatalf("count is not 2 %d", count)
663+
}
611664

612-
const wantOffset = 12 // [][]byte{[]byte("hello"), []byte("\n"), []byte("world"), []byte("\n")}
613-
var offset int
614-
b.BufferOffset(buf, count, &offset)
615-
if err := b.Execute(); err != nil {
616-
t.Fatal(err)
617-
}
618-
if offset != wantOffset {
619-
t.Fatalf("got offset %d but want %d", offset, wantOffset)
620-
}
665+
const wantOffset = 12 // [][]byte{[]byte("hello"), []byte("\n"), []byte("world"), []byte("\n")}
666+
var offset int
667+
b.BufferOffset(buf, count, &offset)
668+
if err := b.Execute(); err != nil {
669+
t.Fatal(err)
670+
}
671+
if offset != wantOffset {
672+
t.Fatalf("got offset %d but want %d", offset, wantOffset)
673+
}
674+
})
675+
676+
t.Run("SetBufferText", func(t *testing.T) {
677+
b := v.NewBatch()
678+
679+
var buf Buffer
680+
b.CurrentBuffer(&buf)
681+
if err := b.Execute(); err != nil {
682+
t.Fatal(err)
683+
}
684+
defer clearBuffer(t, v, buf) // clear buffer after run sub-test.
685+
686+
// sets test buffer text.
687+
lines := [][]byte{[]byte("Vim is the"), []byte("Nvim-fork? focused on extensibility and usability")}
688+
b.SetBufferLines(buf, 0, -1, true, lines)
689+
if err := b.Execute(); err != nil {
690+
t.Fatal(err)
691+
}
692+
693+
// Replace `Vim is the` to `Neovim is the`
694+
b.SetBufferText(buf, 0, 0, 0, 3, [][]byte{[]byte("Neovim")})
695+
// Replace `Nvim-fork?` to `Vim-fork`
696+
b.SetBufferText(buf, 1, 0, 1, 10, [][]byte{[]byte("Vim-fork")})
697+
if err := b.Execute(); err != nil {
698+
t.Fatal(err)
699+
}
700+
701+
want := [2][]byte{
702+
[]byte("Neovim is the"),
703+
[]byte("Vim-fork focused on extensibility and usability"),
704+
}
705+
var got [][]byte
706+
b.BufferLines(buf, 0, -1, true, &got)
707+
if err := b.Execute(); err != nil {
708+
t.Fatal(err)
709+
}
710+
711+
// assert buffer lines count.
712+
const wantCount = 2
713+
if len(got) != wantCount {
714+
t.Fatalf("expected buffer lines rows is %d: got %d", wantCount, len(got))
715+
}
716+
717+
// assert row 1 buffer text.
718+
if !bytes.EqualFold(want[0], got[0]) {
719+
t.Fatalf("row 1 is not equal: want: %q, got: %q", string(want[0]), string(got[0]))
720+
}
721+
722+
// assert row 1 buffer text.
723+
if !bytes.EqualFold(want[1], got[1]) {
724+
t.Fatalf("row 2 is not equal: want: %q, got: %q", string(want[1]), string(got[1]))
725+
}
726+
})
621727
})
622728
}
623729
}
@@ -1549,15 +1655,6 @@ func testOptionsInfo(v *Nvim) func(*testing.T) {
15491655
}
15501656
}
15511657

1552-
// clearBuffer clears the buffer text.
1553-
func clearBuffer(tb testing.TB, v *Nvim, buffer Buffer) {
1554-
tb.Helper()
1555-
1556-
if err := v.SetBufferLines(buffer, 0, -1, true, bytes.Fields(nil)); err != nil {
1557-
tb.Fatal(err)
1558-
}
1559-
}
1560-
15611658
func TestDial(t *testing.T) {
15621659
if runtime.GOOS == "windows" {
15631660
t.Skip("not supported dial unix socket on windows GOOS")
@@ -1637,3 +1734,12 @@ func TestEmbedded(t *testing.T) {
16371734
t.Fatal("timeout waiting for serve to exit")
16381735
}
16391736
}
1737+
1738+
// clearBuffer clears the buffer lines.
1739+
func clearBuffer(tb testing.TB, v *Nvim, buffer Buffer) {
1740+
tb.Helper()
1741+
1742+
if err := v.SetBufferLines(buffer, 0, -1, true, bytes.Fields(nil)); err != nil {
1743+
tb.Fatal(err)
1744+
}
1745+
}

0 commit comments

Comments
 (0)