@@ -92,6 +92,7 @@ func TestAPI(t *testing.T) {
9292 t .Run ("Tabpage" , testTabpage (v ))
9393 t .Run ("Lines" , testLines (v ))
9494 t .Run ("Var" , testVar (v ))
95+ t .Run ("Message" , testMessage (v ))
9596 t .Run ("StructValue" , testStructValue (v ))
9697 t .Run ("Eval" , testEval (v ))
9798 t .Run ("Batch" , testBatch (v ))
@@ -884,6 +885,143 @@ func testVar(v *Nvim) func(*testing.T) {
884885 }
885886}
886887
888+ func testMessage (v * Nvim ) func (* testing.T ) {
889+ return func (t * testing.T ) {
890+ t .Run ("Nvim" , func (t * testing.T ) {
891+ const wantWriteOut = `hello WriteOut`
892+ if err := v .WriteOut (wantWriteOut + "\n " ); err != nil {
893+ t .Fatalf ("failed to WriteOut: %v" , err )
894+ }
895+
896+ var gotWriteOut string
897+ if err := v .VVar ("statusmsg" , & gotWriteOut ); err != nil {
898+ t .Fatalf ("could not get v:statusmsg nvim variable: %v" , err )
899+ }
900+ if gotWriteOut != wantWriteOut {
901+ t .Fatalf ("WriteOut(%q) = %q, want: %q" , wantWriteOut , gotWriteOut , wantWriteOut )
902+ }
903+
904+ // cleanup v:statusmsg
905+ if err := v .SetVVar ("statusmsg" , "" ); err != nil {
906+ t .Fatalf ("failed to SetVVar: %v" , err )
907+ }
908+
909+ // clear messages
910+ if _ , err := v .Exec (":messages clear" , false ); err != nil {
911+ t .Fatalf ("failed to SetVVar: %v" , err )
912+ }
913+
914+ const wantWriteErr = `hello WriteErr`
915+ if err := v .WriteErr (wantWriteErr + "\n " ); err != nil {
916+ t .Fatalf ("failed to WriteErr: %v" , err )
917+ }
918+
919+ var gotWriteErr string
920+ if err := v .VVar ("errmsg" , & gotWriteErr ); err != nil {
921+ t .Fatalf ("could not get v:statusmsg nvim variable: %v" , err )
922+ }
923+ if gotWriteErr != wantWriteErr {
924+ t .Fatalf ("WriteErr(%q) = %q, want: %q" , wantWriteErr , gotWriteErr , wantWriteErr )
925+ }
926+
927+ // cleanup v:statusmsg
928+ if err := v .SetVVar ("statusmsg" , "" ); err != nil {
929+ t .Fatalf ("failed to SetVVar: %v" , err )
930+ }
931+
932+ // clear messages
933+ if _ , err := v .Exec (":messages clear" , false ); err != nil {
934+ t .Fatalf ("failed to SetVVar: %v" , err )
935+ }
936+
937+ const wantWritelnErr = `hello WritelnErr`
938+ if err := v .WritelnErr (wantWritelnErr ); err != nil {
939+ t .Fatalf ("failed to WriteErr: %v" , err )
940+ }
941+
942+ var gotWritelnErr string
943+ if err := v .VVar ("errmsg" , & gotWritelnErr ); err != nil {
944+ t .Fatalf ("could not get v:statusmsg nvim variable: %v" , err )
945+ }
946+ if gotWritelnErr != wantWritelnErr {
947+ t .Fatalf ("WritelnErr(%q) = %q, want: %q" , wantWritelnErr , gotWritelnErr , wantWritelnErr )
948+ }
949+
950+ // cleanup v:statusmsg
951+ if err := v .SetVVar ("statusmsg" , "" ); err != nil {
952+ t .Fatalf ("failed to SetVVar: %v" , err )
953+ }
954+
955+ // clear messages
956+ if _ , err := v .Exec (":messages clear" , false ); err != nil {
957+ t .Fatalf ("failed to SetVVar: %v" , err )
958+ }
959+ })
960+
961+ t .Run ("Batch" , func (t * testing.T ) {
962+ b := v .NewBatch ()
963+
964+ const wantWriteOut = `hello WriteOut`
965+ b .WriteOut (wantWriteOut + "\n " )
966+ if err := b .Execute (); err != nil {
967+ t .Fatalf ("failed to WriteOut: %v" , err )
968+ }
969+
970+ var gotWriteOut string
971+ b .VVar ("statusmsg" , & gotWriteOut )
972+ if err := b .Execute (); err != nil {
973+ t .Fatalf ("could not get v:statusmsg nvim variable: %v" , err )
974+ }
975+ if gotWriteOut != wantWriteOut {
976+ t .Fatalf ("b.WriteOut(%q) = %q, want: %q" , wantWriteOut , gotWriteOut , wantWriteOut )
977+ }
978+
979+ // cleanup v:statusmsg
980+ if err := v .SetVVar ("statusmsg" , "" ); err != nil {
981+ t .Fatalf ("failed to SetVVar: %v" , err )
982+ }
983+
984+ const wantWriteErr = `hello WriteErr`
985+ b .WriteErr (wantWriteErr + "\n " )
986+ if err := b .Execute (); err != nil {
987+ t .Fatalf ("failed to WriteErr: %v" , err )
988+ }
989+ var gotWriteErr string
990+ b .VVar ("errmsg" , & gotWriteErr )
991+ if err := b .Execute (); err != nil {
992+ t .Fatalf ("could not get v:statusmsg nvim variable: %v" , err )
993+ }
994+ if gotWriteErr != wantWriteErr {
995+ t .Fatalf ("b.WriteErr(%q) = %q, want: %q" , wantWriteErr , gotWriteErr , wantWriteErr )
996+ }
997+
998+ // cleanup v:statusmsg
999+ if err := v .SetVVar ("statusmsg" , "" ); err != nil {
1000+ t .Fatalf ("failed to SetVVar: %v" , err )
1001+ }
1002+
1003+ const wantWritelnErr = `hello WritelnErr`
1004+ b .WritelnErr (wantWritelnErr )
1005+ if err := b .Execute (); err != nil {
1006+ t .Fatalf ("failed to WriteErr: %v" , err )
1007+ }
1008+ var gotWritelnErr string
1009+ b .VVar ("errmsg" , & gotWritelnErr )
1010+ if err := b .Execute (); err != nil {
1011+ t .Fatalf ("could not get v:statusmsg nvim variable: %v" , err )
1012+ }
1013+ if gotWritelnErr != wantWritelnErr {
1014+ t .Fatalf ("b.WritelnErr(%q) = %q, want: %q" , wantWritelnErr , gotWritelnErr , wantWritelnErr )
1015+ }
1016+
1017+ // cleanup v:statusmsg
1018+ if err := v .SetVVar ("statusmsg" , "" ); err != nil {
1019+ t .Fatalf ("failed to SetVVar: %v" , err )
1020+ }
1021+ })
1022+ }
1023+ }
1024+
8871025func testStructValue (v * Nvim ) func (* testing.T ) {
8881026 return func (t * testing.T ) {
8891027 t .Run ("Nvim" , func (t * testing.T ) {
0 commit comments