blob: b6b8a9eaac396a3990b2737ce83bb3f0455e2c9c [file] [log] [blame]
Bram Moolenaar4d784b22019-05-25 19:51:39 +02001" Tests for popup windows
2
3if !has('textprop')
4 finish
5endif
6
7source screendump.vim
8
9func Test_simple_popup()
10 if !CanRunVimInTerminal()
11 return
12 endif
13 call writefile([
14 \ "call setline(1, range(1, 100))",
15 \ "let winid = popup_create('hello there', {'line': 3, 'col': 11})",
16 \ "hi PopupColor ctermbg=lightblue",
17 \ "call setwinvar(winid, '&wincolor', 'PopupColor')",
18 \ "let winid2 = popup_create(['another one', 'another two', 'another three'], {'line': 3, 'col': 25})",
19 \], 'XtestPopup')
20 let buf = RunVimInTerminal('-S XtestPopup', {'rows': 10})
21 call VerifyScreenDump(buf, 'Test_popupwin_01', {})
22
Bram Moolenaarec583842019-05-26 14:11:23 +020023 " Add a tabpage
24 call term_sendkeys(buf, ":tabnew\<CR>")
25 call term_sendkeys(buf, ":call popup_create('other tab', {'line': 4, 'col': 9})\<CR>")
26 call VerifyScreenDump(buf, 'Test_popupwin_02', {})
27
28 " switch back to first tabpage
29 call term_sendkeys(buf, "gt")
30 call VerifyScreenDump(buf, 'Test_popupwin_03', {})
31
32 " close that tabpage
33 call term_sendkeys(buf, ":quit!\<CR>")
34 call VerifyScreenDump(buf, 'Test_popupwin_04', {})
35
Bram Moolenaar4d784b22019-05-25 19:51:39 +020036 " clean up
37 call StopVimInTerminal(buf)
38 call delete('XtestPopup')
39endfunc
Bram Moolenaar51fe3b12019-05-26 20:10:06 +020040
41func Test_popup_time()
Bram Moolenaar35d5af62019-05-26 20:44:10 +020042 if !has('timers')
43 return
44 endif
Bram Moolenaar51fe3b12019-05-26 20:10:06 +020045 topleft vnew
46 call setline(1, 'hello')
47
48 call popup_create('world', {
49 \ 'line': 1,
50 \ 'col': 1,
51 \ 'time': 500,
52 \})
53 redraw
54 let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '')
55 call assert_equal('world', line)
56
57 sleep 700m
Bram Moolenaar35d5af62019-05-26 20:44:10 +020058 redraw
Bram Moolenaar51fe3b12019-05-26 20:10:06 +020059 let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '')
60 call assert_equal('hello', line)
61
62 call popup_create('on the command line', {
63 \ 'line': &lines,
64 \ 'col': 10,
65 \ 'time': 500,
66 \})
67 redraw
68 let line = join(map(range(1, 30), 'screenstring(&lines, v:val)'), '')
69 call assert_match('.*on the command line.*', line)
70
71 sleep 700m
72 redraw
73 let line = join(map(range(1, 30), 'screenstring(&lines, v:val)'), '')
74 call assert_notmatch('.*on the command line.*', line)
75
76 bwipe!
77endfunc