| " Tests for popup windows |
| |
| if !has('textprop') |
| finish |
| endif |
| |
| source screendump.vim |
| |
| func Test_simple_popup() |
| if !CanRunVimInTerminal() |
| return |
| endif |
| call writefile([ |
| \ "call setline(1, range(1, 100))", |
| \ "hi PopupColor1 ctermbg=lightblue", |
| \ "hi PopupColor2 ctermbg=lightcyan", |
| \ "let winid = popup_create('hello there', {'line': 3, 'col': 11, 'highlight': 'PopupColor1'})", |
| \ "let winid2 = popup_create(['another one', 'another two', 'another three'], {'line': 3, 'col': 25})", |
| \ "call setwinvar(winid2, '&wincolor', 'PopupColor2')", |
| \], 'XtestPopup') |
| let buf = RunVimInTerminal('-S XtestPopup', {'rows': 10}) |
| call VerifyScreenDump(buf, 'Test_popupwin_01', {}) |
| |
| " Add a tabpage |
| call term_sendkeys(buf, ":tabnew\<CR>") |
| call term_sendkeys(buf, ":call popup_create('other tab', {'line': 4, 'col': 9})\<CR>") |
| call VerifyScreenDump(buf, 'Test_popupwin_02', {}) |
| |
| " switch back to first tabpage |
| call term_sendkeys(buf, "gt") |
| call VerifyScreenDump(buf, 'Test_popupwin_03', {}) |
| |
| " close that tabpage |
| call term_sendkeys(buf, ":quit!\<CR>") |
| call VerifyScreenDump(buf, 'Test_popupwin_04', {}) |
| |
| " clean up |
| call StopVimInTerminal(buf) |
| call delete('XtestPopup') |
| endfunc |
| |
| func Test_popup_time() |
| if !has('timers') |
| return |
| endif |
| topleft vnew |
| call setline(1, 'hello') |
| |
| call popup_create('world', { |
| \ 'line': 1, |
| \ 'col': 1, |
| \ 'time': 500, |
| \}) |
| redraw |
| let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '') |
| call assert_equal('world', line) |
| |
| sleep 700m |
| redraw |
| let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '') |
| call assert_equal('hello', line) |
| |
| call popup_create('on the command line', { |
| \ 'line': &lines, |
| \ 'col': 10, |
| \ 'time': 500, |
| \}) |
| redraw |
| let line = join(map(range(1, 30), 'screenstring(&lines, v:val)'), '') |
| call assert_match('.*on the command line.*', line) |
| |
| sleep 700m |
| redraw |
| let line = join(map(range(1, 30), 'screenstring(&lines, v:val)'), '') |
| call assert_notmatch('.*on the command line.*', line) |
| |
| bwipe! |
| endfunc |