1" Test for character search commands - t, T, f, F, ; and ,
2
3func Test_charsearch()
4  enew!
5  call append(0, ['Xabcdefghijkemnopqretuvwxyz',
6	      \ 'Yabcdefghijkemnopqretuvwxyz',
7	      \ 'Zabcdefghijkemnokqretkvwxyz'])
8  " check that "fe" and ";" work
9  1
10  normal! ylfep;;p,,p
11  call assert_equal('XabcdeXfghijkeXmnopqreXtuvwxyz', getline(1))
12  " check that save/restore works
13  2
14  normal! ylfep
15  let csave = getcharsearch()
16  normal! fip
17  call setcharsearch(csave)
18  normal! ;p;p
19  call assert_equal('YabcdeYfghiYjkeYmnopqreYtuvwxyz', getline(2))
20
21  " check that setcharsearch() changes the settings.
22  3
23  normal! ylfep
24  eval {'char': 'k'}->setcharsearch()
25  normal! ;p
26  call setcharsearch({'forward': 0})
27  normal! $;p
28  call setcharsearch({'until': 1})
29  set cpo-=;
30  normal! ;;p
31  call assert_equal('ZabcdeZfghijkZZemnokqretkZvwxyz', getline(3))
32
33  " check that repeating a search before and after a line fails
34  normal 3Gfv
35  call assert_beeps('normal ;')
36  call assert_beeps('normal ,')
37
38  " clear the character search
39  call setcharsearch({'char' : ''})
40  call assert_equal('', getcharsearch().char)
41
42  call assert_fails("call setcharsearch([])", 'E715:')
43  enew!
44endfunc
45
46" Test for character search in virtual edit mode with <Tab>
47func Test_csearch_virtualedit()
48  new
49  set virtualedit=all
50  call setline(1, "a\tb")
51  normal! tb
52  call assert_equal([0, 1, 2, 6], getpos('.'))
53  set virtualedit&
54  close!
55endfunc
56
57" Test for character search failure in latin1 encoding
58func Test_charsearch_latin1()
59  new
60  let save_enc = &encoding
61  set encoding=latin1
62  call setline(1, 'abcdefghijk')
63  call assert_beeps('normal fz')
64  call assert_beeps('normal tx')
65  call assert_beeps('normal $Fz')
66  call assert_beeps('normal $Tx')
67  let &encoding = save_enc
68  close!
69endfunc
70
71" vim: shiftwidth=2 sts=2 expandtab
72