blob: b934d38e1830d613e73615105b35ade585aeea5f [file] [log] [blame]
Bram Moolenaar53f16732016-09-07 20:46:39 +02001" Test for v:hlsearch
2
3function! Test_hlsearch()
4 new
5 call setline(1, repeat(['aaa'], 10))
6 set hlsearch nolazyredraw
7 let r=[]
8 " redraw is needed to make hlsearch highlight the matches
9 exe "normal! /aaa\<CR>" | redraw
10 let r1 = screenattr(1, 1)
11 nohlsearch | redraw
12 call assert_notequal(r1, screenattr(1,1))
13 let v:hlsearch=1 | redraw
14 call assert_equal(r1, screenattr(1,1))
15 let v:hlsearch=0 | redraw
16 call assert_notequal(r1, screenattr(1,1))
17 set hlsearch | redraw
18 call assert_equal(r1, screenattr(1,1))
19 let v:hlsearch=0 | redraw
20 call assert_notequal(r1, screenattr(1,1))
21 exe "normal! n" | redraw
22 call assert_equal(r1, screenattr(1,1))
23 let v:hlsearch=0 | redraw
24 call assert_notequal(r1, screenattr(1,1))
25 exe "normal! /\<CR>" | redraw
26 call assert_equal(r1, screenattr(1,1))
27 set nohls
28 exe "normal! /\<CR>" | redraw
29 call assert_notequal(r1, screenattr(1,1))
30 call assert_fails('let v:hlsearch=[]', 'E745')
31 call garbagecollect(1)
32 call getchar(1)
33 enew!
34endfunction
Bram Moolenaar5b1affe2017-06-17 19:13:49 +020035
36func Test_hlsearch_hangs()
37 if !has('reltime') || !has('float')
38 return
39 endif
40
41 " This pattern takes forever to match, it should timeout.
42 help
43 let start = reltime()
44 set hlsearch nolazyredraw redrawtime=101
45 let @/ = '\%#=2\v(a|\1)*'
46 redraw
47 let elapsed = reltimefloat(reltime(start))
48 call assert_true(elapsed > 0.1)
49 call assert_true(elapsed < 1.0)
50 set nohlsearch redrawtime&
51 quit
52endfunc