1" Tests for 'listchars' display with 'list' and :list
2
3source view_util.vim
4
5func Test_listchars()
6  enew!
7  set ff=unix
8  set list
9
10  set listchars+=tab:>-,space:.,trail:<
11  call append(0, [
12	      \ '	aa	',
13	      \ '  bb	  ',
14	      \ '   cccc	 ',
15	      \ 'dd        ee  	',
16	      \ ' '
17	      \ ])
18  let expected = [
19	      \ '>-------aa>-----$',
20	      \ '..bb>---<<$',
21	      \ '...cccc><$',
22	      \ 'dd........ee<<>-$',
23	      \ '<$'
24	      \ ]
25  redraw!
26  for i in range(1, 5)
27    call cursor(i, 1)
28    call assert_equal([expected[i - 1]], ScreenLines(i, virtcol('$')))
29  endfor
30
31  set listchars-=trail:<
32  let expected = [
33	      \ '>-------aa>-----$',
34	      \ '..bb>---..$',
35	      \ '...cccc>.$',
36	      \ 'dd........ee..>-$',
37	      \ '.$'
38	      \ ]
39  redraw!
40  for i in range(1, 5)
41    call cursor(i, 1)
42    call assert_equal([expected[i - 1]], ScreenLines(i, virtcol('$')))
43  endfor
44
45  set listchars+=trail:<
46  set nolist
47  normal ggdG
48  call append(0, [
49	      \ '  fff	  ',
50	      \ '	gg	',
51	      \ '     h	',
52	      \ 'iii    	  ',
53	      \ ])
54  let l = split(execute("%list"), "\n")
55  call assert_equal([
56	      \ '..fff>--<<$',
57	      \ '>-------gg>-----$',
58	      \ '.....h>-$',
59	      \ 'iii<<<<><<$', '$'], l)
60
61  enew!
62  set listchars& ff&
63endfunc
64