1321efdd7SBram Moolenaar" Test the netbeans interface.
2321efdd7SBram Moolenaar
3b46fecd3SBram Moolenaarsource check.vim
4b46fecd3SBram MoolenaarCheckFeature netbeans_intg
5321efdd7SBram Moolenaar
6321efdd7SBram Moolenaarsource shared.vim
7321efdd7SBram Moolenaar
8321efdd7SBram Moolenaarlet s:python = PythonProg()
9321efdd7SBram Moolenaarif s:python == ''
10b46fecd3SBram Moolenaar  throw 'Skipped: python program missing'
11321efdd7SBram Moolenaarendif
12321efdd7SBram Moolenaar
134b96df5aSBram Moolenaar" Run "testfunc" after starting the server and stop the server afterwards.
14321efdd7SBram Moolenaarfunc s:run_server(testfunc, ...)
15321efdd7SBram Moolenaar  call RunServer('test_netbeans.py', a:testfunc, a:000)
16321efdd7SBram Moolenaarendfunc
17321efdd7SBram Moolenaar
18173d841eSBram Moolenaar" Wait for an exception (error) to be thrown. This is used to check whether a
19173d841eSBram Moolenaar" message from the netbeans server causes an error. It takes some time for Vim
20173d841eSBram Moolenaar" to process a netbeans message. So a sleep is used below to account for this.
21173d841eSBram Moolenaarfunc WaitForError(errcode)
22173d841eSBram Moolenaar  let save_exception = ''
23173d841eSBram Moolenaar  for i in range(200)
24173d841eSBram Moolenaar    try
25173d841eSBram Moolenaar      sleep 5m
26173d841eSBram Moolenaar    catch
27173d841eSBram Moolenaar      let save_exception = v:exception
28173d841eSBram Moolenaar      break
29173d841eSBram Moolenaar    endtry
30173d841eSBram Moolenaar  endfor
31173d841eSBram Moolenaar  call assert_match(a:errcode, save_exception)
32173d841eSBram Moolenaarendfunc
33173d841eSBram Moolenaar
3495650159SBram Moolenaar" Read the "Xnetbeans" file and filter out geometry messages.
3595650159SBram Moolenaarfunc ReadXnetbeans()
3695650159SBram Moolenaar  let l = readfile("Xnetbeans")
3732e5ec0bSBram Moolenaar  " Xnetbeans may include '0:geometry=' messages in the GUI Vim if the window
3895650159SBram Moolenaar  " position, size, or z order are changed.  Remove these messages because
3950dc3eccSBram Moolenaar  " these messages will break the assert for the output.
4095650159SBram Moolenaar  return filter(l, 'v:val !~ "^0:geometry="')
4195650159SBram Moolenaarendfunc
4295650159SBram Moolenaar
43321efdd7SBram Moolenaarfunc Nb_basic(port)
44321efdd7SBram Moolenaar  call delete("Xnetbeans")
45c20e0d52SBram Moolenaar  call writefile([], "Xnetbeans")
46173d841eSBram Moolenaar
47173d841eSBram Moolenaar  " Last line number in the Xnetbeans file. Used to verify the result of the
48173d841eSBram Moolenaar  " communication with the netbeans server
49173d841eSBram Moolenaar  let g:last = 0
50173d841eSBram Moolenaar
51173d841eSBram Moolenaar  " Establish the connection with the netbeans server
52173d841eSBram Moolenaar  exe 'nbstart :localhost:' .. a:port .. ':bunny'
53321efdd7SBram Moolenaar  call assert_true(has("netbeans_enabled"))
5495650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) > (g:last + 2)')
5595650159SBram Moolenaar  let l = ReadXnetbeans()
56173d841eSBram Moolenaar  call assert_equal(['AUTH bunny',
57173d841eSBram Moolenaar        \ '0:version=0 "2.5"',
58173d841eSBram Moolenaar        \ '0:startupDone=0'], l[-3:])
59173d841eSBram Moolenaar  let g:last += 3
60321efdd7SBram Moolenaar
61173d841eSBram Moolenaar  " Trying to connect again to netbeans server should fail
62173d841eSBram Moolenaar  call assert_fails("exe 'nbstart :localhost:' . a:port . ':bunny'", 'E511:')
63321efdd7SBram Moolenaar
64173d841eSBram Moolenaar  " Open the command buffer to communicate with the server
65173d841eSBram Moolenaar  split Xcmdbuf
66173d841eSBram Moolenaar  let cmdbufnr = bufnr()
6795650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) > (g:last + 2)')
6895650159SBram Moolenaar  let l = ReadXnetbeans()
69173d841eSBram Moolenaar  call assert_equal('0:fileOpened=0 "Xcmdbuf" T F',
70173d841eSBram Moolenaar        \ substitute(l[-3], '".*/', '"', ''))
71173d841eSBram Moolenaar  call assert_equal('send: 1:putBufferNumber!15 "Xcmdbuf"',
72173d841eSBram Moolenaar        \ substitute(l[-2], '".*/', '"', ''))
73173d841eSBram Moolenaar  call assert_equal('1:startDocumentListen!16', l[-1])
74173d841eSBram Moolenaar  let g:last += 3
75321efdd7SBram Moolenaar
76173d841eSBram Moolenaar  " Keep the command buffer loaded for communication
77173d841eSBram Moolenaar  hide
78173d841eSBram Moolenaar
79173d841eSBram Moolenaar  sleep 1m
80173d841eSBram Moolenaar
81173d841eSBram Moolenaar  " getCursor test
82173d841eSBram Moolenaar  call writefile(['foo bar', 'foo bar', 'foo bar'], 'Xfile1')
83173d841eSBram Moolenaar  split Xfile1
84173d841eSBram Moolenaar  call cursor(3, 4)
85173d841eSBram Moolenaar  sleep 10m
86173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'getCursor_Test')
8795650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 5)')
8895650159SBram Moolenaar  let l = ReadXnetbeans()
89173d841eSBram Moolenaar  call assert_equal(['send: 0:getCursor/30', '30 -1 3 3 19'], l[-2:])
90173d841eSBram Moolenaar  let g:last += 5
91173d841eSBram Moolenaar
92173d841eSBram Moolenaar  " Test for E627
93173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E627_Test')
94173d841eSBram Moolenaar  call WaitForError('E627:')
9595650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
9695650159SBram Moolenaar  let l = ReadXnetbeans()
97173d841eSBram Moolenaar  call assert_equal('send: 0 setReadOnly!31', l[-1])
98173d841eSBram Moolenaar  let g:last += 3
99173d841eSBram Moolenaar
100173d841eSBram Moolenaar  " Test for E628
101173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E628_Test')
102173d841eSBram Moolenaar  call WaitForError('E628:')
10395650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
10495650159SBram Moolenaar  let l = ReadXnetbeans()
105173d841eSBram Moolenaar  call assert_equal('send: 0:setReadOnly 32', l[-1])
106173d841eSBram Moolenaar  let g:last += 3
107173d841eSBram Moolenaar
108173d841eSBram Moolenaar  " Test for E632
109173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E632_Test')
110173d841eSBram Moolenaar  call WaitForError('E632:')
11195650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
11295650159SBram Moolenaar  let l = ReadXnetbeans()
113173d841eSBram Moolenaar  call assert_equal(['send: 0:getLength/33', '33 0'], l[-2:])
114173d841eSBram Moolenaar  let g:last += 4
115173d841eSBram Moolenaar
116173d841eSBram Moolenaar  " Test for E633
117173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E633_Test')
118173d841eSBram Moolenaar  call WaitForError('E633:')
11995650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
12095650159SBram Moolenaar  let l = ReadXnetbeans()
121173d841eSBram Moolenaar  call assert_equal(['send: 0:getText/34', '34 '], l[-2:])
122173d841eSBram Moolenaar  let g:last += 4
123173d841eSBram Moolenaar
124173d841eSBram Moolenaar  " Test for E634
125173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E634_Test')
126173d841eSBram Moolenaar  call WaitForError('E634:')
12795650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
12895650159SBram Moolenaar  let l = ReadXnetbeans()
129173d841eSBram Moolenaar  call assert_equal(['send: 0:remove/35 1 1', '35'], l[-2:])
130173d841eSBram Moolenaar  let g:last += 4
131173d841eSBram Moolenaar
132173d841eSBram Moolenaar  " Test for E635
133173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E635_Test')
134173d841eSBram Moolenaar  call WaitForError('E635:')
13595650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
13695650159SBram Moolenaar  let l = ReadXnetbeans()
137173d841eSBram Moolenaar  call assert_equal(['send: 0:insert/36 0 "line1\n"', '36'], l[-2:])
138173d841eSBram Moolenaar  let g:last += 4
139173d841eSBram Moolenaar
140173d841eSBram Moolenaar  " Test for E636
141173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E636_Test')
142173d841eSBram Moolenaar  call WaitForError('E636:')
14395650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
14495650159SBram Moolenaar  let l = ReadXnetbeans()
145173d841eSBram Moolenaar  call assert_equal('send: 0:create!37', l[-1])
146173d841eSBram Moolenaar  let g:last += 3
147173d841eSBram Moolenaar
148173d841eSBram Moolenaar  " Test for E637
149173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E637_Test')
150173d841eSBram Moolenaar  call WaitForError('E637:')
15195650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
15295650159SBram Moolenaar  let l = ReadXnetbeans()
153173d841eSBram Moolenaar  call assert_equal('send: 0:startDocumentListen!38', l[-1])
154173d841eSBram Moolenaar  let g:last += 3
155173d841eSBram Moolenaar
156173d841eSBram Moolenaar  " Test for E638
157173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E638_Test')
158173d841eSBram Moolenaar  call WaitForError('E638:')
15995650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
16095650159SBram Moolenaar  let l = ReadXnetbeans()
161173d841eSBram Moolenaar  call assert_equal('send: 0:stopDocumentListen!39', l[-1])
162173d841eSBram Moolenaar  let g:last += 3
163173d841eSBram Moolenaar
164173d841eSBram Moolenaar  " Test for E639
165173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E639_Test')
166173d841eSBram Moolenaar  call WaitForError('E639:')
16795650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
16895650159SBram Moolenaar  let l = ReadXnetbeans()
169173d841eSBram Moolenaar  call assert_equal('send: 0:setTitle!40 "Title"', l[-1])
170173d841eSBram Moolenaar  let g:last += 3
171173d841eSBram Moolenaar
172173d841eSBram Moolenaar  " Test for E640
173173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E640_Test')
174173d841eSBram Moolenaar  call WaitForError('E640:')
17595650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
17695650159SBram Moolenaar  let l = ReadXnetbeans()
177173d841eSBram Moolenaar  call assert_equal('send: 0:initDone!41', l[-1])
178173d841eSBram Moolenaar  let g:last += 3
179173d841eSBram Moolenaar
180173d841eSBram Moolenaar  " Test for E641
181173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E641_Test')
182173d841eSBram Moolenaar  call WaitForError('E641:')
18395650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
18495650159SBram Moolenaar  let l = ReadXnetbeans()
185173d841eSBram Moolenaar  call assert_equal('send: 0:putBufferNumber!42 "XSomeBuf"', l[-1])
186173d841eSBram Moolenaar  let g:last += 3
187173d841eSBram Moolenaar
188173d841eSBram Moolenaar  " Test for E642
189173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E642_Test')
190173d841eSBram Moolenaar  call WaitForError('E642:')
19195650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
19295650159SBram Moolenaar  let l = ReadXnetbeans()
193173d841eSBram Moolenaar  call assert_equal('send: 9:putBufferNumber!43 "XInvalidBuf"', l[-1])
194173d841eSBram Moolenaar  let g:last += 3
195173d841eSBram Moolenaar
196173d841eSBram Moolenaar  " Test for E643
197173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E643_Test')
198173d841eSBram Moolenaar  call WaitForError('E643:')
19995650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
20095650159SBram Moolenaar  let l = ReadXnetbeans()
201173d841eSBram Moolenaar  call assert_equal('send: 0:setFullName!44 "XSomeBuf"', l[-1])
202173d841eSBram Moolenaar  let g:last += 3
203173d841eSBram Moolenaar
204173d841eSBram Moolenaar  enew!
205173d841eSBram Moolenaar
206173d841eSBram Moolenaar  " Test for E644
207173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E644_Test')
208173d841eSBram Moolenaar  call WaitForError('E644:')
20995650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
21095650159SBram Moolenaar  let l = ReadXnetbeans()
211173d841eSBram Moolenaar  call assert_equal('send: 0:editFile!45 "Xfile3"', l[-1])
212173d841eSBram Moolenaar  let g:last += 3
213173d841eSBram Moolenaar
214173d841eSBram Moolenaar  " Test for E645 (shown only when verbose > 0)
215173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E645_Test')
216173d841eSBram Moolenaar  set verbose=1
217173d841eSBram Moolenaar  call WaitForError('E645:')
218173d841eSBram Moolenaar  set verbose&
21995650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
22095650159SBram Moolenaar  let l = ReadXnetbeans()
221173d841eSBram Moolenaar  call assert_equal('send: 0:setVisible!46 T', l[-1])
222173d841eSBram Moolenaar  let g:last += 3
223173d841eSBram Moolenaar
224173d841eSBram Moolenaar  " Test for E646 (shown only when verbose > 0)
225173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E646_Test')
226173d841eSBram Moolenaar  set verbose=1
227173d841eSBram Moolenaar  call WaitForError('E646:')
228173d841eSBram Moolenaar  set verbose&
22995650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
23095650159SBram Moolenaar  let l = ReadXnetbeans()
231173d841eSBram Moolenaar  call assert_equal('send: 0:setModified!47 T', l[-1])
232173d841eSBram Moolenaar  let g:last += 3
233173d841eSBram Moolenaar
234173d841eSBram Moolenaar  " Test for E647
235173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E647_Test')
236173d841eSBram Moolenaar  call WaitForError('E647:')
23795650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
23895650159SBram Moolenaar  let l = ReadXnetbeans()
239173d841eSBram Moolenaar  call assert_equal('send: 0:setDot!48 1/1', l[-1])
240173d841eSBram Moolenaar  let g:last += 3
241173d841eSBram Moolenaar
242173d841eSBram Moolenaar  " Test for E648
243173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E648_Test')
244173d841eSBram Moolenaar  call WaitForError('E648:')
24595650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
24695650159SBram Moolenaar  let l = ReadXnetbeans()
247173d841eSBram Moolenaar  call assert_equal('send: 0:close!49', l[-1])
248173d841eSBram Moolenaar  let g:last += 3
249173d841eSBram Moolenaar
250173d841eSBram Moolenaar  " Test for E650
251173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E650_Test')
252173d841eSBram Moolenaar  call WaitForError('E650:')
25395650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
25495650159SBram Moolenaar  let l = ReadXnetbeans()
255173d841eSBram Moolenaar  call assert_equal('send: 0:defineAnnoType!50 1 "abc" "a" "a" 1 1', l[-1])
256173d841eSBram Moolenaar  let g:last += 3
257173d841eSBram Moolenaar
258173d841eSBram Moolenaar  " Test for E651
259173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E651_Test')
260173d841eSBram Moolenaar  call WaitForError('E651:')
26195650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
26295650159SBram Moolenaar  let l = ReadXnetbeans()
263173d841eSBram Moolenaar  call assert_equal('send: 0:addAnno!51 1 1 1 1', l[-1])
264173d841eSBram Moolenaar  let g:last += 3
265173d841eSBram Moolenaar
266173d841eSBram Moolenaar  " Test for E652
267173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E652_Test')
268173d841eSBram Moolenaar  call WaitForError('E652:')
26995650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
27095650159SBram Moolenaar  let l = ReadXnetbeans()
271173d841eSBram Moolenaar  call assert_equal(['send: 0:getAnno/52 8', '52 0'], l[-2:])
272173d841eSBram Moolenaar  let g:last += 4
273173d841eSBram Moolenaar
274173d841eSBram Moolenaar  " editFile test
275173d841eSBram Moolenaar  call writefile(['foo bar1', 'foo bar2', 'foo bar3'], 'Xfile3')
276173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'editFile_Test')
27795650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
27895650159SBram Moolenaar  let l = ReadXnetbeans()
279173d841eSBram Moolenaar  call assert_equal('send: 2:editFile!53 "Xfile3"', l[-2])
280173d841eSBram Moolenaar  call assert_match('0:fileOpened=0 ".*/Xfile3" T F', l[-1])
281173d841eSBram Moolenaar  call assert_equal('Xfile3', bufname())
282173d841eSBram Moolenaar  let g:last += 4
283173d841eSBram Moolenaar
284173d841eSBram Moolenaar  " getLength test
285173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'getLength_Test')
28695650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
28795650159SBram Moolenaar  let l = ReadXnetbeans()
288173d841eSBram Moolenaar  call assert_equal(['send: 2:getLength/54', '54 27'], l[-2:])
289173d841eSBram Moolenaar  let g:last += 4
290173d841eSBram Moolenaar
291173d841eSBram Moolenaar  " getModified test
292173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'getModified_Test')
29395650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
29495650159SBram Moolenaar  let l = ReadXnetbeans()
295173d841eSBram Moolenaar  call assert_equal(['send: 2:getModified/55', '55 0'], l[-2:])
296173d841eSBram Moolenaar  let g:last += 4
297173d841eSBram Moolenaar
298173d841eSBram Moolenaar  " getText test
299173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'getText_Test')
30095650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
30195650159SBram Moolenaar  let l = ReadXnetbeans()
302173d841eSBram Moolenaar  call assert_equal(['send: 2:getText/56',
303173d841eSBram Moolenaar        \ '56 "foo bar1\nfoo bar2\nfoo bar3\n"'], l[-2:])
304173d841eSBram Moolenaar  let g:last += 4
305173d841eSBram Moolenaar
306dbfa795dSBram Moolenaar  " setDot test with lnum/col
307dbfa795dSBram Moolenaar  call cursor(1, 1)
308173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'setDot_Test')
30995650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
31095650159SBram Moolenaar  let l = ReadXnetbeans()
311173d841eSBram Moolenaar  call assert_equal('send: 2:setDot!57 3/6', l[-1])
3126fd3a4baSBram Moolenaar  sleep 10m
313dbfa795dSBram Moolenaar  call assert_equal([0, 3, 7, 0], getpos('.'))
314dbfa795dSBram Moolenaar  let g:last += 3
315dbfa795dSBram Moolenaar
316dbfa795dSBram Moolenaar  " setDot test with an offset
317dbfa795dSBram Moolenaar  call cursor(1, 1)
318dbfa795dSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'setDot2_Test')
319dbfa795dSBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
320dbfa795dSBram Moolenaar  let l = ReadXnetbeans()
321dbfa795dSBram Moolenaar  call assert_equal('send: 2:setDot!57 9', l[-1])
3226fd3a4baSBram Moolenaar  sleep 10m
323dbfa795dSBram Moolenaar  call assert_equal([0, 2, 1, 0], getpos('.'))
324173d841eSBram Moolenaar  let g:last += 3
325173d841eSBram Moolenaar
326173d841eSBram Moolenaar  " startDocumentListen test
327173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'startDocumentListen_Test')
32895650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
32995650159SBram Moolenaar  let l = ReadXnetbeans()
330173d841eSBram Moolenaar  call assert_equal('send: 2:startDocumentListen!58', l[-1])
331173d841eSBram Moolenaar  let g:last += 3
332173d841eSBram Moolenaar
333173d841eSBram Moolenaar  " make some changes to the buffer and check whether the netbeans server
334173d841eSBram Moolenaar  " received the notifications
335173d841eSBram Moolenaar  call append(2, 'blue sky')
336173d841eSBram Moolenaar  1d
33795650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
33895650159SBram Moolenaar  let l = ReadXnetbeans()
339173d841eSBram Moolenaar  call assert_match('2:insert=\d\+ 18 "blue sky"', l[-3])
340173d841eSBram Moolenaar  call assert_match('2:insert=\d\+ 26 "\\n"', l[-2])
341173d841eSBram Moolenaar  call assert_match('2:remove=\d\+ 0 9', l[-1])
342173d841eSBram Moolenaar  let g:last += 3
343173d841eSBram Moolenaar
344dbfa795dSBram Moolenaar  " Change case using the ~ command with 'whichwrap' containing '~'
345dbfa795dSBram Moolenaar  set whichwrap+=~
346dbfa795dSBram Moolenaar  normal 2G$~
347dbfa795dSBram Moolenaar  set whichwrap&
348dbfa795dSBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 2)')
349dbfa795dSBram Moolenaar  let l = ReadXnetbeans()
350dbfa795dSBram Moolenaar  call assert_match('2:remove=\d\+ 16 1', l[-4])
351dbfa795dSBram Moolenaar  call assert_match('2:insert=\d\+ 16 "Y"', l[-3])
352dbfa795dSBram Moolenaar  call assert_match('2:remove=\d\+ 18 0', l[-2])
353dbfa795dSBram Moolenaar  call assert_match('2:insert=\d\+ 18 ""', l[-1])
354dbfa795dSBram Moolenaar  let g:last += 4
355dbfa795dSBram Moolenaar
356dbfa795dSBram Moolenaar  " Test for replacing spaces with a tab character using 'softtabstop' and
357dbfa795dSBram Moolenaar  " 'noexpandtab'
358dbfa795dSBram Moolenaar  setlocal softtabstop=4
359dbfa795dSBram Moolenaar  setlocal noexpandtab
360dbfa795dSBram Moolenaar  exe "normal I\<Tab>\<Tab>"
361dbfa795dSBram Moolenaar  setlocal expandtab&
362dbfa795dSBram Moolenaar  setlocal softtabstop&
363dbfa795dSBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 18)')
364dbfa795dSBram Moolenaar  let l = ReadXnetbeans()
365dbfa795dSBram Moolenaar  call assert_match('2:insert=\d\+ 18 "        foo bar3"', l[-3])
366dbfa795dSBram Moolenaar  call assert_match('2:remove=\d\+ 26 8', l[-2])
367dbfa795dSBram Moolenaar  call assert_match('2:insert=\d\+ 26 "\t"', l[-1])
368dbfa795dSBram Moolenaar  let g:last += 18
369dbfa795dSBram Moolenaar
370*2ac7184dSYegappan Lakshmanan  " Test for changing case of multiple lines using ~
371*2ac7184dSYegappan Lakshmanan  normal ggVG~
372*2ac7184dSYegappan Lakshmanan  call WaitFor('len(ReadXnetbeans()) >= (g:last + 6)')
373*2ac7184dSYegappan Lakshmanan  let l = ReadXnetbeans()
374*2ac7184dSYegappan Lakshmanan  call assert_match('2:remove=\d\+ 0 8', l[-6])
375*2ac7184dSYegappan Lakshmanan  call assert_match('2:insert=\d\+ 0 "FOO BAR2"', l[-5])
376*2ac7184dSYegappan Lakshmanan  call assert_match('2:remove=\d\+ 9 8', l[-4])
377*2ac7184dSYegappan Lakshmanan  call assert_match('2:insert=\d\+ 9 "BLUE SKy"', l[-3])
378*2ac7184dSYegappan Lakshmanan  call assert_match('2:remove=\d\+ 18 9', l[-2])
379*2ac7184dSYegappan Lakshmanan  call assert_match('2:insert=\d\+ 18 "\tFOO BAR3"', l[-1])
380*2ac7184dSYegappan Lakshmanan  let g:last += 6
381*2ac7184dSYegappan Lakshmanan
382*2ac7184dSYegappan Lakshmanan  " Test for changing case of a visual block using ~
383*2ac7184dSYegappan Lakshmanan  exe "normal ggw\<C-V>$~"
384*2ac7184dSYegappan Lakshmanan  call WaitFor('len(ReadXnetbeans()) >= (g:last + 2)')
385*2ac7184dSYegappan Lakshmanan  let l = ReadXnetbeans()
386*2ac7184dSYegappan Lakshmanan  call assert_match('2:remove=\d\+ 4 4', l[-2])
387*2ac7184dSYegappan Lakshmanan  call assert_match('2:insert=\d\+ 4 "bar2"', l[-1])
388*2ac7184dSYegappan Lakshmanan  let g:last += 2
389*2ac7184dSYegappan Lakshmanan
390*2ac7184dSYegappan Lakshmanan  " Increment a number using <C-A> in visual mode
391*2ac7184dSYegappan Lakshmanan  exe "normal! gg$v6\<C-A>"
392*2ac7184dSYegappan Lakshmanan  call WaitFor('len(ReadXnetbeans()) >= (g:last + 6)')
393*2ac7184dSYegappan Lakshmanan  let l = ReadXnetbeans()
394*2ac7184dSYegappan Lakshmanan  call assert_match('2:remove=\d\+ 0 9', l[-4])
395*2ac7184dSYegappan Lakshmanan  call assert_match('2:insert=\d\+ 0 "FOO bar8"', l[-3])
396*2ac7184dSYegappan Lakshmanan  call assert_match('2:remove=\d\+ 7 1', l[-2])
397*2ac7184dSYegappan Lakshmanan  call assert_match('2:insert=\d\+ 7 "8"', l[-1])
398*2ac7184dSYegappan Lakshmanan  let g:last += 6
399*2ac7184dSYegappan Lakshmanan
400*2ac7184dSYegappan Lakshmanan  " Decrement a number using <C-X> in visual mode
401*2ac7184dSYegappan Lakshmanan  exe "normal! gg$v3\<C-X>"
402*2ac7184dSYegappan Lakshmanan  call WaitFor('len(ReadXnetbeans()) >= (g:last + 6)')
403*2ac7184dSYegappan Lakshmanan  let l = ReadXnetbeans()
404*2ac7184dSYegappan Lakshmanan  call assert_match('2:remove=\d\+ 0 9', l[-4])
405*2ac7184dSYegappan Lakshmanan  call assert_match('2:insert=\d\+ 0 "FOO bar5"', l[-3])
406*2ac7184dSYegappan Lakshmanan  call assert_match('2:remove=\d\+ 7 1', l[-2])
407*2ac7184dSYegappan Lakshmanan  call assert_match('2:insert=\d\+ 7 "5"', l[-1])
408*2ac7184dSYegappan Lakshmanan  let g:last += 6
409*2ac7184dSYegappan Lakshmanan
410173d841eSBram Moolenaar  " stopDocumentListen test
411173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'stopDocumentListen_Test')
41295650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
41395650159SBram Moolenaar  let l = ReadXnetbeans()
414173d841eSBram Moolenaar  call assert_equal('send: 2:stopDocumentListen!59', l[-1])
415173d841eSBram Moolenaar  let g:last += 3
416173d841eSBram Moolenaar
417173d841eSBram Moolenaar  " Wait for vim to process the previous netbeans message
418173d841eSBram Moolenaar  sleep 1m
419173d841eSBram Moolenaar
420173d841eSBram Moolenaar  " modify the buffer and make sure that the netbeans server is not notified
421173d841eSBram Moolenaar  call append(2, 'clear sky')
422173d841eSBram Moolenaar  1d
423173d841eSBram Moolenaar
424173d841eSBram Moolenaar  " defineAnnoType test
425173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'define_anno_Test')
42695650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
42795650159SBram Moolenaar  let l = ReadXnetbeans()
428173d841eSBram Moolenaar  call assert_equal('send: 2:defineAnnoType!60 1 "s1" "x" "=>" blue none', l[-1])
429173d841eSBram Moolenaar  sleep 1m
43037d1b4f9SBram Moolenaar  call assert_equal({'name': '1', 'texthl': 'NB_s1', 'text': '=>'},
43132e5ec0bSBram Moolenaar        \ sign_getdefined()->get(0, {}))
432173d841eSBram Moolenaar  let g:last += 3
433173d841eSBram Moolenaar
434173d841eSBram Moolenaar  " defineAnnoType with a long color name
435173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'E532_Test')
436173d841eSBram Moolenaar  call WaitForError('E532:')
43795650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
43895650159SBram Moolenaar  let l = ReadXnetbeans()
439173d841eSBram Moolenaar  call assert_equal('send: 2:defineAnnoType!61 1 "s1" "x" "=>" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa none', l[-1])
440173d841eSBram Moolenaar  let g:last += 3
441173d841eSBram Moolenaar
442173d841eSBram Moolenaar  " addAnno test
443173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'add_anno_Test')
44495650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
44595650159SBram Moolenaar  let l = ReadXnetbeans()
446173d841eSBram Moolenaar  call assert_equal('send: 2:addAnno!62 1 1 2/1 0', l[-1])
447173d841eSBram Moolenaar  sleep 1m
448173d841eSBram Moolenaar  call assert_equal([{'lnum': 2, 'id': 1, 'name': '1', 'priority': 10,
449173d841eSBram Moolenaar        \ 'group': ''}], sign_getplaced()[0].signs)
450173d841eSBram Moolenaar  let g:last += 3
451173d841eSBram Moolenaar
452173d841eSBram Moolenaar  " getAnno test
453173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'get_anno_Test')
45495650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
45595650159SBram Moolenaar  let l = ReadXnetbeans()
456173d841eSBram Moolenaar  call assert_equal(['send: 2:getAnno/63 1', '63 2'], l[-2:])
457173d841eSBram Moolenaar  let g:last += 4
458173d841eSBram Moolenaar
459173d841eSBram Moolenaar  " removeAnno test
460173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'remove_anno_Test')
46195650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
46295650159SBram Moolenaar  let l = ReadXnetbeans()
463173d841eSBram Moolenaar  call assert_equal('send: 2:removeAnno!64 1', l[-1])
464173d841eSBram Moolenaar  sleep 1m
465173d841eSBram Moolenaar  call assert_equal([], sign_getplaced())
466173d841eSBram Moolenaar  let g:last += 3
467173d841eSBram Moolenaar
468173d841eSBram Moolenaar  " getModified test to get the number of modified buffers
469173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'getModifiedAll_Test')
47095650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
47195650159SBram Moolenaar  let l = ReadXnetbeans()
472173d841eSBram Moolenaar  call assert_equal(['send: 0:getModified/65', '65 2'], l[-2:])
473173d841eSBram Moolenaar  let g:last += 4
474173d841eSBram Moolenaar
475173d841eSBram Moolenaar  let bufcount = len(getbufinfo())
476173d841eSBram Moolenaar
477173d841eSBram Moolenaar  " create test to create a new buffer
478173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'create_Test')
47995650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
48095650159SBram Moolenaar  let l = ReadXnetbeans()
481173d841eSBram Moolenaar  call assert_equal('send: 3:create!66', l[-1])
482173d841eSBram Moolenaar  " Wait for vim to process the previous netbeans message
483173d841eSBram Moolenaar  sleep 10m
484173d841eSBram Moolenaar  call assert_equal(bufcount + 1, len(getbufinfo()))
485173d841eSBram Moolenaar  let g:last += 3
486173d841eSBram Moolenaar
487173d841eSBram Moolenaar  " setTitle test
488173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'setTitle_Test')
48995650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
49095650159SBram Moolenaar  let l = ReadXnetbeans()
491173d841eSBram Moolenaar  call assert_equal('send: 3:setTitle!67 "Xfile4"', l[-1])
492173d841eSBram Moolenaar  let g:last += 3
493173d841eSBram Moolenaar
494173d841eSBram Moolenaar  " setFullName test
495173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'setFullName_Test')
49695650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 5)')
49795650159SBram Moolenaar  let l = ReadXnetbeans()
498173d841eSBram Moolenaar  call assert_equal('send: 3:setFullName!68 "Xfile4"', l[-3])
499173d841eSBram Moolenaar  call assert_match('0:fileOpened=0 ".*/Xfile4" T F', l[-1])
500173d841eSBram Moolenaar  call assert_equal('Xfile4', bufname())
501173d841eSBram Moolenaar  let g:last += 5
502173d841eSBram Moolenaar
503173d841eSBram Moolenaar  " initDone test
504173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'initDone_Test')
50595650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
50695650159SBram Moolenaar  let l = ReadXnetbeans()
507173d841eSBram Moolenaar  call assert_equal('send: 3:initDone!69', l[-1])
508173d841eSBram Moolenaar  let g:last += 3
509173d841eSBram Moolenaar
510173d841eSBram Moolenaar  " setVisible test
511173d841eSBram Moolenaar  hide enew
512173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'setVisible_Test')
51395650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
51495650159SBram Moolenaar  let l = ReadXnetbeans()
515173d841eSBram Moolenaar  call assert_equal('send: 3:setVisible!70 T', l[-1])
516173d841eSBram Moolenaar  let g:last += 3
517173d841eSBram Moolenaar
518173d841eSBram Moolenaar  " setModtime test
519173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'setModtime_Test')
52095650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
52195650159SBram Moolenaar  let l = ReadXnetbeans()
522173d841eSBram Moolenaar  call assert_equal('send: 3:setModtime!71 6', l[-1])
523173d841eSBram Moolenaar  let g:last += 3
524173d841eSBram Moolenaar
525173d841eSBram Moolenaar  " insert test
526173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'insert_Test')
52795650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
52895650159SBram Moolenaar  let l = ReadXnetbeans()
529173d841eSBram Moolenaar  call assert_equal(['send: 3:insert/72 0 "line1\nline2\n"', '72'], l[-2:])
530173d841eSBram Moolenaar  call assert_equal(['line1', 'line2'], getline(1, '$'))
531173d841eSBram Moolenaar  let g:last += 4
532173d841eSBram Moolenaar
533173d841eSBram Moolenaar  " remove test
534173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'remove_Test')
53595650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
53695650159SBram Moolenaar  let l = ReadXnetbeans()
537173d841eSBram Moolenaar  call assert_equal(['send: 3:remove/73 3 4', '73'], l[-2:])
538173d841eSBram Moolenaar  call assert_equal(['linine2'], getline(1, '$'))
539173d841eSBram Moolenaar  let g:last += 4
540173d841eSBram Moolenaar
541173d841eSBram Moolenaar  " remove with invalid offset
542173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'remove_invalid_offset_Test')
54395650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
54495650159SBram Moolenaar  let l = ReadXnetbeans()
545173d841eSBram Moolenaar  call assert_equal(['send: 3:remove/74 900 4', '74 !bad position'], l[-2:])
546173d841eSBram Moolenaar  let g:last += 4
547173d841eSBram Moolenaar
548173d841eSBram Moolenaar  " remove with invalid count
549173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'remove_invalid_count_Test')
55095650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
55195650159SBram Moolenaar  let l = ReadXnetbeans()
552173d841eSBram Moolenaar  call assert_equal(['send: 3:remove/75 1 800', '75 !bad count'], l[-2:])
553173d841eSBram Moolenaar  let g:last += 4
554173d841eSBram Moolenaar
555173d841eSBram Moolenaar  " guard test
556173d841eSBram Moolenaar  %d
557173d841eSBram Moolenaar  call setline(1, ['foo bar', 'foo bar', 'foo bar'])
55895650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 8)')
559173d841eSBram Moolenaar  let g:last += 8
560173d841eSBram Moolenaar
561173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'guard_Test')
56295650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
56395650159SBram Moolenaar  let l = ReadXnetbeans()
564173d841eSBram Moolenaar  call assert_equal('send: 3:guard!76 8 7', l[-1])
565173d841eSBram Moolenaar  sleep 1m
566173d841eSBram Moolenaar  " second line is guarded. Try modifying the line
567173d841eSBram Moolenaar  call assert_fails('normal 2GIbaz', 'E463:')
568173d841eSBram Moolenaar  call assert_fails('normal 2GAbaz', 'E463:')
569173d841eSBram Moolenaar  call assert_fails('normal dd', 'E463:')
570173d841eSBram Moolenaar  call assert_equal([{'name': '1', 'texthl': 'NB_s1', 'text': '=>'},
571173d841eSBram Moolenaar        \ {'name': '10000', 'linehl': 'NBGuarded'}],
572173d841eSBram Moolenaar        \ sign_getdefined())
573dbfa795dSBram Moolenaar  let s = sign_getplaced()[0].signs[0]
574dbfa795dSBram Moolenaar  call assert_equal(2, s.lnum)
575dbfa795dSBram Moolenaar  call assert_equal('10000', s.name)
576173d841eSBram Moolenaar  let g:last += 3
577173d841eSBram Moolenaar
578173d841eSBram Moolenaar  " setModified test
579173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'setModified_Test')
58095650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
58195650159SBram Moolenaar  let l = ReadXnetbeans()
582173d841eSBram Moolenaar  call assert_equal('send: 3:setModified!77 T', l[-1])
583dbfa795dSBram Moolenaar  sleep 1m
584173d841eSBram Moolenaar  call assert_equal(1, &modified)
585173d841eSBram Moolenaar  let g:last += 3
586173d841eSBram Moolenaar
587dbfa795dSBram Moolenaar  " clear setModified test
588dbfa795dSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'setModifiedClear_Test')
589dbfa795dSBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
590dbfa795dSBram Moolenaar  let l = ReadXnetbeans()
591dbfa795dSBram Moolenaar  call assert_equal('send: 3:setModified!77 F', l[-1])
592dbfa795dSBram Moolenaar  sleep 1m
593dbfa795dSBram Moolenaar  call assert_equal(0, &modified)
594dbfa795dSBram Moolenaar  let g:last += 3
595dbfa795dSBram Moolenaar
596173d841eSBram Moolenaar  " insertDone test
597173d841eSBram Moolenaar  let v:statusmsg = ''
598173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'insertDone_Test')
59995650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
60095650159SBram Moolenaar  let l = ReadXnetbeans()
601173d841eSBram Moolenaar  call assert_equal('send: 3:insertDone!78 T F', l[-1])
602173d841eSBram Moolenaar  sleep 1m
6033f40ce78SBram Moolenaar  call assert_match('.*/Xfile4" 3L, 0B', v:statusmsg)
604173d841eSBram Moolenaar  let g:last += 3
605173d841eSBram Moolenaar
606173d841eSBram Moolenaar  " saveDone test
607173d841eSBram Moolenaar  let v:statusmsg = ''
608173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'saveDone_Test')
60995650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
61095650159SBram Moolenaar  let l = ReadXnetbeans()
611173d841eSBram Moolenaar  call assert_equal('send: 3:saveDone!79', l[-1])
612173d841eSBram Moolenaar  sleep 1m
6133f40ce78SBram Moolenaar  call assert_match('.*/Xfile4" 3L, 0B', v:statusmsg)
614173d841eSBram Moolenaar  let g:last += 3
615173d841eSBram Moolenaar
616173d841eSBram Moolenaar  " unimplemented command test
617173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'invalidcmd_Test')
61895650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
61995650159SBram Moolenaar  let l = ReadXnetbeans()
620173d841eSBram Moolenaar  call assert_equal('send: 3:invalidcmd!80', l[-1])
621173d841eSBram Moolenaar  let g:last += 3
622173d841eSBram Moolenaar
623173d841eSBram Moolenaar  " unimplemented function test
624173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'invalidfunc_Test')
62595650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
62695650159SBram Moolenaar  let l = ReadXnetbeans()
627173d841eSBram Moolenaar  call assert_equal(['send: 3:invalidfunc/81', '81'], l[-2:])
628173d841eSBram Moolenaar  let g:last += 4
629173d841eSBram Moolenaar
630173d841eSBram Moolenaar  " Test for removeAnno cmd failure
631173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'removeAnno_fail_Test')
63295650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
63395650159SBram Moolenaar  let l = ReadXnetbeans()
634173d841eSBram Moolenaar  call assert_equal(['send: 0:removeAnno/82 1', '82'], l[-2:])
635173d841eSBram Moolenaar  let g:last += 4
636173d841eSBram Moolenaar
637173d841eSBram Moolenaar  " Test for guard cmd failure
638173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'guard_fail_Test')
63995650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
64095650159SBram Moolenaar  let l = ReadXnetbeans()
641173d841eSBram Moolenaar  call assert_equal(['send: 0:guard/83 1 1', '83'], l[-2:])
642173d841eSBram Moolenaar  let g:last += 4
643173d841eSBram Moolenaar
644173d841eSBram Moolenaar  " Test for save cmd failure
645173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'save_fail_Test')
64695650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
64795650159SBram Moolenaar  let l = ReadXnetbeans()
648173d841eSBram Moolenaar  call assert_equal(['send: 0:save/84', '84'], l[-2:])
649173d841eSBram Moolenaar  let g:last += 4
650173d841eSBram Moolenaar
651173d841eSBram Moolenaar  " Test for netbeansBuffer cmd failure
652173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'netbeansBuffer_fail_Test')
65395650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
65495650159SBram Moolenaar  let l = ReadXnetbeans()
655173d841eSBram Moolenaar  call assert_equal(['send: 0:netbeansBuffer/85 T', '85'], l[-2:])
656173d841eSBram Moolenaar  let g:last += 4
657173d841eSBram Moolenaar
658173d841eSBram Moolenaar  " nbkey test
659173d841eSBram Moolenaar  call cursor(3, 3)
660173d841eSBram Moolenaar  nbkey "\<C-F2>"
66195650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
66295650159SBram Moolenaar  let l = ReadXnetbeans()
663173d841eSBram Moolenaar  call assert_equal(['3:newDotAndMark=85 18 18',
664173d841eSBram Moolenaar        \ '3:keyCommand=85 ""\<C-F2>""',
665173d841eSBram Moolenaar        \ '3:keyAtPos=85 ""\<C-F2>"" 18 3/2'], l[-3:])
666173d841eSBram Moolenaar  let g:last += 3
667173d841eSBram Moolenaar
668173d841eSBram Moolenaar  " setExitDelay test
669173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'setExitDelay_Test')
67095650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
67195650159SBram Moolenaar  let l = ReadXnetbeans()
672173d841eSBram Moolenaar  call assert_equal('send: 0:setExitDelay!86 2', l[-1])
673173d841eSBram Moolenaar  let g:last += 3
674173d841eSBram Moolenaar
675173d841eSBram Moolenaar  " setReadonly test
676173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'setReadOnly_Test')
67795650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
67895650159SBram Moolenaar  let l = ReadXnetbeans()
679dbfa795dSBram Moolenaar  call assert_equal('send: 3:setReadOnly!87 T', l[-1])
680dbfa795dSBram Moolenaar  sleep 1m
681dbfa795dSBram Moolenaar  call assert_equal(1, &readonly)
682dbfa795dSBram Moolenaar  let g:last += 3
683dbfa795dSBram Moolenaar
684dbfa795dSBram Moolenaar  " clear setReadonly test
685dbfa795dSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'setReadOnlyClear_Test')
686dbfa795dSBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
687dbfa795dSBram Moolenaar  let l = ReadXnetbeans()
688dbfa795dSBram Moolenaar  call assert_equal('send: 3:setReadOnly!88 F', l[-1])
689dbfa795dSBram Moolenaar  sleep 1m
690dbfa795dSBram Moolenaar  call assert_equal(0, &readonly)
691dbfa795dSBram Moolenaar  let g:last += 3
692dbfa795dSBram Moolenaar
693dbfa795dSBram Moolenaar  " save test
694dbfa795dSBram Moolenaar  call setbufvar(bufnr('Xfile4'), '&modified', 1)
695dbfa795dSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'save_Test')
696dbfa795dSBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
697dbfa795dSBram Moolenaar  let l = ReadXnetbeans()
698dbfa795dSBram Moolenaar  call assert_equal('send: 3:save!89', l[-1])
699dbfa795dSBram Moolenaar  sleep 1m
700dbfa795dSBram Moolenaar  call assert_true(filereadable('Xfile4'))
701173d841eSBram Moolenaar  let g:last += 3
702173d841eSBram Moolenaar
703173d841eSBram Moolenaar  " close test. Don't use buffer 10 after this
704173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'close_Test')
70595650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 4)')
70695650159SBram Moolenaar  let l = ReadXnetbeans()
707dbfa795dSBram Moolenaar  call assert_equal('send: 3:close!90', l[-2])
708dbfa795dSBram Moolenaar  call assert_equal('3:killed=90', l[-1])
709173d841eSBram Moolenaar  call assert_equal(1, winnr('$'))
710173d841eSBram Moolenaar  let g:last += 4
711173d841eSBram Moolenaar
712173d841eSBram Moolenaar  " specialKeys test
713173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'specialKeys_Test')
71495650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
71595650159SBram Moolenaar  let l = ReadXnetbeans()
716dbfa795dSBram Moolenaar  call assert_equal('send: 0:specialKeys!91 "F12 F13 C-F13"', l[-1])
717173d841eSBram Moolenaar  sleep 1m
718173d841eSBram Moolenaar  call assert_equal(':nbkey F12<CR>', maparg('<F12>', 'n'))
719173d841eSBram Moolenaar  call assert_equal(':nbkey F13<CR>', maparg('<F13>', 'n'))
720dbfa795dSBram Moolenaar  call assert_equal(':nbkey C-F13<CR>', maparg('<C-F13>', 'n'))
721173d841eSBram Moolenaar  let g:last += 3
722173d841eSBram Moolenaar
723173d841eSBram Moolenaar  " Open a buffer not monitored by netbeans
724173d841eSBram Moolenaar  enew | only!
725173d841eSBram Moolenaar  nbkey "\<C-F3>"
72695650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 1)')
72795650159SBram Moolenaar  let l = ReadXnetbeans()
728173d841eSBram Moolenaar  call assert_equal('0:fileOpened=0 "" T F', l[-1])
729173d841eSBram Moolenaar  let g:last += 1
730173d841eSBram Moolenaar
731494e9069SBram Moolenaar  " Test for writing a netbeans buffer
732494e9069SBram Moolenaar  call appendbufline(cmdbufnr, '$', 'nbbufwrite_Test')
73395650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 5)')
734494e9069SBram Moolenaar  call assert_fails('write', 'E656:')
735494e9069SBram Moolenaar  call setline(1, ['one', 'two'])
736494e9069SBram Moolenaar  call assert_fails('1write!', 'E657:')
737494e9069SBram Moolenaar  write
73895650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 10)')
739494e9069SBram Moolenaar  let g:last += 10
740494e9069SBram Moolenaar
741dbfa795dSBram Moolenaar  if has('mouse')
742dbfa795dSBram Moolenaar    " Test for mouse button release
743dbfa795dSBram Moolenaar    let save_mouse = &mouse
744dbfa795dSBram Moolenaar    set mouse=a
745dbfa795dSBram Moolenaar    call feedkeys("\<LeftMouse>\<LeftRelease>", 'xt')
746dbfa795dSBram Moolenaar    let &mouse = save_mouse
747dbfa795dSBram Moolenaar    call WaitFor('len(ReadXnetbeans()) >= (g:last + 2)')
748dbfa795dSBram Moolenaar    let l = ReadXnetbeans()
749dbfa795dSBram Moolenaar    call assert_equal('4:newDotAndMark=93 0 0', l[-2])
750dbfa795dSBram Moolenaar    call assert_equal('4:buttonRelease=93 0 1 -1', l[-1])
751dbfa795dSBram Moolenaar    let g:last += 2
752dbfa795dSBram Moolenaar  endif
753dbfa795dSBram Moolenaar
754dbfa795dSBram Moolenaar  " Test for startAtomic
755dbfa795dSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'startAtomic_Test')
756dbfa795dSBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
757dbfa795dSBram Moolenaar  let l = ReadXnetbeans()
758dbfa795dSBram Moolenaar  call assert_equal('send: 0:startAtomic!94', l[-1])
759dbfa795dSBram Moolenaar  let g:last += 3
760dbfa795dSBram Moolenaar
761dbfa795dSBram Moolenaar  " Test for endAtomic
762dbfa795dSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'endAtomic_Test')
763dbfa795dSBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
764dbfa795dSBram Moolenaar  let l = ReadXnetbeans()
765dbfa795dSBram Moolenaar  call assert_equal('send: 0:endAtomic!95', l[-1])
766dbfa795dSBram Moolenaar  let g:last += 3
767dbfa795dSBram Moolenaar
768dbfa795dSBram Moolenaar  " Test for invoking a netbeans key binding
769dbfa795dSBram Moolenaar  let special_keys = [
770dbfa795dSBram Moolenaar        \ ["\<F1>", 'F1'], ["\<S-F1>", 'S-F1'],
771dbfa795dSBram Moolenaar        \ ["\<F2>", 'F2'], ["\<S-F2>", 'S-F2'],
772dbfa795dSBram Moolenaar        \ ["\<F3>", 'F3'], ["\<S-F3>", 'S-F3'],
773dbfa795dSBram Moolenaar        \ ["\<F4>", 'F4'], ["\<S-F4>", 'S-F4'],
774dbfa795dSBram Moolenaar        \ ["\<F5>", 'F5'], ["\<S-F5>", 'S-F5'],
775dbfa795dSBram Moolenaar        \ ["\<F6>", 'F6'], ["\<S-F6>", 'S-F6'],
776dbfa795dSBram Moolenaar        \ ["\<F7>", 'F7'], ["\<S-F7>", 'S-F7'],
777dbfa795dSBram Moolenaar        \ ["\<F8>", 'F8'], ["\<S-F8>", 'S-F8'],
778dbfa795dSBram Moolenaar        \ ["\<F9>", 'F9'], ["\<S-F9>", 'S-F9'],
779dbfa795dSBram Moolenaar        \ ["\<F11>", 'F11'], ["\<S-F11>", 'S-F11'],
780dbfa795dSBram Moolenaar        \ ["\<F12>", 'F12'], ["\<S-F12>", 'S-F12'], ['!', '!']
781dbfa795dSBram Moolenaar        \ ]
782dbfa795dSBram Moolenaar  for [key, name] in special_keys
783dbfa795dSBram Moolenaar    call feedkeys("\<F21>" .. key, 'xt')
784dbfa795dSBram Moolenaar    call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
785dbfa795dSBram Moolenaar    let l = ReadXnetbeans()
786dbfa795dSBram Moolenaar    call assert_match('4:keyCommand=\d\+ "' .. name .. '"', l[-2])
787dbfa795dSBram Moolenaar    call assert_match('4:keyAtPos=\d\+ "' .. name .. '" 0 1/0', l[-1])
788dbfa795dSBram Moolenaar    let g:last += 3
789dbfa795dSBram Moolenaar  endfor
790dbfa795dSBram Moolenaar  call feedkeys("\<F21>\<C-S-M-F9>", 'xt')
791dbfa795dSBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
792dbfa795dSBram Moolenaar  let l = ReadXnetbeans()
793dbfa795dSBram Moolenaar  call assert_match('4:keyCommand=\d\+ "CSM-F9"', l[-2])
794dbfa795dSBram Moolenaar  call assert_match('4:keyAtPos=\d\+ "CSM-F9" 0 1/0', l[-1])
795dbfa795dSBram Moolenaar  let g:last += 3
796dbfa795dSBram Moolenaar
797dbfa795dSBram Moolenaar  if has('signs') && has('mouse')
798dbfa795dSBram Moolenaar    sign define S1 linehl=Search text==>
799dbfa795dSBram Moolenaar    sign define S2 linehl=ErrorMsg text=!!
800dbfa795dSBram Moolenaar    sign place 10 line=1 name=S1
801dbfa795dSBram Moolenaar    sign place 20 line=1 name=S2
802dbfa795dSBram Moolenaar
803dbfa795dSBram Moolenaar    let save_mouse = &mouse
804dbfa795dSBram Moolenaar    set mouse=a
805dbfa795dSBram Moolenaar    call assert_equal('S2', sign_getplaced()[0].signs[0].name)
806dbfa795dSBram Moolenaar    call test_setmouse(1, 1)
807dbfa795dSBram Moolenaar    call feedkeys("\<LeftMouse>\<LeftRelease>", 'xt')
808dbfa795dSBram Moolenaar    call assert_equal('S1', sign_getplaced()[0].signs[0].name)
809dbfa795dSBram Moolenaar    call test_setmouse(1, 1)
810dbfa795dSBram Moolenaar    call feedkeys("\<LeftMouse>\<LeftRelease>", 'xt')
811dbfa795dSBram Moolenaar    call assert_equal('S2', sign_getplaced()[0].signs[0].name)
812dbfa795dSBram Moolenaar    let &mouse = save_mouse
813dbfa795dSBram Moolenaar
814dbfa795dSBram Moolenaar    sign unplace 10
815dbfa795dSBram Moolenaar    sign unplace 20
816dbfa795dSBram Moolenaar    sign undefine S1
817dbfa795dSBram Moolenaar    sign undefine S2
818dbfa795dSBram Moolenaar  endif
819dbfa795dSBram Moolenaar
820dbfa795dSBram Moolenaar  " define a large number of annotations
821dbfa795dSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'AnnoScale_Test')
822dbfa795dSBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 26)')
823dbfa795dSBram Moolenaar  let l = ReadXnetbeans()
824dbfa795dSBram Moolenaar  call assert_equal('2:defineAnnoType!60 25 "s25" "x" "=>" blue none', l[-1])
825dbfa795dSBram Moolenaar  sleep 1m
826dbfa795dSBram Moolenaar  call assert_true(len(sign_getdefined()) >= 25)
827dbfa795dSBram Moolenaar  let g:last += 26
828dbfa795dSBram Moolenaar
829173d841eSBram Moolenaar  " detach
830173d841eSBram Moolenaar  call appendbufline(cmdbufnr, '$', 'detach_Test')
83195650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) >= (g:last + 8)')
832dbfa795dSBram Moolenaar  call WaitForAssert({-> assert_equal('0:disconnect=97', ReadXnetbeans()[-1])})
833173d841eSBram Moolenaar
83437d1b4f9SBram Moolenaar  " the connection was closed
8358ddef48dSBram Moolenaar  call assert_false(has("netbeans_enabled"))
836321efdd7SBram Moolenaar
837dbfa795dSBram Moolenaar  " Remove all the signs
838dbfa795dSBram Moolenaar  call sign_unplace('*')
839dbfa795dSBram Moolenaar  call sign_undefine()
840dbfa795dSBram Moolenaar
841321efdd7SBram Moolenaar  call delete("Xnetbeans")
842173d841eSBram Moolenaar  call delete('Xfile1')
843173d841eSBram Moolenaar  call delete('Xfile3')
844dbfa795dSBram Moolenaar  call delete('Xfile4')
845321efdd7SBram Moolenaarendfunc
846321efdd7SBram Moolenaar
847321efdd7SBram Moolenaarfunc Test_nb_basic()
848321efdd7SBram Moolenaar  call ch_log('Test_nb_basic')
849321efdd7SBram Moolenaar  call s:run_server('Nb_basic')
850321efdd7SBram Moolenaarendfunc
851603d6572SBram Moolenaar
852603d6572SBram Moolenaarfunc Nb_file_auth(port)
853c20e0d52SBram Moolenaar  call delete("Xnetbeans")
854c20e0d52SBram Moolenaar  call writefile([], "Xnetbeans")
855c20e0d52SBram Moolenaar
856603d6572SBram Moolenaar  call assert_fails('nbstart =notexist', 'E660:')
857603d6572SBram Moolenaar  call writefile(['host=localhost', 'port=' . a:port, 'auth=bunny'], 'Xnbauth')
85853bdec2aSBram Moolenaar  if has('unix')
859603d6572SBram Moolenaar    call setfperm('Xnbauth', "rw-r--r--")
860603d6572SBram Moolenaar    call assert_fails('nbstart =Xnbauth', 'E668:')
86153bdec2aSBram Moolenaar  endif
862603d6572SBram Moolenaar  call setfperm('Xnbauth', "rw-------")
863ffdf08c9SBram Moolenaar  exe 'nbstart =Xnbauth'
864603d6572SBram Moolenaar  call assert_true(has("netbeans_enabled"))
865603d6572SBram Moolenaar
86695650159SBram Moolenaar  call WaitFor('len(ReadXnetbeans()) > 2')
867603d6572SBram Moolenaar  nbclose
86895650159SBram Moolenaar  let lines = ReadXnetbeans()
869603d6572SBram Moolenaar  call assert_equal('AUTH bunny', lines[0])
870603d6572SBram Moolenaar  call assert_equal('0:version=0 "2.5"', lines[1])
871603d6572SBram Moolenaar  call assert_equal('0:startupDone=0', lines[2])
872603d6572SBram Moolenaar
873603d6572SBram Moolenaar  call delete("Xnbauth")
874603d6572SBram Moolenaar  call delete("Xnetbeans")
875603d6572SBram Moolenaarendfunc
876603d6572SBram Moolenaar
877603d6572SBram Moolenaarfunc Test_nb_file_auth()
878603d6572SBram Moolenaar  call ch_log('Test_nb_file_auth')
879603d6572SBram Moolenaar  call s:run_server('Nb_file_auth')
880603d6572SBram Moolenaarendfunc
881173d841eSBram Moolenaar
8828e7d6223SBram Moolenaar" Test for quitting Vim with an open netbeans connection
883173d841eSBram Moolenaarfunc Nb_quit_with_conn(port)
884173d841eSBram Moolenaar  call delete("Xnetbeans")
885173d841eSBram Moolenaar  call writefile([], "Xnetbeans")
886173d841eSBram Moolenaar  let after =<< trim END
887173d841eSBram Moolenaar    source shared.vim
88822286895SBram Moolenaar    set cpo&vim
889173d841eSBram Moolenaar
89095650159SBram Moolenaar    func ReadXnetbeans()
89195650159SBram Moolenaar      let l = readfile("Xnetbeans")
89295650159SBram Moolenaar      return filter(l, 'v:val !~ "^0:geometry="')
89395650159SBram Moolenaar    endfunc
89495650159SBram Moolenaar
895173d841eSBram Moolenaar    " Establish the connection with the netbeans server
896173d841eSBram Moolenaar    exe 'nbstart :localhost:' .. g:port .. ':star'
897173d841eSBram Moolenaar    call assert_true(has("netbeans_enabled"))
89895650159SBram Moolenaar    call WaitFor('len(ReadXnetbeans()) >= 3')
89995650159SBram Moolenaar    let l = ReadXnetbeans()
900173d841eSBram Moolenaar    call assert_equal(['AUTH star',
901173d841eSBram Moolenaar      \ '0:version=0 "2.5"',
902173d841eSBram Moolenaar      \ '0:startupDone=0'], l[-3:])
903173d841eSBram Moolenaar
904173d841eSBram Moolenaar    " Open the command buffer to communicate with the server
905173d841eSBram Moolenaar    split Xcmdbuf
90695650159SBram Moolenaar    call WaitFor('len(ReadXnetbeans()) >= 6')
90795650159SBram Moolenaar    let l = ReadXnetbeans()
908173d841eSBram Moolenaar    call assert_equal('0:fileOpened=0 "Xcmdbuf" T F',
909173d841eSBram Moolenaar          \ substitute(l[-3], '".*/', '"', ''))
910173d841eSBram Moolenaar    call assert_equal('send: 1:putBufferNumber!15 "Xcmdbuf"',
911173d841eSBram Moolenaar          \ substitute(l[-2], '".*/', '"', ''))
912173d841eSBram Moolenaar    call assert_equal('1:startDocumentListen!16', l[-1])
913173d841eSBram Moolenaar    sleep 1m
914173d841eSBram Moolenaar
915173d841eSBram Moolenaar    quit!
916173d841eSBram Moolenaar    quit!
917173d841eSBram Moolenaar  END
918173d841eSBram Moolenaar  if RunVim(['let g:port = ' .. a:port], after, '')
91995650159SBram Moolenaar    call WaitFor('len(ReadXnetbeans()) >= 9')
92095650159SBram Moolenaar    let l = ReadXnetbeans()
921173d841eSBram Moolenaar    call assert_equal('1:unmodified=16', l[-3])
922173d841eSBram Moolenaar    call assert_equal('1:killed=16', l[-2])
923173d841eSBram Moolenaar    call assert_equal('0:disconnect=16', l[-1])
924173d841eSBram Moolenaar  endif
925173d841eSBram Moolenaar  call delete('Xnetbeans')
926173d841eSBram Moolenaarendfunc
927173d841eSBram Moolenaar
928173d841eSBram Moolenaarfunc Test_nb_quit_with_conn()
929173d841eSBram Moolenaar  " Exiting Vim with a netbeans connection doesn't work properly on
930173d841eSBram Moolenaar  " MS-Windows.
931173d841eSBram Moolenaar  CheckUnix
932173d841eSBram Moolenaar  call s:run_server('Nb_quit_with_conn')
933173d841eSBram Moolenaarendfunc
934173d841eSBram Moolenaar
93532e5ec0bSBram Moolenaarfunc Nb_bwipe_buffer(port)
93632e5ec0bSBram Moolenaar  call delete("Xnetbeans")
93732e5ec0bSBram Moolenaar  call writefile([], "Xnetbeans")
93832e5ec0bSBram Moolenaar
93932e5ec0bSBram Moolenaar  " Last line number in the Xnetbeans file. Used to verify the result of the
94032e5ec0bSBram Moolenaar  " communication with the netbeans server
94132e5ec0bSBram Moolenaar  let g:last = 0
94232e5ec0bSBram Moolenaar
94332e5ec0bSBram Moolenaar  " Establish the connection with the netbeans server
94432e5ec0bSBram Moolenaar  exe 'nbstart :localhost:' .. a:port .. ':bunny'
94532e5ec0bSBram Moolenaar  call WaitFor('len(ReadXnetbeans()) > (g:last + 2)')
94632e5ec0bSBram Moolenaar  let l = ReadXnetbeans()
94732e5ec0bSBram Moolenaar  call assert_equal(['AUTH bunny',
94832e5ec0bSBram Moolenaar        \ '0:version=0 "2.5"',
94932e5ec0bSBram Moolenaar        \ '0:startupDone=0'], l[-3:])
95032e5ec0bSBram Moolenaar  let g:last += 3
95132e5ec0bSBram Moolenaar
95232e5ec0bSBram Moolenaar  " Open the command buffer to communicate with the server
95332e5ec0bSBram Moolenaar  split Xcmdbuf
95432e5ec0bSBram Moolenaar  call WaitFor('len(ReadXnetbeans()) > (g:last + 2)')
95532e5ec0bSBram Moolenaar  let l = ReadXnetbeans()
95632e5ec0bSBram Moolenaar  call assert_equal('0:fileOpened=0 "Xcmdbuf" T F',
95732e5ec0bSBram Moolenaar        \ substitute(l[-3], '".*/', '"', ''))
95832e5ec0bSBram Moolenaar  call assert_equal('send: 1:putBufferNumber!15 "Xcmdbuf"',
95932e5ec0bSBram Moolenaar        \ substitute(l[-2], '".*/', '"', ''))
96032e5ec0bSBram Moolenaar  call assert_equal('1:startDocumentListen!16', l[-1])
96132e5ec0bSBram Moolenaar  let g:last += 3
96232e5ec0bSBram Moolenaar
96332e5ec0bSBram Moolenaar  sleep 10m
96432e5ec0bSBram Moolenaarendfunc
96532e5ec0bSBram Moolenaar
96632e5ec0bSBram Moolenaar" This test used to reference a buffer after it was freed leading to an ASAN
96732e5ec0bSBram Moolenaar" error.
96832e5ec0bSBram Moolenaarfunc Test_nb_bwipe_buffer()
96932e5ec0bSBram Moolenaar  call s:run_server('Nb_bwipe_buffer')
97050dc3eccSBram Moolenaar  silent! %bwipe!
97132e5ec0bSBram Moolenaar  sleep 100m
97232e5ec0bSBram Moolenaar  nbclose
97332e5ec0bSBram Moolenaarendfunc
97432e5ec0bSBram Moolenaar
975173d841eSBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
976