1fabaf753SBram Moolenaar" Tests for various eval things.
2fabaf753SBram Moolenaar
32b6ef856SBram Moolenaarsource view_util.vim
42b6ef856SBram Moolenaar
5fabaf753SBram Moolenaarfunction s:foo() abort
6fabaf753SBram Moolenaar  try
7fabaf753SBram Moolenaar    return [] == 0
8fabaf753SBram Moolenaar  catch
9fabaf753SBram Moolenaar    return 1
10fabaf753SBram Moolenaar  endtry
11fabaf753SBram Moolenaarendfunction
12fabaf753SBram Moolenaar
13fabaf753SBram Moolenaarfunc Test_catch_return_with_error()
14fabaf753SBram Moolenaar  call assert_equal(1, s:foo())
15fabaf753SBram Moolenaarendfunc
162be57331SBram Moolenaar
172be57331SBram Moolenaarfunc Test_nocatch_restore_silent_emsg()
182be57331SBram Moolenaar  silent! try
192be57331SBram Moolenaar    throw 1
202be57331SBram Moolenaar  catch
212be57331SBram Moolenaar  endtry
222b6ef856SBram Moolenaar  echoerr 'wrong again'
232b6ef856SBram Moolenaar  call assert_equal('wrong again', ScreenLine(&lines))
242be57331SBram Moolenaarendfunc
2578a16b0fSBram Moolenaar
2678a16b0fSBram Moolenaarfunc Test_mkdir_p()
2778a16b0fSBram Moolenaar  call mkdir('Xmkdir/nested', 'p')
2878a16b0fSBram Moolenaar  call assert_true(isdirectory('Xmkdir/nested'))
2978a16b0fSBram Moolenaar  try
3078a16b0fSBram Moolenaar    " Trying to make existing directories doesn't error
3178a16b0fSBram Moolenaar    call mkdir('Xmkdir', 'p')
3278a16b0fSBram Moolenaar    call mkdir('Xmkdir/nested', 'p')
3378a16b0fSBram Moolenaar  catch /E739:/
3478a16b0fSBram Moolenaar    call assert_report('mkdir(..., "p") failed for an existing directory')
3578a16b0fSBram Moolenaar  endtry
3678a16b0fSBram Moolenaar  " 'p' doesn't suppress real errors
3778a16b0fSBram Moolenaar  call writefile([], 'Xfile')
38e2e4075fSBram Moolenaar  call assert_fails('call mkdir("Xfile", "p")', 'E739:')
3978a16b0fSBram Moolenaar  call delete('Xfile')
4078a16b0fSBram Moolenaar  call delete('Xmkdir', 'rf')
4192b83ccfSBram Moolenaar  call assert_equal(0, mkdir(test_null_string()))
42e2e4075fSBram Moolenaar  call assert_fails('call mkdir([])', 'E730:')
43e2e4075fSBram Moolenaar  call assert_fails('call mkdir("abc", [], [])', 'E745:')
4478a16b0fSBram Moolenaarendfunc
4567f8ab82SBram Moolenaar
4667f8ab82SBram Moolenaarfunc Test_line_continuation()
4767f8ab82SBram Moolenaar  let array = [5,
4867f8ab82SBram Moolenaar	"\ ignore this
4967f8ab82SBram Moolenaar	\ 6,
5067f8ab82SBram Moolenaar	"\ more to ignore
5167f8ab82SBram Moolenaar	"\ more moreto ignore
5267f8ab82SBram Moolenaar	\ ]
5367f8ab82SBram Moolenaar	"\ and some more
5467f8ab82SBram Moolenaar  call assert_equal([5, 6], array)
5567f8ab82SBram Moolenaarendfunc
5688b53fd0SBram Moolenaar
5788b53fd0SBram Moolenaarfunc Test_E963()
5888b53fd0SBram Moolenaar  " These commands used to cause an internal error prior to vim 8.1.0563
5988b53fd0SBram Moolenaar  let v_e = v:errors
6088b53fd0SBram Moolenaar  let v_o = v:oldfiles
6188b53fd0SBram Moolenaar  call assert_fails("let v:errors=''", 'E963:')
6288b53fd0SBram Moolenaar  call assert_equal(v_e, v:errors)
6388b53fd0SBram Moolenaar  call assert_fails("let v:oldfiles=''", 'E963:')
6488b53fd0SBram Moolenaar  call assert_equal(v_o, v:oldfiles)
6588b53fd0SBram Moolenaarendfunc
66c0f5a78cSBram Moolenaar
67c0f5a78cSBram Moolenaarfunc Test_for_invalid()
68*80d7395dSSean Dewar  call assert_fails("for x in 99", 'E1098:')
69*80d7395dSSean Dewar  call assert_fails("for x in function('winnr')", 'E1098:')
70*80d7395dSSean Dewar  call assert_fails("for x in {'a': 9}", 'E1098:')
71df2c2988SBram Moolenaar
72df2c2988SBram Moolenaar  if 0
73df2c2988SBram Moolenaar    /1/5/2/s/\n
74df2c2988SBram Moolenaar  endif
75df2c2988SBram Moolenaar  redraw
76c0f5a78cSBram Moolenaarendfunc
7705500eceSBram Moolenaar
7805500eceSBram Moolenaarfunc Test_readfile_binary()
7905500eceSBram Moolenaar  new
8005500eceSBram Moolenaar  call setline(1, ['one', 'two', 'three'])
8105500eceSBram Moolenaar  setlocal ff=dos
821b04ce2dSBram Moolenaar  silent write XReadfile_bin
831b04ce2dSBram Moolenaar  let lines = 'XReadfile_bin'->readfile()
8405500eceSBram Moolenaar  call assert_equal(['one', 'two', 'three'], lines)
851b04ce2dSBram Moolenaar  let lines = readfile('XReadfile_bin', '', 2)
8605500eceSBram Moolenaar  call assert_equal(['one', 'two'], lines)
871b04ce2dSBram Moolenaar  let lines = readfile('XReadfile_bin', 'b')
8805500eceSBram Moolenaar  call assert_equal(["one\r", "two\r", "three\r", ""], lines)
891b04ce2dSBram Moolenaar  let lines = readfile('XReadfile_bin', 'b', 2)
9005500eceSBram Moolenaar  call assert_equal(["one\r", "two\r"], lines)
9105500eceSBram Moolenaar
9205500eceSBram Moolenaar  bwipe!
931b04ce2dSBram Moolenaar  call delete('XReadfile_bin')
941b04ce2dSBram Moolenaarendfunc
951b04ce2dSBram Moolenaar
961b04ce2dSBram Moolenaarfunc Test_readfile_bom()
971b04ce2dSBram Moolenaar  call writefile(["\ufeffFOO", "FOO\ufeffBAR"], 'XReadfile_bom')
981b04ce2dSBram Moolenaar  call assert_equal(['FOO', 'FOOBAR'], readfile('XReadfile_bom'))
991b04ce2dSBram Moolenaar  call delete('XReadfile_bom')
1001b04ce2dSBram Moolenaarendfunc
1011b04ce2dSBram Moolenaar
1021b04ce2dSBram Moolenaarfunc Test_readfile_max()
1031b04ce2dSBram Moolenaar  call writefile(range(1, 4), 'XReadfile_max')
1041b04ce2dSBram Moolenaar  call assert_equal(['1', '2'], readfile('XReadfile_max', '', 2))
1051b04ce2dSBram Moolenaar  call assert_equal(['3', '4'], readfile('XReadfile_max', '', -2))
1061b04ce2dSBram Moolenaar  call delete('XReadfile_max')
10705500eceSBram Moolenaarendfunc
1084b9e91f0SBram Moolenaar
1094b9e91f0SBram Moolenaarfunc Test_let_errmsg()
1104b9e91f0SBram Moolenaar  call assert_fails('let v:errmsg = []', 'E730:')
1114b9e91f0SBram Moolenaar  let v:errmsg = ''
1124b9e91f0SBram Moolenaar  call assert_fails('let v:errmsg = []', 'E730:')
1134b9e91f0SBram Moolenaar  let v:errmsg = ''
1144b9e91f0SBram Moolenaarendfunc
1150f248b00SBram Moolenaar
1160f248b00SBram Moolenaarfunc Test_string_concatenation()
1170f248b00SBram Moolenaar  call assert_equal('ab', 'a'.'b')
1180f248b00SBram Moolenaar  call assert_equal('ab', 'a' .'b')
1190f248b00SBram Moolenaar  call assert_equal('ab', 'a'. 'b')
1200f248b00SBram Moolenaar  call assert_equal('ab', 'a' . 'b')
1210f248b00SBram Moolenaar
1220f248b00SBram Moolenaar  call assert_equal('ab', 'a'..'b')
1230f248b00SBram Moolenaar  call assert_equal('ab', 'a' ..'b')
1240f248b00SBram Moolenaar  call assert_equal('ab', 'a'.. 'b')
1250f248b00SBram Moolenaar  call assert_equal('ab', 'a' .. 'b')
1260f248b00SBram Moolenaar
1270f248b00SBram Moolenaar  let a = 'a'
1280f248b00SBram Moolenaar  let b = 'b'
1290f248b00SBram Moolenaar  let a .= b
1300f248b00SBram Moolenaar  call assert_equal('ab', a)
1310f248b00SBram Moolenaar
1320f248b00SBram Moolenaar  let a = 'a'
1330f248b00SBram Moolenaar  let a.=b
1340f248b00SBram Moolenaar  call assert_equal('ab', a)
1350f248b00SBram Moolenaar
1360f248b00SBram Moolenaar  let a = 'a'
1370f248b00SBram Moolenaar  let a ..= b
1380f248b00SBram Moolenaar  call assert_equal('ab', a)
1390f248b00SBram Moolenaar
1400f248b00SBram Moolenaar  let a = 'a'
1410f248b00SBram Moolenaar  let a..=b
1420f248b00SBram Moolenaar  call assert_equal('ab', a)
1432e086612SBram Moolenaar
1442e086612SBram Moolenaar  if has('float')
1452e086612SBram Moolenaar    let a = 'A'
1462e086612SBram Moolenaar    let b = 1.234
1473cfa5b16SBram Moolenaar    call assert_equal('A1.234', a .. b)
1482e086612SBram Moolenaar  endif
1490f248b00SBram Moolenaarendfunc
150558ca4aeSBram Moolenaar
15160a8de28SBram Moolenaar" Test fix for issue #4507
15260a8de28SBram Moolenaarfunc Test_skip_after_throw()
15360a8de28SBram Moolenaar  try
15460a8de28SBram Moolenaar    throw 'something'
15560a8de28SBram Moolenaar    let x = wincol() || &ts
15660a8de28SBram Moolenaar  catch /something/
15760a8de28SBram Moolenaar  endtry
15860a8de28SBram Moolenaarendfunc
15960a8de28SBram Moolenaar
160558ca4aeSBram Moolenaarscriptversion 2
161558ca4aeSBram Moolenaarfunc Test_string_concat_scriptversion2()
16293a4879cSBram Moolenaar  call assert_true(has('vimscript-2'))
163558ca4aeSBram Moolenaar  let a = 'a'
164558ca4aeSBram Moolenaar  let b = 'b'
165558ca4aeSBram Moolenaar
166558ca4aeSBram Moolenaar  call assert_fails('echo a . b', 'E15:')
167558ca4aeSBram Moolenaar  call assert_fails('let a .= b', 'E985:')
168fae55a9cSBram Moolenaar  call assert_fails('let vers = 1.2.3', 'E488:')
169558ca4aeSBram Moolenaar
170558ca4aeSBram Moolenaar  if has('float')
171558ca4aeSBram Moolenaar    let f = .5
172558ca4aeSBram Moolenaar    call assert_equal(0.5, f)
173558ca4aeSBram Moolenaar  endif
174558ca4aeSBram Moolenaarendfunc
175558ca4aeSBram Moolenaar
176558ca4aeSBram Moolenaarscriptversion 1
177558ca4aeSBram Moolenaarfunc Test_string_concat_scriptversion1()
17893a4879cSBram Moolenaar  call assert_true(has('vimscript-1'))
179558ca4aeSBram Moolenaar  let a = 'a'
180558ca4aeSBram Moolenaar  let b = 'b'
181558ca4aeSBram Moolenaar
182558ca4aeSBram Moolenaar  echo a . b
183558ca4aeSBram Moolenaar  let a .= b
184558ca4aeSBram Moolenaar  let vers = 1.2.3
185558ca4aeSBram Moolenaar  call assert_equal('123', vers)
186558ca4aeSBram Moolenaar
187558ca4aeSBram Moolenaar  if has('float')
188558ca4aeSBram Moolenaar    call assert_fails('let f = .5', 'E15:')
189558ca4aeSBram Moolenaar  endif
190558ca4aeSBram Moolenaarendfunc
191558ca4aeSBram Moolenaar
192d2e716e6SBram Moolenaarscriptversion 3
193d2e716e6SBram Moolenaarfunc Test_vvar_scriptversion3()
19493a4879cSBram Moolenaar  call assert_true(has('vimscript-3'))
195d2e716e6SBram Moolenaar  call assert_fails('echo version', 'E121:')
196d2e716e6SBram Moolenaar  call assert_false(exists('version'))
197d2e716e6SBram Moolenaar  let version = 1
198d2e716e6SBram Moolenaar  call assert_equal(1, version)
199d2e716e6SBram Moolenaarendfunc
200d2e716e6SBram Moolenaar
201d2e716e6SBram Moolenaarscriptversion 2
202d2e716e6SBram Moolenaarfunc Test_vvar_scriptversion2()
203d2e716e6SBram Moolenaar  call assert_true(exists('version'))
204d2e716e6SBram Moolenaar  echo version
205d2e716e6SBram Moolenaar  call assert_fails('let version = 1', 'E46:')
206d2e716e6SBram Moolenaar  call assert_equal(v:version, version)
20737df9a44SBram Moolenaar
20837df9a44SBram Moolenaar  call assert_equal(v:version, v:versionlong / 10000)
20937df9a44SBram Moolenaar  call assert_true(v:versionlong > 8011525)
210d2e716e6SBram Moolenaarendfunc
211d2e716e6SBram Moolenaar
21261343f0cSBram Moolenaarfunc Test_dict_access_scriptversion2()
21361343f0cSBram Moolenaar  let l:x = {'foo': 1}
21461343f0cSBram Moolenaar
21561343f0cSBram Moolenaar  call assert_false(0 && l:x.foo)
21661343f0cSBram Moolenaar  call assert_true(1 && l:x.foo)
21761343f0cSBram Moolenaarendfunc
21861343f0cSBram Moolenaar
21960a8de28SBram Moolenaarscriptversion 4
22060a8de28SBram Moolenaarfunc Test_vvar_scriptversion4()
221af914383SBram Moolenaar  call assert_true(has('vimscript-4'))
22260a8de28SBram Moolenaar  call assert_equal(17, 017)
223c17e66c5SBram Moolenaar  call assert_equal(15, 0o17)
224c17e66c5SBram Moolenaar  call assert_equal(15, 0O17)
22560a8de28SBram Moolenaar  call assert_equal(18, 018)
226c37b6554SBram Moolenaar  call assert_equal(511, 0o777)
22760a8de28SBram Moolenaar  call assert_equal(64, 0b1'00'00'00)
22860a8de28SBram Moolenaar  call assert_equal(1048576, 0x10'00'00)
229c17e66c5SBram Moolenaar  call assert_equal(32768, 0o10'00'00)
23060a8de28SBram Moolenaar  call assert_equal(1000000, 1'000'000)
231ea8dcf83SBram Moolenaar  call assert_equal("1234", execute("echo 1'234")->trim())
232ea8dcf83SBram Moolenaar  call assert_equal('1  234', execute("echo 1''234")->trim())
233ea8dcf83SBram Moolenaar  call assert_fails("echo 1'''234", 'E115:')
23460a8de28SBram Moolenaarendfunc
23560a8de28SBram Moolenaar
23660a8de28SBram Moolenaarscriptversion 1
23760a8de28SBram Moolenaarfunc Test_vvar_scriptversion1()
23860a8de28SBram Moolenaar  call assert_equal(15, 017)
239c17e66c5SBram Moolenaar  call assert_equal(15, 0o17)
240c17e66c5SBram Moolenaar  call assert_equal(15, 0O17)
24160a8de28SBram Moolenaar  call assert_equal(18, 018)
242c37b6554SBram Moolenaar  call assert_equal(511, 0o777)
24360a8de28SBram Moolenaarendfunc
24460a8de28SBram Moolenaar
24560a8de28SBram Moolenaarfunc Test_scriptversion_fail()
246558ca4aeSBram Moolenaar  call writefile(['scriptversion 9'], 'Xversionscript')
247558ca4aeSBram Moolenaar  call assert_fails('source Xversionscript', 'E999:')
248558ca4aeSBram Moolenaar  call delete('Xversionscript')
249558ca4aeSBram Moolenaarendfunc
250b662591eSBram Moolenaar
2519d8d0b5cSBram Moolenaarfunc Test_execute_cmd_with_null()
252b662591eSBram Moolenaar  call assert_fails('execute test_null_list()', 'E730:')
253b662591eSBram Moolenaar  call assert_fails('execute test_null_dict()', 'E731:')
254b662591eSBram Moolenaar  call assert_fails('execute test_null_blob()', 'E976:')
255b662591eSBram Moolenaar  execute test_null_string()
256b662591eSBram Moolenaar  call assert_fails('execute test_null_partial()', 'E729:')
25792b83ccfSBram Moolenaar  call assert_fails('execute test_unknown()', 'E908:')
258b662591eSBram Moolenaar  if has('job')
259b662591eSBram Moolenaar    call assert_fails('execute test_null_job()', 'E908:')
260b662591eSBram Moolenaar    call assert_fails('execute test_null_channel()', 'E908:')
261b662591eSBram Moolenaar  endif
262b662591eSBram Moolenaarendfunc
263f9706e9dSBram Moolenaar
26457d5a01cSBram Moolenaarfunc Test_number_max_min_size()
26557d5a01cSBram Moolenaar  " This will fail on systems without 64 bit number support or when not
26657d5a01cSBram Moolenaar  " configured correctly.
267f9706e9dSBram Moolenaar  call assert_equal(64, v:numbersize)
26857d5a01cSBram Moolenaar
26957d5a01cSBram Moolenaar  call assert_true(v:numbermin < -9999999)
27057d5a01cSBram Moolenaar  call assert_true(v:numbermax > 9999999)
271f9706e9dSBram Moolenaarendfunc
2728b633135SBram Moolenaar
27390455cfaSBram Moolenaarfunc Assert_reg(name, type, value, valuestr, expr, exprstr)
27490455cfaSBram Moolenaar  call assert_equal(a:type, getregtype(a:name))
27590455cfaSBram Moolenaar  call assert_equal(a:value, getreg(a:name))
27690455cfaSBram Moolenaar  call assert_equal(a:valuestr, string(getreg(a:name, 0, 1)))
27790455cfaSBram Moolenaar  call assert_equal(a:expr, getreg(a:name, 1))
27890455cfaSBram Moolenaar  call assert_equal(a:exprstr, string(getreg(a:name, 1, 1)))
27990455cfaSBram Moolenaarendfunc
28090455cfaSBram Moolenaar
28190455cfaSBram Moolenaarfunc Test_let_register()
28290455cfaSBram Moolenaar  let @" = 'abc'
28390455cfaSBram Moolenaar  call Assert_reg('"', 'v', "abc", "['abc']", "abc", "['abc']")
28490455cfaSBram Moolenaar  let @" = "abc\n"
28590455cfaSBram Moolenaar  call Assert_reg('"', 'V', "abc\n", "['abc']", "abc\n", "['abc']")
28690455cfaSBram Moolenaar  let @" = "abc\<C-m>"
28790455cfaSBram Moolenaar  call Assert_reg('"', 'V', "abc\r\n", "['abc\r']", "abc\r\n", "['abc\r']")
28890455cfaSBram Moolenaar  let @= = '"abc"'
28990455cfaSBram Moolenaar  call Assert_reg('=', 'v', "abc", "['abc']", '"abc"', "['\"abc\"']")
29090455cfaSBram Moolenaarendfunc
29190455cfaSBram Moolenaar
29290455cfaSBram Moolenaarfunc Assert_regput(name, result)
29390455cfaSBram Moolenaar  new
29490455cfaSBram Moolenaar  execute "silent normal! o==\n==\e\"" . a:name . "P"
29590455cfaSBram Moolenaar  call assert_equal(a:result, getline(2, line('$')))
29661fbb337SBram Moolenaar  bwipe!
29790455cfaSBram Moolenaarendfunc
29890455cfaSBram Moolenaar
29990455cfaSBram Moolenaarfunc Test_setreg_basic()
30090455cfaSBram Moolenaar  call setreg('a', 'abcA', 'c')
30190455cfaSBram Moolenaar  call Assert_reg('a', 'v', "abcA", "['abcA']", "abcA", "['abcA']")
30290455cfaSBram Moolenaar  call Assert_regput('a', ['==', '=abcA='])
30390455cfaSBram Moolenaar
30490455cfaSBram Moolenaar  call setreg('A', 'abcAc', 'c')
30590455cfaSBram Moolenaar  call Assert_reg('A', 'v', "abcAabcAc", "['abcAabcAc']", "abcAabcAc", "['abcAabcAc']")
30690455cfaSBram Moolenaar  call Assert_regput('a', ['==', '=abcAabcAc='])
30790455cfaSBram Moolenaar
30890455cfaSBram Moolenaar  call setreg('A', 'abcAl', 'l')
30990455cfaSBram Moolenaar  call Assert_reg('A', 'V', "abcAabcAcabcAl\n", "['abcAabcAcabcAl']", "abcAabcAcabcAl\n", "['abcAabcAcabcAl']")
31090455cfaSBram Moolenaar  call Assert_regput('a', ['==', 'abcAabcAcabcAl', '=='])
31190455cfaSBram Moolenaar
31290455cfaSBram Moolenaar  call setreg('A', 'abcAc2','c')
31390455cfaSBram Moolenaar  call Assert_reg('A', 'v', "abcAabcAcabcAl\nabcAc2", "['abcAabcAcabcAl', 'abcAc2']", "abcAabcAcabcAl\nabcAc2", "['abcAabcAcabcAl', 'abcAc2']")
31490455cfaSBram Moolenaar  call Assert_regput('a', ['==', '=abcAabcAcabcAl', 'abcAc2='])
31590455cfaSBram Moolenaar
31690455cfaSBram Moolenaar  call setreg('b', 'abcB', 'v')
31790455cfaSBram Moolenaar  call Assert_reg('b', 'v', "abcB", "['abcB']", "abcB", "['abcB']")
31890455cfaSBram Moolenaar  call Assert_regput('b', ['==', '=abcB='])
31990455cfaSBram Moolenaar
32090455cfaSBram Moolenaar  call setreg('b', 'abcBc', 'ca')
32190455cfaSBram Moolenaar  call Assert_reg('b', 'v', "abcBabcBc", "['abcBabcBc']", "abcBabcBc", "['abcBabcBc']")
32290455cfaSBram Moolenaar  call Assert_regput('b', ['==', '=abcBabcBc='])
32390455cfaSBram Moolenaar
32490455cfaSBram Moolenaar  call setreg('b', 'abcBb', 'ba')
32590455cfaSBram Moolenaar  call Assert_reg('b', "\<C-V>5", "abcBabcBcabcBb", "['abcBabcBcabcBb']", "abcBabcBcabcBb", "['abcBabcBcabcBb']")
32690455cfaSBram Moolenaar  call Assert_regput('b', ['==', '=abcBabcBcabcBb='])
32790455cfaSBram Moolenaar
32890455cfaSBram Moolenaar  call setreg('b', 'abcBc2','ca')
32990455cfaSBram Moolenaar  call Assert_reg('b', "v", "abcBabcBcabcBb\nabcBc2", "['abcBabcBcabcBb', 'abcBc2']", "abcBabcBcabcBb\nabcBc2", "['abcBabcBcabcBb', 'abcBc2']")
33090455cfaSBram Moolenaar  call Assert_regput('b', ['==', '=abcBabcBcabcBb', 'abcBc2='])
33190455cfaSBram Moolenaar
33290455cfaSBram Moolenaar  call setreg('b', 'abcBb2','b50a')
33390455cfaSBram Moolenaar  call Assert_reg('b', "\<C-V>50", "abcBabcBcabcBb\nabcBc2abcBb2", "['abcBabcBcabcBb', 'abcBc2abcBb2']", "abcBabcBcabcBb\nabcBc2abcBb2", "['abcBabcBcabcBb', 'abcBc2abcBb2']")
33490455cfaSBram Moolenaar  call Assert_regput('b', ['==', '=abcBabcBcabcBb                                    =', ' abcBc2abcBb2'])
33590455cfaSBram Moolenaar
33690455cfaSBram Moolenaar  call setreg('c', 'abcC', 'l')
33790455cfaSBram Moolenaar  call Assert_reg('c', 'V', "abcC\n", "['abcC']", "abcC\n", "['abcC']")
33890455cfaSBram Moolenaar  call Assert_regput('c', ['==', 'abcC', '=='])
33990455cfaSBram Moolenaar
34090455cfaSBram Moolenaar  call setreg('C', 'abcCl', 'l')
34190455cfaSBram Moolenaar  call Assert_reg('C', 'V', "abcC\nabcCl\n", "['abcC', 'abcCl']", "abcC\nabcCl\n", "['abcC', 'abcCl']")
34290455cfaSBram Moolenaar  call Assert_regput('c', ['==', 'abcC', 'abcCl', '=='])
34390455cfaSBram Moolenaar
34490455cfaSBram Moolenaar  call setreg('C', 'abcCc', 'c')
34590455cfaSBram Moolenaar  call Assert_reg('C', 'v', "abcC\nabcCl\nabcCc", "['abcC', 'abcCl', 'abcCc']", "abcC\nabcCl\nabcCc", "['abcC', 'abcCl', 'abcCc']")
34690455cfaSBram Moolenaar  call Assert_regput('c', ['==', '=abcC', 'abcCl', 'abcCc='])
34790455cfaSBram Moolenaar
34890455cfaSBram Moolenaar  call setreg('d', 'abcD', 'V')
34990455cfaSBram Moolenaar  call Assert_reg('d', 'V', "abcD\n", "['abcD']", "abcD\n", "['abcD']")
35090455cfaSBram Moolenaar  call Assert_regput('d', ['==', 'abcD', '=='])
35190455cfaSBram Moolenaar
35290455cfaSBram Moolenaar  call setreg('D', 'abcDb', 'b')
35390455cfaSBram Moolenaar  call Assert_reg('d', "\<C-V>5", "abcD\nabcDb", "['abcD', 'abcDb']", "abcD\nabcDb", "['abcD', 'abcDb']")
35490455cfaSBram Moolenaar  call Assert_regput('d', ['==', '=abcD =', ' abcDb'])
35590455cfaSBram Moolenaar
35690455cfaSBram Moolenaar  call setreg('e', 'abcE', 'b')
35790455cfaSBram Moolenaar  call Assert_reg('e', "\<C-V>4", "abcE", "['abcE']", "abcE", "['abcE']")
35890455cfaSBram Moolenaar  call Assert_regput('e', ['==', '=abcE='])
35990455cfaSBram Moolenaar
36090455cfaSBram Moolenaar  call setreg('E', 'abcEb', 'b')
36190455cfaSBram Moolenaar  call Assert_reg('E', "\<C-V>5", "abcE\nabcEb", "['abcE', 'abcEb']", "abcE\nabcEb", "['abcE', 'abcEb']")
36290455cfaSBram Moolenaar  call Assert_regput('e', ['==', '=abcE =', ' abcEb'])
36390455cfaSBram Moolenaar
36490455cfaSBram Moolenaar  call setreg('E', 'abcEl', 'l')
36590455cfaSBram Moolenaar  call Assert_reg('E', "V", "abcE\nabcEb\nabcEl\n", "['abcE', 'abcEb', 'abcEl']", "abcE\nabcEb\nabcEl\n", "['abcE', 'abcEb', 'abcEl']")
36690455cfaSBram Moolenaar  call Assert_regput('e', ['==', 'abcE', 'abcEb', 'abcEl', '=='])
36790455cfaSBram Moolenaar
36890455cfaSBram Moolenaar  call setreg('f', 'abcF', "\<C-v>")
36990455cfaSBram Moolenaar  call Assert_reg('f', "\<C-V>4", "abcF", "['abcF']", "abcF", "['abcF']")
37090455cfaSBram Moolenaar  call Assert_regput('f', ['==', '=abcF='])
37190455cfaSBram Moolenaar
37290455cfaSBram Moolenaar  call setreg('F', 'abcFc', 'c')
37390455cfaSBram Moolenaar  call Assert_reg('F', "v", "abcF\nabcFc", "['abcF', 'abcFc']", "abcF\nabcFc", "['abcF', 'abcFc']")
37490455cfaSBram Moolenaar  call Assert_regput('f', ['==', '=abcF', 'abcFc='])
37590455cfaSBram Moolenaar
37690455cfaSBram Moolenaar  call setreg('g', 'abcG', 'b10')
37790455cfaSBram Moolenaar  call Assert_reg('g', "\<C-V>10", "abcG", "['abcG']", "abcG", "['abcG']")
37890455cfaSBram Moolenaar  call Assert_regput('g', ['==', '=abcG      ='])
37990455cfaSBram Moolenaar
38090455cfaSBram Moolenaar  call setreg('h', 'abcH', "\<C-v>10")
38190455cfaSBram Moolenaar  call Assert_reg('h', "\<C-V>10", "abcH", "['abcH']", "abcH", "['abcH']")
38290455cfaSBram Moolenaar  call Assert_regput('h', ['==', '=abcH      ='])
38390455cfaSBram Moolenaar
38490455cfaSBram Moolenaar  call setreg('I', 'abcI')
38590455cfaSBram Moolenaar  call Assert_reg('I', "v", "abcI", "['abcI']", "abcI", "['abcI']")
38690455cfaSBram Moolenaar  call Assert_regput('I', ['==', '=abcI='])
38790455cfaSBram Moolenaar
388339d60c8SBram Moolenaar  " Appending NL with setreg()
389339d60c8SBram Moolenaar  call setreg('a', 'abcA2', 'c')
390339d60c8SBram Moolenaar  call setreg('b', 'abcB2', 'v')
391339d60c8SBram Moolenaar  call setreg('c', 'abcC2', 'l')
392339d60c8SBram Moolenaar  call setreg('d', 'abcD2', 'V')
393339d60c8SBram Moolenaar  call setreg('e', 'abcE2', 'b')
394339d60c8SBram Moolenaar  call setreg('f', 'abcF2', "\<C-v>")
395339d60c8SBram Moolenaar  call setreg('g', 'abcG2', 'b10')
396339d60c8SBram Moolenaar  call setreg('h', 'abcH2', "\<C-v>10")
397339d60c8SBram Moolenaar  call setreg('I', 'abcI2')
398339d60c8SBram Moolenaar
399339d60c8SBram Moolenaar  call setreg('A', "\n")
400339d60c8SBram Moolenaar  call Assert_reg('A', 'V', "abcA2\n", "['abcA2']", "abcA2\n", "['abcA2']")
401339d60c8SBram Moolenaar  call Assert_regput('A', ['==', 'abcA2', '=='])
402339d60c8SBram Moolenaar
403339d60c8SBram Moolenaar  call setreg('B', "\n", 'c')
404339d60c8SBram Moolenaar  call Assert_reg('B', 'v', "abcB2\n", "['abcB2', '']", "abcB2\n", "['abcB2', '']")
405339d60c8SBram Moolenaar  call Assert_regput('B', ['==', '=abcB2', '='])
406339d60c8SBram Moolenaar
407339d60c8SBram Moolenaar  call setreg('C', "\n")
408339d60c8SBram Moolenaar  call Assert_reg('C', 'V', "abcC2\n\n", "['abcC2', '']", "abcC2\n\n", "['abcC2', '']")
409339d60c8SBram Moolenaar  call Assert_regput('C', ['==', 'abcC2', '', '=='])
410339d60c8SBram Moolenaar
411339d60c8SBram Moolenaar  call setreg('D', "\n", 'l')
412339d60c8SBram Moolenaar  call Assert_reg('D', 'V', "abcD2\n\n", "['abcD2', '']", "abcD2\n\n", "['abcD2', '']")
413339d60c8SBram Moolenaar  call Assert_regput('D', ['==', 'abcD2', '', '=='])
414339d60c8SBram Moolenaar
415339d60c8SBram Moolenaar  call setreg('E', "\n")
416339d60c8SBram Moolenaar  call Assert_reg('E', 'V', "abcE2\n\n", "['abcE2', '']", "abcE2\n\n", "['abcE2', '']")
417339d60c8SBram Moolenaar  call Assert_regput('E', ['==', 'abcE2', '', '=='])
418339d60c8SBram Moolenaar
419339d60c8SBram Moolenaar  call setreg('F', "\n", 'b')
420339d60c8SBram Moolenaar  call Assert_reg('F', "\<C-V>0", "abcF2\n", "['abcF2', '']", "abcF2\n", "['abcF2', '']")
421339d60c8SBram Moolenaar  call Assert_regput('F', ['==', '=abcF2=', ' '])
422339d60c8SBram Moolenaar
423339d60c8SBram Moolenaar  " Setting lists with setreg()
424339d60c8SBram Moolenaar  call setreg('a', ['abcA3'], 'c')
425339d60c8SBram Moolenaar  call Assert_reg('a', 'v', "abcA3", "['abcA3']", "abcA3", "['abcA3']")
426339d60c8SBram Moolenaar  call Assert_regput('a', ['==', '=abcA3='])
427339d60c8SBram Moolenaar
428339d60c8SBram Moolenaar  call setreg('b', ['abcB3'], 'l')
429339d60c8SBram Moolenaar  call Assert_reg('b', 'V', "abcB3\n", "['abcB3']", "abcB3\n", "['abcB3']")
430339d60c8SBram Moolenaar  call Assert_regput('b', ['==', 'abcB3', '=='])
431339d60c8SBram Moolenaar
432339d60c8SBram Moolenaar  call setreg('c', ['abcC3'], 'b')
433339d60c8SBram Moolenaar  call Assert_reg('c', "\<C-V>5", "abcC3", "['abcC3']", "abcC3", "['abcC3']")
434339d60c8SBram Moolenaar  call Assert_regput('c', ['==', '=abcC3='])
435339d60c8SBram Moolenaar
436339d60c8SBram Moolenaar  call setreg('d', ['abcD3'])
437339d60c8SBram Moolenaar  call Assert_reg('d', 'V', "abcD3\n", "['abcD3']", "abcD3\n", "['abcD3']")
438339d60c8SBram Moolenaar  call Assert_regput('d', ['==', 'abcD3', '=='])
439339d60c8SBram Moolenaar
440339d60c8SBram Moolenaar  call setreg('e', [1, 2, 'abc', 3])
441339d60c8SBram Moolenaar  call Assert_reg('e', 'V', "1\n2\nabc\n3\n", "['1', '2', 'abc', '3']", "1\n2\nabc\n3\n", "['1', '2', 'abc', '3']")
442339d60c8SBram Moolenaar  call Assert_regput('e', ['==', '1', '2', 'abc', '3', '=='])
443339d60c8SBram Moolenaar
444339d60c8SBram Moolenaar  call setreg('f', [1, 2, 3])
445339d60c8SBram Moolenaar  call Assert_reg('f', 'V', "1\n2\n3\n", "['1', '2', '3']", "1\n2\n3\n", "['1', '2', '3']")
446339d60c8SBram Moolenaar  call Assert_regput('f', ['==', '1', '2', '3', '=='])
447339d60c8SBram Moolenaar
448339d60c8SBram Moolenaar  " Appending lists with setreg()
449339d60c8SBram Moolenaar  call setreg('A', ['abcA3c'], 'c')
450339d60c8SBram Moolenaar  call Assert_reg('A', 'v', "abcA3\nabcA3c", "['abcA3', 'abcA3c']", "abcA3\nabcA3c", "['abcA3', 'abcA3c']")
451339d60c8SBram Moolenaar  call Assert_regput('A', ['==', '=abcA3', 'abcA3c='])
452339d60c8SBram Moolenaar
453339d60c8SBram Moolenaar  call setreg('b', ['abcB3l'], 'la')
454339d60c8SBram Moolenaar  call Assert_reg('b', 'V', "abcB3\nabcB3l\n", "['abcB3', 'abcB3l']", "abcB3\nabcB3l\n", "['abcB3', 'abcB3l']")
455339d60c8SBram Moolenaar  call Assert_regput('b', ['==', 'abcB3', 'abcB3l', '=='])
456339d60c8SBram Moolenaar
457339d60c8SBram Moolenaar  call setreg('C', ['abcC3b'], 'lb')
458339d60c8SBram Moolenaar  call Assert_reg('C', "\<C-V>6", "abcC3\nabcC3b", "['abcC3', 'abcC3b']", "abcC3\nabcC3b", "['abcC3', 'abcC3b']")
459339d60c8SBram Moolenaar  call Assert_regput('C', ['==', '=abcC3 =', ' abcC3b'])
460339d60c8SBram Moolenaar
461339d60c8SBram Moolenaar  call setreg('D', ['abcD32'])
462339d60c8SBram Moolenaar  call Assert_reg('D', 'V', "abcD3\nabcD32\n", "['abcD3', 'abcD32']", "abcD3\nabcD32\n", "['abcD3', 'abcD32']")
463339d60c8SBram Moolenaar  call Assert_regput('D', ['==', 'abcD3', 'abcD32', '=='])
464339d60c8SBram Moolenaar
465339d60c8SBram Moolenaar  call setreg('A', ['abcA32'])
466339d60c8SBram Moolenaar  call Assert_reg('A', 'V', "abcA3\nabcA3c\nabcA32\n", "['abcA3', 'abcA3c', 'abcA32']", "abcA3\nabcA3c\nabcA32\n", "['abcA3', 'abcA3c', 'abcA32']")
467339d60c8SBram Moolenaar  call Assert_regput('A', ['==', 'abcA3', 'abcA3c', 'abcA32', '=='])
468339d60c8SBram Moolenaar
469339d60c8SBram Moolenaar  call setreg('B', ['abcB3c'], 'c')
470339d60c8SBram Moolenaar  call Assert_reg('B', 'v', "abcB3\nabcB3l\nabcB3c", "['abcB3', 'abcB3l', 'abcB3c']", "abcB3\nabcB3l\nabcB3c", "['abcB3', 'abcB3l', 'abcB3c']")
471339d60c8SBram Moolenaar  call Assert_regput('B', ['==', '=abcB3', 'abcB3l', 'abcB3c='])
472339d60c8SBram Moolenaar
473339d60c8SBram Moolenaar  call setreg('C', ['abcC3l'], 'l')
474339d60c8SBram Moolenaar  call Assert_reg('C', 'V', "abcC3\nabcC3b\nabcC3l\n", "['abcC3', 'abcC3b', 'abcC3l']", "abcC3\nabcC3b\nabcC3l\n", "['abcC3', 'abcC3b', 'abcC3l']")
475339d60c8SBram Moolenaar  call Assert_regput('C', ['==', 'abcC3', 'abcC3b', 'abcC3l', '=='])
476339d60c8SBram Moolenaar
477339d60c8SBram Moolenaar  call setreg('D', ['abcD3b'], 'b')
478339d60c8SBram Moolenaar  call Assert_reg('D', "\<C-V>6", "abcD3\nabcD32\nabcD3b", "['abcD3', 'abcD32', 'abcD3b']", "abcD3\nabcD32\nabcD3b", "['abcD3', 'abcD32', 'abcD3b']")
479339d60c8SBram Moolenaar  call Assert_regput('D', ['==', '=abcD3 =', ' abcD32', ' abcD3b'])
480339d60c8SBram Moolenaar
481339d60c8SBram Moolenaar  " Appending lists with NL with setreg()
482339d60c8SBram Moolenaar  call setreg('A', ["\n", 'abcA3l2'], 'l')
483339d60c8SBram Moolenaar  call Assert_reg('A', "V", "abcA3\nabcA3c\nabcA32\n\n\nabcA3l2\n", "['abcA3', 'abcA3c', 'abcA32', '\n', 'abcA3l2']", "abcA3\nabcA3c\nabcA32\n\n\nabcA3l2\n", "['abcA3', 'abcA3c', 'abcA32', '\n', 'abcA3l2']")
484339d60c8SBram Moolenaar  call Assert_regput('A', ['==', 'abcA3', 'abcA3c', 'abcA32', "\n", 'abcA3l2', '=='])
485339d60c8SBram Moolenaar
486339d60c8SBram Moolenaar  call setreg('B', ["\n", 'abcB3c2'], 'c')
487339d60c8SBram Moolenaar  call Assert_reg('B', "v", "abcB3\nabcB3l\nabcB3c\n\n\nabcB3c2", "['abcB3', 'abcB3l', 'abcB3c', '\n', 'abcB3c2']", "abcB3\nabcB3l\nabcB3c\n\n\nabcB3c2", "['abcB3', 'abcB3l', 'abcB3c', '\n', 'abcB3c2']")
488339d60c8SBram Moolenaar  call Assert_regput('B', ['==', '=abcB3', 'abcB3l', 'abcB3c', "\n", 'abcB3c2='])
489339d60c8SBram Moolenaar
490339d60c8SBram Moolenaar  call setreg('C', ["\n", 'abcC3b2'], 'b')
491339d60c8SBram Moolenaar  call Assert_reg('C', "7", "abcC3\nabcC3b\nabcC3l\n\n\nabcC3b2", "['abcC3', 'abcC3b', 'abcC3l', '\n', 'abcC3b2']", "abcC3\nabcC3b\nabcC3l\n\n\nabcC3b2", "['abcC3', 'abcC3b', 'abcC3l', '\n', 'abcC3b2']")
492339d60c8SBram Moolenaar  call Assert_regput('C', ['==', '=abcC3  =', ' abcC3b', ' abcC3l', " \n", ' abcC3b2'])
493339d60c8SBram Moolenaar
494339d60c8SBram Moolenaar  call setreg('D', ["\n", 'abcD3b50'],'b50')
495339d60c8SBram Moolenaar  call Assert_reg('D', "50", "abcD3\nabcD32\nabcD3b\n\n\nabcD3b50", "['abcD3', 'abcD32', 'abcD3b', '\n', 'abcD3b50']", "abcD3\nabcD32\nabcD3b\n\n\nabcD3b50", "['abcD3', 'abcD32', 'abcD3b', '\n', 'abcD3b50']")
496339d60c8SBram Moolenaar  call Assert_regput('D', ['==', '=abcD3                                             =', ' abcD32', ' abcD3b', " \n", ' abcD3b50'])
497339d60c8SBram Moolenaar
498339d60c8SBram Moolenaar  " Setting lists with NLs with setreg()
499339d60c8SBram Moolenaar  call setreg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2"])
500339d60c8SBram Moolenaar  call Assert_reg('a', "V", "abcA4-0\n\n\nabcA4-2\n\n\nabcA4-3\nabcA4-4\nabcA4-4-2\n", "['abcA4-0', '\n', 'abcA4-2\n', '\nabcA4-3', 'abcA4-4\nabcA4-4-2']", "abcA4-0\n\n\nabcA4-2\n\n\nabcA4-3\nabcA4-4\nabcA4-4-2\n", "['abcA4-0', '\n', 'abcA4-2\n', '\nabcA4-3', 'abcA4-4\nabcA4-4-2']")
501339d60c8SBram Moolenaar  call Assert_regput('a', ['==', 'abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2", '=='])
502339d60c8SBram Moolenaar
503339d60c8SBram Moolenaar  call setreg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2"], 'c')
504339d60c8SBram Moolenaar  call Assert_reg('b', "v", "abcB4c-0\n\n\nabcB4c-2\n\n\nabcB4c-3\nabcB4c-4\nabcB4c-4-2", "['abcB4c-0', '\n', 'abcB4c-2\n', '\nabcB4c-3', 'abcB4c-4\nabcB4c-4-2']", "abcB4c-0\n\n\nabcB4c-2\n\n\nabcB4c-3\nabcB4c-4\nabcB4c-4-2", "['abcB4c-0', '\n', 'abcB4c-2\n', '\nabcB4c-3', 'abcB4c-4\nabcB4c-4-2']")
505339d60c8SBram Moolenaar  call Assert_regput('b', ['==', '=abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2="])
506339d60c8SBram Moolenaar
507339d60c8SBram Moolenaar  call setreg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2"], 'l')
508339d60c8SBram Moolenaar  call Assert_reg('c', "V", "abcC4l-0\n\n\nabcC4l-2\n\n\nabcC4l-3\nabcC4l-4\nabcC4l-4-2\n", "['abcC4l-0', '\n', 'abcC4l-2\n', '\nabcC4l-3', 'abcC4l-4\nabcC4l-4-2']", "abcC4l-0\n\n\nabcC4l-2\n\n\nabcC4l-3\nabcC4l-4\nabcC4l-4-2\n", "['abcC4l-0', '\n', 'abcC4l-2\n', '\nabcC4l-3', 'abcC4l-4\nabcC4l-4-2']")
509339d60c8SBram Moolenaar  call Assert_regput('c', ['==', 'abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2", '=='])
510339d60c8SBram Moolenaar
511339d60c8SBram Moolenaar  call setreg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\nabcD4b-4-2"], 'b')
512339d60c8SBram Moolenaar  call Assert_reg('d', "19", "abcD4b-0\n\n\nabcD4b-2\n\n\nabcD4b-3\nabcD4b-4\nabcD4b-4-2", "['abcD4b-0', '\n', 'abcD4b-2\n', '\nabcD4b-3', 'abcD4b-4\nabcD4b-4-2']", "abcD4b-0\n\n\nabcD4b-2\n\n\nabcD4b-3\nabcD4b-4\nabcD4b-4-2", "['abcD4b-0', '\n', 'abcD4b-2\n', '\nabcD4b-3', 'abcD4b-4\nabcD4b-4-2']")
513339d60c8SBram Moolenaar  call Assert_regput('d', ['==', '=abcD4b-0           =', " \n", " abcD4b-2\n", " \nabcD4b-3", " abcD4b-4\nabcD4b-4-2"])
514339d60c8SBram Moolenaar
515339d60c8SBram Moolenaar  call setreg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4b10-4\nabcE4b10-4-2"], 'b10')
516339d60c8SBram Moolenaar  call Assert_reg('e', "10", "abcE4b10-0\n\n\nabcE4b10-2\n\n\nabcE4b10-3\nabcE4b10-4\nabcE4b10-4-2", "['abcE4b10-0', '\n', 'abcE4b10-2\n', '\nabcE4b10-3', 'abcE4b10-4\nabcE4b10-4-2']", "abcE4b10-0\n\n\nabcE4b10-2\n\n\nabcE4b10-3\nabcE4b10-4\nabcE4b10-4-2", "['abcE4b10-0', '\n', 'abcE4b10-2\n', '\nabcE4b10-3', 'abcE4b10-4\nabcE4b10-4-2']")
517339d60c8SBram Moolenaar  call Assert_regput('e', ['==', '=abcE4b10-0=', " \n", " abcE4b10-2\n", " \nabcE4b10-3", " abcE4b10-4\nabcE4b10-4-2"])
518339d60c8SBram Moolenaar
519339d60c8SBram Moolenaar  " Search and expressions
520339d60c8SBram Moolenaar  call setreg('/', ['abc/'])
521339d60c8SBram Moolenaar  call Assert_reg('/', 'v', "abc/", "['abc/']", "abc/", "['abc/']")
522339d60c8SBram Moolenaar  call Assert_regput('/', ['==', '=abc/='])
523339d60c8SBram Moolenaar
524339d60c8SBram Moolenaar  call setreg('/', ["abc/\n"])
525339d60c8SBram Moolenaar  call Assert_reg('/', 'v', "abc/\n", "['abc/\n']", "abc/\n", "['abc/\n']")
526339d60c8SBram Moolenaar  call Assert_regput('/', ['==', "=abc/\n="])
527339d60c8SBram Moolenaar
528339d60c8SBram Moolenaar  call setreg('=', ['"abc/"'])
529339d60c8SBram Moolenaar  call Assert_reg('=', 'v', "abc/", "['abc/']", '"abc/"', "['\"abc/\"']")
530339d60c8SBram Moolenaar
531339d60c8SBram Moolenaar  call setreg('=', ["\"abc/\n\""])
532339d60c8SBram Moolenaar  call Assert_reg('=', 'v', "abc/\n", "['abc/\n']", "\"abc/\n\"", "['\"abc/\n\"']")
533339d60c8SBram Moolenaar
534339d60c8SBram Moolenaar  " System clipboard
535339d60c8SBram Moolenaar  if has('clipboard')
536339d60c8SBram Moolenaar    new | only!
537339d60c8SBram Moolenaar    call setline(1, ['clipboard contents', 'something else'])
538339d60c8SBram Moolenaar    " Save and restore system clipboard.
539339d60c8SBram Moolenaar    " If no connection to X-Server is possible, test should succeed.
540339d60c8SBram Moolenaar    let _clipreg = ['*', getreg('*'), getregtype('*')]
541339d60c8SBram Moolenaar    let _clipopt = &cb
542339d60c8SBram Moolenaar    let &cb='unnamed'
543339d60c8SBram Moolenaar    1y
544339d60c8SBram Moolenaar    call Assert_reg('*', 'V', "clipboard contents\n", "['clipboard contents']", "clipboard contents\n", "['clipboard contents']")
545339d60c8SBram Moolenaar    tabdo :windo :echo "hi"
546339d60c8SBram Moolenaar    2y
547339d60c8SBram Moolenaar    call Assert_reg('*', 'V', "something else\n", "['something else']", "something else\n", "['something else']")
548339d60c8SBram Moolenaar    let &cb=_clipopt
549339d60c8SBram Moolenaar    call call('setreg', _clipreg)
550339d60c8SBram Moolenaar    enew!
551339d60c8SBram Moolenaar  endif
552339d60c8SBram Moolenaar
55308f4157cSBram Moolenaar  " Error cases
55408f4157cSBram Moolenaar  call assert_fails('call setreg()', 'E119:')
55508f4157cSBram Moolenaar  call assert_fails('call setreg(1)', 'E119:')
55608f4157cSBram Moolenaar  call assert_fails('call setreg(1, 2, 3, 4)', 'E118:')
55708f4157cSBram Moolenaar  call assert_fails('call setreg([], 2)', 'E730:')
55808f4157cSBram Moolenaar  call assert_fails('call setreg(1, 2, [])', 'E730:')
55908f4157cSBram Moolenaar  call assert_fails('call setreg("/", ["1", "2"])', 'E883:')
56008f4157cSBram Moolenaar  call assert_fails('call setreg("=", ["1", "2"])', 'E883:')
56108f4157cSBram Moolenaar  call assert_fails('call setreg(1, ["", "", [], ""])', 'E730:')
56208f4157cSBram Moolenaarendfunc
56390455cfaSBram Moolenaar
564ae95a394SBram Moolenaarfunc Test_curly_assignment()
565ae95a394SBram Moolenaar  let s:svar = 'svar'
566ae95a394SBram Moolenaar  let g:gvar = 'gvar'
567ae95a394SBram Moolenaar  let lname = 'gvar'
568ae95a394SBram Moolenaar  let gname = 'gvar'
569ae95a394SBram Moolenaar  let {'s:'.lname} = {'g:'.gname}
570ae95a394SBram Moolenaar  call assert_equal('gvar', s:gvar)
571ae95a394SBram Moolenaar  let s:gvar = ''
572ae95a394SBram Moolenaar  let { 's:'.lname } = { 'g:'.gname }
573ae95a394SBram Moolenaar  call assert_equal('gvar', s:gvar)
574ae95a394SBram Moolenaar  let s:gvar = ''
575ae95a394SBram Moolenaar  let { 's:' . lname } = { 'g:' . gname }
576ae95a394SBram Moolenaar  call assert_equal('gvar', s:gvar)
577ae95a394SBram Moolenaar  let s:gvar = ''
578ae95a394SBram Moolenaar  let { 's:' .. lname } = { 'g:' .. gname }
579ae95a394SBram Moolenaar  call assert_equal('gvar', s:gvar)
580ae95a394SBram Moolenaar
581ae95a394SBram Moolenaar  unlet s:svar
582ae95a394SBram Moolenaar  unlet s:gvar
583ae95a394SBram Moolenaar  unlet g:gvar
584ae95a394SBram Moolenaarendfunc
585ae95a394SBram Moolenaar
5868b633135SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
587