@@ -303,11 +303,22 @@ func Nb_basic(port)
303303 \ ' 56 "foo bar1\nfoo bar2\nfoo bar3\n"' ], l [-2 :])
304304 let g: last += 4
305305
306- " setDot test
306+ " setDot test with lnum/col
307+ call cursor (1 , 1 )
307308 call appendbufline (cmdbufnr, ' $' , ' setDot_Test' )
308309 call WaitFor (' len(ReadXnetbeans()) >= (g:last + 3)' )
309310 let l = ReadXnetbeans ()
310311 call assert_equal (' send: 2:setDot!57 3/6' , l [-1 ])
312+ call assert_equal ([0 , 3 , 7 , 0 ], getpos (' .' ))
313+ let g: last += 3
314+
315+ " setDot test with an offset
316+ call cursor (1 , 1 )
317+ call appendbufline (cmdbufnr, ' $' , ' setDot2_Test' )
318+ call WaitFor (' len(ReadXnetbeans()) >= (g:last + 3)' )
319+ let l = ReadXnetbeans ()
320+ call assert_equal (' send: 2:setDot!57 9' , l [-1 ])
321+ call assert_equal ([0 , 2 , 1 , 0 ], getpos (' .' ))
311322 let g: last += 3
312323
313324 " startDocumentListen test
@@ -328,6 +339,32 @@ func Nb_basic(port)
328339 call assert_match (' 2:remove=\d\+ 0 9' , l [-1 ])
329340 let g: last += 3
330341
342+ " Change case using the ~ command with 'whichwrap' containing '~'
343+ set whichwrap += ~
344+ normal 2 G$ ~
345+ set whichwrap &
346+ call WaitFor (' len(ReadXnetbeans()) >= (g:last + 2)' )
347+ let l = ReadXnetbeans ()
348+ call assert_match (' 2:remove=\d\+ 16 1' , l [-4 ])
349+ call assert_match (' 2:insert=\d\+ 16 "Y"' , l [-3 ])
350+ call assert_match (' 2:remove=\d\+ 18 0' , l [-2 ])
351+ call assert_match (' 2:insert=\d\+ 18 ""' , l [-1 ])
352+ let g: last += 4
353+
354+ " Test for replacing spaces with a tab character using 'softtabstop' and
355+ " 'noexpandtab'
356+ setlocal softtabstop = 4
357+ setlocal noexpandtab
358+ exe " normal I\<Tab>\<Tab> "
359+ setlocal expandtab &
360+ setlocal softtabstop &
361+ call WaitFor (' len(ReadXnetbeans()) >= (g:last + 18)' )
362+ let l = ReadXnetbeans ()
363+ call assert_match (' 2:insert=\d\+ 18 " foo bar3"' , l [-3 ])
364+ call assert_match (' 2:remove=\d\+ 26 8' , l [-2 ])
365+ call assert_match (' 2:insert=\d\+ 26 "\t"' , l [-1 ])
366+ let g: last += 18
367+
331368 " stopDocumentListen test
332369 call appendbufline (cmdbufnr, ' $' , ' stopDocumentListen_Test' )
333370 call WaitFor (' len(ReadXnetbeans()) >= (g:last + 3)' )
@@ -491,18 +528,29 @@ func Nb_basic(port)
491528 call assert_equal ([{' name' : ' 1' , ' texthl' : ' NB_s1' , ' text' : ' =>' },
492529 \ {' name' : ' 10000' , ' linehl' : ' NBGuarded' }],
493530 \ sign_getdefined ())
494- call assert_equal ([{' lnum' : 2 , ' id' : 1000000 , ' name' : ' 10000' ,
495- \ ' priority' : 10 , ' group' : ' ' }], sign_getplaced ()[0 ].signs)
531+ let s = sign_getplaced ()[0 ].signs[0 ]
532+ call assert_equal (2 , s .lnum)
533+ call assert_equal (' 10000' , s .name)
496534 let g: last += 3
497535
498536 " setModified test
499537 call appendbufline (cmdbufnr, ' $' , ' setModified_Test' )
500538 call WaitFor (' len(ReadXnetbeans()) >= (g:last + 3)' )
501539 let l = ReadXnetbeans ()
502540 call assert_equal (' send: 3:setModified!77 T' , l [-1 ])
541+ sleep 1 m
503542 call assert_equal (1 , &modified )
504543 let g: last += 3
505544
545+ " clear setModified test
546+ call appendbufline (cmdbufnr, ' $' , ' setModifiedClear_Test' )
547+ call WaitFor (' len(ReadXnetbeans()) >= (g:last + 3)' )
548+ let l = ReadXnetbeans ()
549+ call assert_equal (' send: 3:setModified!77 F' , l [-1 ])
550+ sleep 1 m
551+ call assert_equal (0 , &modified )
552+ let g: last += 3
553+
506554 " insertDone test
507555 let v: statusmsg = ' '
508556 call appendbufline (cmdbufnr, ' $' , ' insertDone_Test' )
@@ -586,26 +634,48 @@ func Nb_basic(port)
586634 call appendbufline (cmdbufnr, ' $' , ' setReadOnly_Test' )
587635 call WaitFor (' len(ReadXnetbeans()) >= (g:last + 3)' )
588636 let l = ReadXnetbeans ()
589- call assert_equal (' send: 3:setReadOnly!87' , l [-1 ])
637+ call assert_equal (' send: 3:setReadOnly!87 T' , l [-1 ])
638+ sleep 1 m
639+ call assert_equal (1 , &readonly )
640+ let g: last += 3
641+
642+ " clear setReadonly test
643+ call appendbufline (cmdbufnr, ' $' , ' setReadOnlyClear_Test' )
644+ call WaitFor (' len(ReadXnetbeans()) >= (g:last + 3)' )
645+ let l = ReadXnetbeans ()
646+ call assert_equal (' send: 3:setReadOnly!88 F' , l [-1 ])
647+ sleep 1 m
648+ call assert_equal (0 , &readonly )
649+ let g: last += 3
650+
651+ " save test
652+ call setbufvar (bufnr (' Xfile4' ), ' &modified' , 1 )
653+ call appendbufline (cmdbufnr, ' $' , ' save_Test' )
654+ call WaitFor (' len(ReadXnetbeans()) >= (g:last + 3)' )
655+ let l = ReadXnetbeans ()
656+ call assert_equal (' send: 3:save!89' , l [-1 ])
657+ sleep 1 m
658+ call assert_true (filereadable (' Xfile4' ))
590659 let g: last += 3
591660
592661 " close test. Don't use buffer 10 after this
593662 call appendbufline (cmdbufnr, ' $' , ' close_Test' )
594663 call WaitFor (' len(ReadXnetbeans()) >= (g:last + 4)' )
595664 let l = ReadXnetbeans ()
596- call assert_equal (' send: 3:close!88 ' , l [-2 ])
597- call assert_equal (' 3:killed=88 ' , l [-1 ])
665+ call assert_equal (' send: 3:close!90 ' , l [-2 ])
666+ call assert_equal (' 3:killed=90 ' , l [-1 ])
598667 call assert_equal (1 , winnr (' $' ))
599668 let g: last += 4
600669
601670 " specialKeys test
602671 call appendbufline (cmdbufnr, ' $' , ' specialKeys_Test' )
603672 call WaitFor (' len(ReadXnetbeans()) >= (g:last + 3)' )
604673 let l = ReadXnetbeans ()
605- call assert_equal (' send: 0:specialKeys!89 "F12 F13"' , l [-1 ])
674+ call assert_equal (' send: 0:specialKeys!91 "F12 F13 C- F13"' , l [-1 ])
606675 sleep 1 m
607676 call assert_equal (' :nbkey F12<CR>' , maparg (' <F12>' , ' n' ))
608677 call assert_equal (' :nbkey F13<CR>' , maparg (' <F13>' , ' n' ))
678+ call assert_equal (' :nbkey C-F13<CR>' , maparg (' <C-F13>' , ' n' ))
609679 let g: last += 3
610680
611681 " Open a buffer not monitored by netbeans
@@ -626,17 +696,110 @@ func Nb_basic(port)
626696 call WaitFor (' len(ReadXnetbeans()) >= (g:last + 10)' )
627697 let g: last += 10
628698
699+ if has (' mouse' )
700+ " Test for mouse button release
701+ let save_mouse = &mouse
702+ set mouse = a
703+ call feedkeys (" \<LeftMouse>\<LeftRelease> " , ' xt' )
704+ let &mouse = save_mouse
705+ call WaitFor (' len(ReadXnetbeans()) >= (g:last + 2)' )
706+ let l = ReadXnetbeans ()
707+ call assert_equal (' 4:newDotAndMark=93 0 0' , l [-2 ])
708+ call assert_equal (' 4:buttonRelease=93 0 1 -1' , l [-1 ])
709+ let g: last += 2
710+ endif
711+
712+ " Test for startAtomic
713+ call appendbufline (cmdbufnr, ' $' , ' startAtomic_Test' )
714+ call WaitFor (' len(ReadXnetbeans()) >= (g:last + 3)' )
715+ let l = ReadXnetbeans ()
716+ call assert_equal (' send: 0:startAtomic!94' , l [-1 ])
717+ let g: last += 3
718+
719+ " Test for endAtomic
720+ call appendbufline (cmdbufnr, ' $' , ' endAtomic_Test' )
721+ call WaitFor (' len(ReadXnetbeans()) >= (g:last + 3)' )
722+ let l = ReadXnetbeans ()
723+ call assert_equal (' send: 0:endAtomic!95' , l [-1 ])
724+ let g: last += 3
725+
726+ " Test for invoking a netbeans key binding
727+ let special_keys = [
728+ \ [" \<F1> " , ' F1' ], [" \<S-F1> " , ' S-F1' ],
729+ \ [" \<F2> " , ' F2' ], [" \<S-F2> " , ' S-F2' ],
730+ \ [" \<F3> " , ' F3' ], [" \<S-F3> " , ' S-F3' ],
731+ \ [" \<F4> " , ' F4' ], [" \<S-F4> " , ' S-F4' ],
732+ \ [" \<F5> " , ' F5' ], [" \<S-F5> " , ' S-F5' ],
733+ \ [" \<F6> " , ' F6' ], [" \<S-F6> " , ' S-F6' ],
734+ \ [" \<F7> " , ' F7' ], [" \<S-F7> " , ' S-F7' ],
735+ \ [" \<F8> " , ' F8' ], [" \<S-F8> " , ' S-F8' ],
736+ \ [" \<F9> " , ' F9' ], [" \<S-F9> " , ' S-F9' ],
737+ \ [" \<F11> " , ' F11' ], [" \<S-F11> " , ' S-F11' ],
738+ \ [" \<F12> " , ' F12' ], [" \<S-F12> " , ' S-F12' ], [' !' , ' !' ]
739+ \ ]
740+ for [key , name] in special_keys
741+ call feedkeys (" \<F21> " .. key , ' xt' )
742+ call WaitFor (' len(ReadXnetbeans()) >= (g:last + 3)' )
743+ let l = ReadXnetbeans ()
744+ call assert_match (' 4:keyCommand=\d\+ "' .. name .. ' "' , l [-2 ])
745+ call assert_match (' 4:keyAtPos=\d\+ "' .. name .. ' " 0 1/0' , l [-1 ])
746+ let g: last += 3
747+ endfor
748+ call feedkeys (" \<F21>\<C-S-M-F9> " , ' xt' )
749+ call WaitFor (' len(ReadXnetbeans()) >= (g:last + 3)' )
750+ let l = ReadXnetbeans ()
751+ call assert_match (' 4:keyCommand=\d\+ "CSM-F9"' , l [-2 ])
752+ call assert_match (' 4:keyAtPos=\d\+ "CSM-F9" 0 1/0' , l [-1 ])
753+ let g: last += 3
754+
755+ if has (' signs' ) && has (' mouse' )
756+ sign define S1 linehl= Search text== >
757+ sign define S2 linehl= ErrorMsg text= !!
758+ sign place 10 line = 1 name= S1
759+ sign place 20 line = 1 name= S2
760+
761+ let save_mouse = &mouse
762+ set mouse = a
763+ call assert_equal (' S2' , sign_getplaced ()[0 ].signs[0 ].name)
764+ call test_setmouse (1 , 1 )
765+ call feedkeys (" \<LeftMouse>\<LeftRelease> " , ' xt' )
766+ call assert_equal (' S1' , sign_getplaced ()[0 ].signs[0 ].name)
767+ call test_setmouse (1 , 1 )
768+ call feedkeys (" \<LeftMouse>\<LeftRelease> " , ' xt' )
769+ call assert_equal (' S2' , sign_getplaced ()[0 ].signs[0 ].name)
770+ let &mouse = save_mouse
771+
772+ sign unplace 10
773+ sign unplace 20
774+ sign undefine S1
775+ sign undefine S2
776+ endif
777+
778+ " define a large number of annotations
779+ call appendbufline (cmdbufnr, ' $' , ' AnnoScale_Test' )
780+ call WaitFor (' len(ReadXnetbeans()) >= (g:last + 26)' )
781+ let l = ReadXnetbeans ()
782+ call assert_equal (' 2:defineAnnoType!60 25 "s25" "x" "=>" blue none' , l [-1 ])
783+ sleep 1 m
784+ call assert_true (len (sign_getdefined ()) >= 25 )
785+ let g: last += 26
786+
629787 " detach
630788 call appendbufline (cmdbufnr, ' $' , ' detach_Test' )
631789 call WaitFor (' len(ReadXnetbeans()) >= (g:last + 8)' )
632- call WaitForAssert ({- > assert_equal (' 0:disconnect=93 ' , ReadXnetbeans ()[-1 ])})
790+ call WaitForAssert ({- > assert_equal (' 0:disconnect=97 ' , ReadXnetbeans ()[-1 ])})
633791
634792 " the connection was closed
635793 call assert_false (has (" netbeans_enabled" ))
636794
795+ " Remove all the signs
796+ call sign_unplace (' *' )
797+ call sign_undefine ()
798+
637799 call delete (" Xnetbeans" )
638800 call delete (' Xfile1' )
639801 call delete (' Xfile3' )
802+ call delete (' Xfile4' )
640803endfunc
641804
642805func Test_nb_basic ()
0 commit comments