@@ -539,85 +539,191 @@ func testTabpage(v *Nvim) func(*testing.T) {
539539func 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-
15611658func 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