xref: /vim-8.2.3635/src/testdir/test_options.vim (revision bc2eada5)
1" Test for options
2
3function! Test_whichwrap()
4  set whichwrap=b,s
5  call assert_equal('b,s', &whichwrap)
6
7  set whichwrap+=h,l
8  call assert_equal('b,s,h,l', &whichwrap)
9
10  set whichwrap+=h,l
11  call assert_equal('b,s,h,l', &whichwrap)
12
13  set whichwrap+=h,l
14  call assert_equal('b,s,h,l', &whichwrap)
15
16  set whichwrap&
17endfunction
18
19function Test_options()
20  let caught = 'ok'
21  try
22    options
23  catch
24    let caught = v:throwpoint . "\n" . v:exception
25  endtry
26  call assert_equal('ok', caught)
27
28  " close option-window
29  close
30endfunction
31
32function Test_path_keep_commas()
33  " Test that changing 'path' keeps two commas.
34  set path=foo,,bar
35  set path-=bar
36  set path+=bar
37  call assert_equal('foo,,bar', &path)
38
39  set path&
40endfunction
41
42func Test_signcolumn()
43  if has('signs')
44    call assert_equal("auto", &signcolumn)
45    set signcolumn=yes
46    set signcolumn=no
47    call assert_fails('set signcolumn=nope')
48  endif
49endfunc
50
51func Test_filetype_valid()
52  if !has('autocmd')
53    return
54  endif
55  set ft=valid_name
56  call assert_equal("valid_name", &filetype)
57  set ft=valid-name
58  call assert_equal("valid-name", &filetype)
59
60  call assert_fails(":set ft=wrong;name", "E474:")
61  call assert_fails(":set ft=wrong\\\\name", "E474:")
62  call assert_fails(":set ft=wrong\\|name", "E474:")
63  call assert_fails(":set ft=wrong/name", "E474:")
64  call assert_fails(":set ft=wrong\\\nname", "E474:")
65  call assert_equal("valid-name", &filetype)
66
67  exe "set ft=trunc\x00name"
68  call assert_equal("trunc", &filetype)
69endfunc
70
71func Test_syntax_valid()
72  if !has('syntax')
73    return
74  endif
75  set syn=valid_name
76  call assert_equal("valid_name", &syntax)
77  set syn=valid-name
78  call assert_equal("valid-name", &syntax)
79
80  call assert_fails(":set syn=wrong;name", "E474:")
81  call assert_fails(":set syn=wrong\\\\name", "E474:")
82  call assert_fails(":set syn=wrong\\|name", "E474:")
83  call assert_fails(":set syn=wrong/name", "E474:")
84  call assert_fails(":set syn=wrong\\\nname", "E474:")
85  call assert_equal("valid-name", &syntax)
86
87  exe "set syn=trunc\x00name"
88  call assert_equal("trunc", &syntax)
89endfunc
90
91func Test_keymap_valid()
92  if !has('keymap')
93    return
94  endif
95  call assert_fails(":set kmp=valid_name", "E544:")
96  call assert_fails(":set kmp=valid_name", "valid_name")
97  call assert_fails(":set kmp=valid-name", "E544:")
98  call assert_fails(":set kmp=valid-name", "valid-name")
99
100  call assert_fails(":set kmp=wrong;name", "E474:")
101  call assert_fails(":set kmp=wrong\\\\name", "E474:")
102  call assert_fails(":set kmp=wrong\\|name", "E474:")
103  call assert_fails(":set kmp=wrong/name", "E474:")
104  call assert_fails(":set kmp=wrong\\\nname", "E474:")
105
106  call assert_fails(":set kmp=trunc\x00name", "E544:")
107  call assert_fails(":set kmp=trunc\x00name", "trunc")
108endfunc
109
110func Check_dir_option(name)
111  " Check that it's possible to set the option.
112  exe 'set ' . a:name . '=/usr/share/dict/words'
113  call assert_equal('/usr/share/dict/words', eval('&' . a:name))
114  exe 'set ' . a:name . '=/usr/share/dict/words,/and/there'
115  call assert_equal('/usr/share/dict/words,/and/there', eval('&' . a:name))
116  exe 'set ' . a:name . '=/usr/share/dict\ words'
117  call assert_equal('/usr/share/dict words', eval('&' . a:name))
118
119  " Check rejecting weird characters.
120  call assert_fails("set " . a:name . "=/not&there", "E474:")
121  call assert_fails("set " . a:name . "=/not>there", "E474:")
122  call assert_fails("set " . a:name . "=/not.*there", "E474:")
123endfunc
124
125func Test_dictionary()
126  call Check_dir_option('dictionary')
127endfunc
128
129func Test_thesaurus()
130  call Check_dir_option('thesaurus')
131endfunc
132