1fabaf753SBram Moolenaar" Tests for various eval things. 2fabaf753SBram Moolenaar 3*2b6ef856SBram Moolenaarsource view_util.vim 4*2b6ef856SBram 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 22*2b6ef856SBram Moolenaar echoerr 'wrong again' 23*2b6ef856SBram 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') 3878a16b0fSBram 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())) 4292b83ccfSBram Moolenaar call assert_fails('call mkdir([])', 'E730') 4392b83ccfSBram 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() 68c0f5a78cSBram Moolenaar call assert_fails("for x in 99", 'E714:') 69c0f5a78cSBram Moolenaar call assert_fails("for x in 'asdf'", 'E714:') 70c0f5a78cSBram Moolenaar call assert_fails("for x in {'a': 9}", 'E714:') 71c0f5a78cSBram Moolenaarendfunc 7205500eceSBram Moolenaar 7305500eceSBram Moolenaarfunc Test_readfile_binary() 7405500eceSBram Moolenaar new 7505500eceSBram Moolenaar call setline(1, ['one', 'two', 'three']) 7605500eceSBram Moolenaar setlocal ff=dos 7760a8de28SBram Moolenaar silent write XReadfile 78a0d1fef4SBram Moolenaar let lines = 'XReadfile'->readfile() 7905500eceSBram Moolenaar call assert_equal(['one', 'two', 'three'], lines) 8005500eceSBram Moolenaar let lines = readfile('XReadfile', '', 2) 8105500eceSBram Moolenaar call assert_equal(['one', 'two'], lines) 8205500eceSBram Moolenaar let lines = readfile('XReadfile', 'b') 8305500eceSBram Moolenaar call assert_equal(["one\r", "two\r", "three\r", ""], lines) 8405500eceSBram Moolenaar let lines = readfile('XReadfile', 'b', 2) 8505500eceSBram Moolenaar call assert_equal(["one\r", "two\r"], lines) 8605500eceSBram Moolenaar 8705500eceSBram Moolenaar bwipe! 8805500eceSBram Moolenaar call delete('XReadfile') 8905500eceSBram Moolenaarendfunc 904b9e91f0SBram Moolenaar 914b9e91f0SBram Moolenaarfunc Test_let_errmsg() 924b9e91f0SBram Moolenaar call assert_fails('let v:errmsg = []', 'E730:') 934b9e91f0SBram Moolenaar let v:errmsg = '' 944b9e91f0SBram Moolenaar call assert_fails('let v:errmsg = []', 'E730:') 954b9e91f0SBram Moolenaar let v:errmsg = '' 964b9e91f0SBram Moolenaarendfunc 970f248b00SBram Moolenaar 980f248b00SBram Moolenaarfunc Test_string_concatenation() 990f248b00SBram Moolenaar call assert_equal('ab', 'a'.'b') 1000f248b00SBram Moolenaar call assert_equal('ab', 'a' .'b') 1010f248b00SBram Moolenaar call assert_equal('ab', 'a'. 'b') 1020f248b00SBram Moolenaar call assert_equal('ab', 'a' . 'b') 1030f248b00SBram Moolenaar 1040f248b00SBram Moolenaar call assert_equal('ab', 'a'..'b') 1050f248b00SBram Moolenaar call assert_equal('ab', 'a' ..'b') 1060f248b00SBram Moolenaar call assert_equal('ab', 'a'.. 'b') 1070f248b00SBram Moolenaar call assert_equal('ab', 'a' .. 'b') 1080f248b00SBram Moolenaar 1090f248b00SBram Moolenaar let a = 'a' 1100f248b00SBram Moolenaar let b = 'b' 1110f248b00SBram Moolenaar let a .= b 1120f248b00SBram Moolenaar call assert_equal('ab', a) 1130f248b00SBram Moolenaar 1140f248b00SBram Moolenaar let a = 'a' 1150f248b00SBram Moolenaar let a.=b 1160f248b00SBram Moolenaar call assert_equal('ab', a) 1170f248b00SBram Moolenaar 1180f248b00SBram Moolenaar let a = 'a' 1190f248b00SBram Moolenaar let a ..= b 1200f248b00SBram Moolenaar call assert_equal('ab', a) 1210f248b00SBram Moolenaar 1220f248b00SBram Moolenaar let a = 'a' 1230f248b00SBram Moolenaar let a..=b 1240f248b00SBram Moolenaar call assert_equal('ab', a) 1250f248b00SBram Moolenaarendfunc 126558ca4aeSBram Moolenaar 12760a8de28SBram Moolenaar" Test fix for issue #4507 12860a8de28SBram Moolenaarfunc Test_skip_after_throw() 12960a8de28SBram Moolenaar try 13060a8de28SBram Moolenaar throw 'something' 13160a8de28SBram Moolenaar let x = wincol() || &ts 13260a8de28SBram Moolenaar catch /something/ 13360a8de28SBram Moolenaar endtry 13460a8de28SBram Moolenaarendfunc 13560a8de28SBram Moolenaar 136558ca4aeSBram Moolenaarscriptversion 2 137558ca4aeSBram Moolenaarfunc Test_string_concat_scriptversion2() 13893a4879cSBram Moolenaar call assert_true(has('vimscript-2')) 139558ca4aeSBram Moolenaar let a = 'a' 140558ca4aeSBram Moolenaar let b = 'b' 141558ca4aeSBram Moolenaar 142558ca4aeSBram Moolenaar call assert_fails('echo a . b', 'E15:') 143558ca4aeSBram Moolenaar call assert_fails('let a .= b', 'E985:') 144558ca4aeSBram Moolenaar call assert_fails('let vers = 1.2.3', 'E15:') 145558ca4aeSBram Moolenaar 146558ca4aeSBram Moolenaar if has('float') 147558ca4aeSBram Moolenaar let f = .5 148558ca4aeSBram Moolenaar call assert_equal(0.5, f) 149558ca4aeSBram Moolenaar endif 150558ca4aeSBram Moolenaarendfunc 151558ca4aeSBram Moolenaar 152558ca4aeSBram Moolenaarscriptversion 1 153558ca4aeSBram Moolenaarfunc Test_string_concat_scriptversion1() 15493a4879cSBram Moolenaar call assert_true(has('vimscript-1')) 155558ca4aeSBram Moolenaar let a = 'a' 156558ca4aeSBram Moolenaar let b = 'b' 157558ca4aeSBram Moolenaar 158558ca4aeSBram Moolenaar echo a . b 159558ca4aeSBram Moolenaar let a .= b 160558ca4aeSBram Moolenaar let vers = 1.2.3 161558ca4aeSBram Moolenaar call assert_equal('123', vers) 162558ca4aeSBram Moolenaar 163558ca4aeSBram Moolenaar if has('float') 164558ca4aeSBram Moolenaar call assert_fails('let f = .5', 'E15:') 165558ca4aeSBram Moolenaar endif 166558ca4aeSBram Moolenaarendfunc 167558ca4aeSBram Moolenaar 168d2e716e6SBram Moolenaarscriptversion 3 169d2e716e6SBram Moolenaarfunc Test_vvar_scriptversion3() 17093a4879cSBram Moolenaar call assert_true(has('vimscript-3')) 171d2e716e6SBram Moolenaar call assert_fails('echo version', 'E121:') 172d2e716e6SBram Moolenaar call assert_false(exists('version')) 173d2e716e6SBram Moolenaar let version = 1 174d2e716e6SBram Moolenaar call assert_equal(1, version) 175d2e716e6SBram Moolenaarendfunc 176d2e716e6SBram Moolenaar 177d2e716e6SBram Moolenaarscriptversion 2 178d2e716e6SBram Moolenaarfunc Test_vvar_scriptversion2() 179d2e716e6SBram Moolenaar call assert_true(exists('version')) 180d2e716e6SBram Moolenaar echo version 181d2e716e6SBram Moolenaar call assert_fails('let version = 1', 'E46:') 182d2e716e6SBram Moolenaar call assert_equal(v:version, version) 18337df9a44SBram Moolenaar 18437df9a44SBram Moolenaar call assert_equal(v:version, v:versionlong / 10000) 18537df9a44SBram Moolenaar call assert_true(v:versionlong > 8011525) 186d2e716e6SBram Moolenaarendfunc 187d2e716e6SBram Moolenaar 18861343f0cSBram Moolenaarfunc Test_dict_access_scriptversion2() 18961343f0cSBram Moolenaar let l:x = {'foo': 1} 19061343f0cSBram Moolenaar 19161343f0cSBram Moolenaar call assert_false(0 && l:x.foo) 19261343f0cSBram Moolenaar call assert_true(1 && l:x.foo) 19361343f0cSBram Moolenaarendfunc 19461343f0cSBram Moolenaar 19560a8de28SBram Moolenaarscriptversion 4 19660a8de28SBram Moolenaarfunc Test_vvar_scriptversion4() 197af914383SBram Moolenaar call assert_true(has('vimscript-4')) 19860a8de28SBram Moolenaar call assert_equal(17, 017) 199c17e66c5SBram Moolenaar call assert_equal(15, 0o17) 200c17e66c5SBram Moolenaar call assert_equal(15, 0O17) 20160a8de28SBram Moolenaar call assert_equal(18, 018) 20260a8de28SBram Moolenaar call assert_equal(64, 0b1'00'00'00) 20360a8de28SBram Moolenaar call assert_equal(1048576, 0x10'00'00) 204c17e66c5SBram Moolenaar call assert_equal(32768, 0o10'00'00) 20560a8de28SBram Moolenaar call assert_equal(1000000, 1'000'000) 206ea8dcf83SBram Moolenaar call assert_equal("1234", execute("echo 1'234")->trim()) 207ea8dcf83SBram Moolenaar call assert_equal('1 234', execute("echo 1''234")->trim()) 208ea8dcf83SBram Moolenaar call assert_fails("echo 1'''234", 'E115:') 20960a8de28SBram Moolenaarendfunc 21060a8de28SBram Moolenaar 21160a8de28SBram Moolenaarscriptversion 1 21260a8de28SBram Moolenaarfunc Test_vvar_scriptversion1() 21360a8de28SBram Moolenaar call assert_equal(15, 017) 214c17e66c5SBram Moolenaar call assert_equal(15, 0o17) 215c17e66c5SBram Moolenaar call assert_equal(15, 0O17) 21660a8de28SBram Moolenaar call assert_equal(18, 018) 21760a8de28SBram Moolenaarendfunc 21860a8de28SBram Moolenaar 21960a8de28SBram Moolenaarfunc Test_scriptversion_fail() 220558ca4aeSBram Moolenaar call writefile(['scriptversion 9'], 'Xversionscript') 221558ca4aeSBram Moolenaar call assert_fails('source Xversionscript', 'E999:') 222558ca4aeSBram Moolenaar call delete('Xversionscript') 223558ca4aeSBram Moolenaarendfunc 224b662591eSBram Moolenaar 2259d8d0b5cSBram Moolenaarfunc Test_execute_cmd_with_null() 226b662591eSBram Moolenaar call assert_fails('execute test_null_list()', 'E730:') 227b662591eSBram Moolenaar call assert_fails('execute test_null_dict()', 'E731:') 228b662591eSBram Moolenaar call assert_fails('execute test_null_blob()', 'E976:') 229b662591eSBram Moolenaar execute test_null_string() 230b662591eSBram Moolenaar call assert_fails('execute test_null_partial()', 'E729:') 23192b83ccfSBram Moolenaar call assert_fails('execute test_unknown()', 'E908:') 232b662591eSBram Moolenaar if has('job') 233b662591eSBram Moolenaar call assert_fails('execute test_null_job()', 'E908:') 234b662591eSBram Moolenaar call assert_fails('execute test_null_channel()', 'E908:') 235b662591eSBram Moolenaar endif 236b662591eSBram Moolenaarendfunc 237f9706e9dSBram Moolenaar 238f9706e9dSBram Moolenaarfunc Test_numbersize() 239f9706e9dSBram Moolenaar " This will fail on systems without 64 bit int support or when not configured 240f9706e9dSBram Moolenaar " correctly. 241f9706e9dSBram Moolenaar call assert_equal(64, v:numbersize) 242f9706e9dSBram Moolenaarendfunc 2438b633135SBram Moolenaar 24490455cfaSBram Moolenaarfunc Assert_reg(name, type, value, valuestr, expr, exprstr) 24590455cfaSBram Moolenaar call assert_equal(a:type, getregtype(a:name)) 24690455cfaSBram Moolenaar call assert_equal(a:value, getreg(a:name)) 24790455cfaSBram Moolenaar call assert_equal(a:valuestr, string(getreg(a:name, 0, 1))) 24890455cfaSBram Moolenaar call assert_equal(a:expr, getreg(a:name, 1)) 24990455cfaSBram Moolenaar call assert_equal(a:exprstr, string(getreg(a:name, 1, 1))) 25090455cfaSBram Moolenaarendfunc 25190455cfaSBram Moolenaar 25290455cfaSBram Moolenaarfunc Test_let_register() 25390455cfaSBram Moolenaar let @" = 'abc' 25490455cfaSBram Moolenaar call Assert_reg('"', 'v', "abc", "['abc']", "abc", "['abc']") 25590455cfaSBram Moolenaar let @" = "abc\n" 25690455cfaSBram Moolenaar call Assert_reg('"', 'V', "abc\n", "['abc']", "abc\n", "['abc']") 25790455cfaSBram Moolenaar let @" = "abc\<C-m>" 25890455cfaSBram Moolenaar call Assert_reg('"', 'V', "abc\r\n", "['abc\r']", "abc\r\n", "['abc\r']") 25990455cfaSBram Moolenaar let @= = '"abc"' 26090455cfaSBram Moolenaar call Assert_reg('=', 'v', "abc", "['abc']", '"abc"', "['\"abc\"']") 26190455cfaSBram Moolenaarendfunc 26290455cfaSBram Moolenaar 26390455cfaSBram Moolenaarfunc Assert_regput(name, result) 26490455cfaSBram Moolenaar new 26590455cfaSBram Moolenaar execute "silent normal! o==\n==\e\"" . a:name . "P" 26690455cfaSBram Moolenaar call assert_equal(a:result, getline(2, line('$'))) 26761fbb337SBram Moolenaar bwipe! 26890455cfaSBram Moolenaarendfunc 26990455cfaSBram Moolenaar 27090455cfaSBram Moolenaarfunc Test_setreg_basic() 27190455cfaSBram Moolenaar call setreg('a', 'abcA', 'c') 27290455cfaSBram Moolenaar call Assert_reg('a', 'v', "abcA", "['abcA']", "abcA", "['abcA']") 27390455cfaSBram Moolenaar call Assert_regput('a', ['==', '=abcA=']) 27490455cfaSBram Moolenaar 27590455cfaSBram Moolenaar call setreg('A', 'abcAc', 'c') 27690455cfaSBram Moolenaar call Assert_reg('A', 'v', "abcAabcAc", "['abcAabcAc']", "abcAabcAc", "['abcAabcAc']") 27790455cfaSBram Moolenaar call Assert_regput('a', ['==', '=abcAabcAc=']) 27890455cfaSBram Moolenaar 27990455cfaSBram Moolenaar call setreg('A', 'abcAl', 'l') 28090455cfaSBram Moolenaar call Assert_reg('A', 'V', "abcAabcAcabcAl\n", "['abcAabcAcabcAl']", "abcAabcAcabcAl\n", "['abcAabcAcabcAl']") 28190455cfaSBram Moolenaar call Assert_regput('a', ['==', 'abcAabcAcabcAl', '==']) 28290455cfaSBram Moolenaar 28390455cfaSBram Moolenaar call setreg('A', 'abcAc2','c') 28490455cfaSBram Moolenaar call Assert_reg('A', 'v', "abcAabcAcabcAl\nabcAc2", "['abcAabcAcabcAl', 'abcAc2']", "abcAabcAcabcAl\nabcAc2", "['abcAabcAcabcAl', 'abcAc2']") 28590455cfaSBram Moolenaar call Assert_regput('a', ['==', '=abcAabcAcabcAl', 'abcAc2=']) 28690455cfaSBram Moolenaar 28790455cfaSBram Moolenaar call setreg('b', 'abcB', 'v') 28890455cfaSBram Moolenaar call Assert_reg('b', 'v', "abcB", "['abcB']", "abcB", "['abcB']") 28990455cfaSBram Moolenaar call Assert_regput('b', ['==', '=abcB=']) 29090455cfaSBram Moolenaar 29190455cfaSBram Moolenaar call setreg('b', 'abcBc', 'ca') 29290455cfaSBram Moolenaar call Assert_reg('b', 'v', "abcBabcBc", "['abcBabcBc']", "abcBabcBc", "['abcBabcBc']") 29390455cfaSBram Moolenaar call Assert_regput('b', ['==', '=abcBabcBc=']) 29490455cfaSBram Moolenaar 29590455cfaSBram Moolenaar call setreg('b', 'abcBb', 'ba') 29690455cfaSBram Moolenaar call Assert_reg('b', "\<C-V>5", "abcBabcBcabcBb", "['abcBabcBcabcBb']", "abcBabcBcabcBb", "['abcBabcBcabcBb']") 29790455cfaSBram Moolenaar call Assert_regput('b', ['==', '=abcBabcBcabcBb=']) 29890455cfaSBram Moolenaar 29990455cfaSBram Moolenaar call setreg('b', 'abcBc2','ca') 30090455cfaSBram Moolenaar call Assert_reg('b', "v", "abcBabcBcabcBb\nabcBc2", "['abcBabcBcabcBb', 'abcBc2']", "abcBabcBcabcBb\nabcBc2", "['abcBabcBcabcBb', 'abcBc2']") 30190455cfaSBram Moolenaar call Assert_regput('b', ['==', '=abcBabcBcabcBb', 'abcBc2=']) 30290455cfaSBram Moolenaar 30390455cfaSBram Moolenaar call setreg('b', 'abcBb2','b50a') 30490455cfaSBram Moolenaar call Assert_reg('b', "\<C-V>50", "abcBabcBcabcBb\nabcBc2abcBb2", "['abcBabcBcabcBb', 'abcBc2abcBb2']", "abcBabcBcabcBb\nabcBc2abcBb2", "['abcBabcBcabcBb', 'abcBc2abcBb2']") 30590455cfaSBram Moolenaar call Assert_regput('b', ['==', '=abcBabcBcabcBb =', ' abcBc2abcBb2']) 30690455cfaSBram Moolenaar 30790455cfaSBram Moolenaar call setreg('c', 'abcC', 'l') 30890455cfaSBram Moolenaar call Assert_reg('c', 'V', "abcC\n", "['abcC']", "abcC\n", "['abcC']") 30990455cfaSBram Moolenaar call Assert_regput('c', ['==', 'abcC', '==']) 31090455cfaSBram Moolenaar 31190455cfaSBram Moolenaar call setreg('C', 'abcCl', 'l') 31290455cfaSBram Moolenaar call Assert_reg('C', 'V', "abcC\nabcCl\n", "['abcC', 'abcCl']", "abcC\nabcCl\n", "['abcC', 'abcCl']") 31390455cfaSBram Moolenaar call Assert_regput('c', ['==', 'abcC', 'abcCl', '==']) 31490455cfaSBram Moolenaar 31590455cfaSBram Moolenaar call setreg('C', 'abcCc', 'c') 31690455cfaSBram Moolenaar call Assert_reg('C', 'v', "abcC\nabcCl\nabcCc", "['abcC', 'abcCl', 'abcCc']", "abcC\nabcCl\nabcCc", "['abcC', 'abcCl', 'abcCc']") 31790455cfaSBram Moolenaar call Assert_regput('c', ['==', '=abcC', 'abcCl', 'abcCc=']) 31890455cfaSBram Moolenaar 31990455cfaSBram Moolenaar call setreg('d', 'abcD', 'V') 32090455cfaSBram Moolenaar call Assert_reg('d', 'V', "abcD\n", "['abcD']", "abcD\n", "['abcD']") 32190455cfaSBram Moolenaar call Assert_regput('d', ['==', 'abcD', '==']) 32290455cfaSBram Moolenaar 32390455cfaSBram Moolenaar call setreg('D', 'abcDb', 'b') 32490455cfaSBram Moolenaar call Assert_reg('d', "\<C-V>5", "abcD\nabcDb", "['abcD', 'abcDb']", "abcD\nabcDb", "['abcD', 'abcDb']") 32590455cfaSBram Moolenaar call Assert_regput('d', ['==', '=abcD =', ' abcDb']) 32690455cfaSBram Moolenaar 32790455cfaSBram Moolenaar call setreg('e', 'abcE', 'b') 32890455cfaSBram Moolenaar call Assert_reg('e', "\<C-V>4", "abcE", "['abcE']", "abcE", "['abcE']") 32990455cfaSBram Moolenaar call Assert_regput('e', ['==', '=abcE=']) 33090455cfaSBram Moolenaar 33190455cfaSBram Moolenaar call setreg('E', 'abcEb', 'b') 33290455cfaSBram Moolenaar call Assert_reg('E', "\<C-V>5", "abcE\nabcEb", "['abcE', 'abcEb']", "abcE\nabcEb", "['abcE', 'abcEb']") 33390455cfaSBram Moolenaar call Assert_regput('e', ['==', '=abcE =', ' abcEb']) 33490455cfaSBram Moolenaar 33590455cfaSBram Moolenaar call setreg('E', 'abcEl', 'l') 33690455cfaSBram Moolenaar call Assert_reg('E', "V", "abcE\nabcEb\nabcEl\n", "['abcE', 'abcEb', 'abcEl']", "abcE\nabcEb\nabcEl\n", "['abcE', 'abcEb', 'abcEl']") 33790455cfaSBram Moolenaar call Assert_regput('e', ['==', 'abcE', 'abcEb', 'abcEl', '==']) 33890455cfaSBram Moolenaar 33990455cfaSBram Moolenaar call setreg('f', 'abcF', "\<C-v>") 34090455cfaSBram Moolenaar call Assert_reg('f', "\<C-V>4", "abcF", "['abcF']", "abcF", "['abcF']") 34190455cfaSBram Moolenaar call Assert_regput('f', ['==', '=abcF=']) 34290455cfaSBram Moolenaar 34390455cfaSBram Moolenaar call setreg('F', 'abcFc', 'c') 34490455cfaSBram Moolenaar call Assert_reg('F', "v", "abcF\nabcFc", "['abcF', 'abcFc']", "abcF\nabcFc", "['abcF', 'abcFc']") 34590455cfaSBram Moolenaar call Assert_regput('f', ['==', '=abcF', 'abcFc=']) 34690455cfaSBram Moolenaar 34790455cfaSBram Moolenaar call setreg('g', 'abcG', 'b10') 34890455cfaSBram Moolenaar call Assert_reg('g', "\<C-V>10", "abcG", "['abcG']", "abcG", "['abcG']") 34990455cfaSBram Moolenaar call Assert_regput('g', ['==', '=abcG =']) 35090455cfaSBram Moolenaar 35190455cfaSBram Moolenaar call setreg('h', 'abcH', "\<C-v>10") 35290455cfaSBram Moolenaar call Assert_reg('h', "\<C-V>10", "abcH", "['abcH']", "abcH", "['abcH']") 35390455cfaSBram Moolenaar call Assert_regput('h', ['==', '=abcH =']) 35490455cfaSBram Moolenaar 35590455cfaSBram Moolenaar call setreg('I', 'abcI') 35690455cfaSBram Moolenaar call Assert_reg('I', "v", "abcI", "['abcI']", "abcI", "['abcI']") 35790455cfaSBram Moolenaar call Assert_regput('I', ['==', '=abcI=']) 35890455cfaSBram Moolenaar 359339d60c8SBram Moolenaar " Appending NL with setreg() 360339d60c8SBram Moolenaar call setreg('a', 'abcA2', 'c') 361339d60c8SBram Moolenaar call setreg('b', 'abcB2', 'v') 362339d60c8SBram Moolenaar call setreg('c', 'abcC2', 'l') 363339d60c8SBram Moolenaar call setreg('d', 'abcD2', 'V') 364339d60c8SBram Moolenaar call setreg('e', 'abcE2', 'b') 365339d60c8SBram Moolenaar call setreg('f', 'abcF2', "\<C-v>") 366339d60c8SBram Moolenaar call setreg('g', 'abcG2', 'b10') 367339d60c8SBram Moolenaar call setreg('h', 'abcH2', "\<C-v>10") 368339d60c8SBram Moolenaar call setreg('I', 'abcI2') 369339d60c8SBram Moolenaar 370339d60c8SBram Moolenaar call setreg('A', "\n") 371339d60c8SBram Moolenaar call Assert_reg('A', 'V', "abcA2\n", "['abcA2']", "abcA2\n", "['abcA2']") 372339d60c8SBram Moolenaar call Assert_regput('A', ['==', 'abcA2', '==']) 373339d60c8SBram Moolenaar 374339d60c8SBram Moolenaar call setreg('B', "\n", 'c') 375339d60c8SBram Moolenaar call Assert_reg('B', 'v', "abcB2\n", "['abcB2', '']", "abcB2\n", "['abcB2', '']") 376339d60c8SBram Moolenaar call Assert_regput('B', ['==', '=abcB2', '=']) 377339d60c8SBram Moolenaar 378339d60c8SBram Moolenaar call setreg('C', "\n") 379339d60c8SBram Moolenaar call Assert_reg('C', 'V', "abcC2\n\n", "['abcC2', '']", "abcC2\n\n", "['abcC2', '']") 380339d60c8SBram Moolenaar call Assert_regput('C', ['==', 'abcC2', '', '==']) 381339d60c8SBram Moolenaar 382339d60c8SBram Moolenaar call setreg('D', "\n", 'l') 383339d60c8SBram Moolenaar call Assert_reg('D', 'V', "abcD2\n\n", "['abcD2', '']", "abcD2\n\n", "['abcD2', '']") 384339d60c8SBram Moolenaar call Assert_regput('D', ['==', 'abcD2', '', '==']) 385339d60c8SBram Moolenaar 386339d60c8SBram Moolenaar call setreg('E', "\n") 387339d60c8SBram Moolenaar call Assert_reg('E', 'V', "abcE2\n\n", "['abcE2', '']", "abcE2\n\n", "['abcE2', '']") 388339d60c8SBram Moolenaar call Assert_regput('E', ['==', 'abcE2', '', '==']) 389339d60c8SBram Moolenaar 390339d60c8SBram Moolenaar call setreg('F', "\n", 'b') 391339d60c8SBram Moolenaar call Assert_reg('F', "\<C-V>0", "abcF2\n", "['abcF2', '']", "abcF2\n", "['abcF2', '']") 392339d60c8SBram Moolenaar call Assert_regput('F', ['==', '=abcF2=', ' ']) 393339d60c8SBram Moolenaar 394339d60c8SBram Moolenaar " Setting lists with setreg() 395339d60c8SBram Moolenaar call setreg('a', ['abcA3'], 'c') 396339d60c8SBram Moolenaar call Assert_reg('a', 'v', "abcA3", "['abcA3']", "abcA3", "['abcA3']") 397339d60c8SBram Moolenaar call Assert_regput('a', ['==', '=abcA3=']) 398339d60c8SBram Moolenaar 399339d60c8SBram Moolenaar call setreg('b', ['abcB3'], 'l') 400339d60c8SBram Moolenaar call Assert_reg('b', 'V', "abcB3\n", "['abcB3']", "abcB3\n", "['abcB3']") 401339d60c8SBram Moolenaar call Assert_regput('b', ['==', 'abcB3', '==']) 402339d60c8SBram Moolenaar 403339d60c8SBram Moolenaar call setreg('c', ['abcC3'], 'b') 404339d60c8SBram Moolenaar call Assert_reg('c', "\<C-V>5", "abcC3", "['abcC3']", "abcC3", "['abcC3']") 405339d60c8SBram Moolenaar call Assert_regput('c', ['==', '=abcC3=']) 406339d60c8SBram Moolenaar 407339d60c8SBram Moolenaar call setreg('d', ['abcD3']) 408339d60c8SBram Moolenaar call Assert_reg('d', 'V', "abcD3\n", "['abcD3']", "abcD3\n", "['abcD3']") 409339d60c8SBram Moolenaar call Assert_regput('d', ['==', 'abcD3', '==']) 410339d60c8SBram Moolenaar 411339d60c8SBram Moolenaar call setreg('e', [1, 2, 'abc', 3]) 412339d60c8SBram Moolenaar call Assert_reg('e', 'V', "1\n2\nabc\n3\n", "['1', '2', 'abc', '3']", "1\n2\nabc\n3\n", "['1', '2', 'abc', '3']") 413339d60c8SBram Moolenaar call Assert_regput('e', ['==', '1', '2', 'abc', '3', '==']) 414339d60c8SBram Moolenaar 415339d60c8SBram Moolenaar call setreg('f', [1, 2, 3]) 416339d60c8SBram Moolenaar call Assert_reg('f', 'V', "1\n2\n3\n", "['1', '2', '3']", "1\n2\n3\n", "['1', '2', '3']") 417339d60c8SBram Moolenaar call Assert_regput('f', ['==', '1', '2', '3', '==']) 418339d60c8SBram Moolenaar 419339d60c8SBram Moolenaar " Appending lists with setreg() 420339d60c8SBram Moolenaar call setreg('A', ['abcA3c'], 'c') 421339d60c8SBram Moolenaar call Assert_reg('A', 'v', "abcA3\nabcA3c", "['abcA3', 'abcA3c']", "abcA3\nabcA3c", "['abcA3', 'abcA3c']") 422339d60c8SBram Moolenaar call Assert_regput('A', ['==', '=abcA3', 'abcA3c=']) 423339d60c8SBram Moolenaar 424339d60c8SBram Moolenaar call setreg('b', ['abcB3l'], 'la') 425339d60c8SBram Moolenaar call Assert_reg('b', 'V', "abcB3\nabcB3l\n", "['abcB3', 'abcB3l']", "abcB3\nabcB3l\n", "['abcB3', 'abcB3l']") 426339d60c8SBram Moolenaar call Assert_regput('b', ['==', 'abcB3', 'abcB3l', '==']) 427339d60c8SBram Moolenaar 428339d60c8SBram Moolenaar call setreg('C', ['abcC3b'], 'lb') 429339d60c8SBram Moolenaar call Assert_reg('C', "\<C-V>6", "abcC3\nabcC3b", "['abcC3', 'abcC3b']", "abcC3\nabcC3b", "['abcC3', 'abcC3b']") 430339d60c8SBram Moolenaar call Assert_regput('C', ['==', '=abcC3 =', ' abcC3b']) 431339d60c8SBram Moolenaar 432339d60c8SBram Moolenaar call setreg('D', ['abcD32']) 433339d60c8SBram Moolenaar call Assert_reg('D', 'V', "abcD3\nabcD32\n", "['abcD3', 'abcD32']", "abcD3\nabcD32\n", "['abcD3', 'abcD32']") 434339d60c8SBram Moolenaar call Assert_regput('D', ['==', 'abcD3', 'abcD32', '==']) 435339d60c8SBram Moolenaar 436339d60c8SBram Moolenaar call setreg('A', ['abcA32']) 437339d60c8SBram Moolenaar call Assert_reg('A', 'V', "abcA3\nabcA3c\nabcA32\n", "['abcA3', 'abcA3c', 'abcA32']", "abcA3\nabcA3c\nabcA32\n", "['abcA3', 'abcA3c', 'abcA32']") 438339d60c8SBram Moolenaar call Assert_regput('A', ['==', 'abcA3', 'abcA3c', 'abcA32', '==']) 439339d60c8SBram Moolenaar 440339d60c8SBram Moolenaar call setreg('B', ['abcB3c'], 'c') 441339d60c8SBram Moolenaar call Assert_reg('B', 'v', "abcB3\nabcB3l\nabcB3c", "['abcB3', 'abcB3l', 'abcB3c']", "abcB3\nabcB3l\nabcB3c", "['abcB3', 'abcB3l', 'abcB3c']") 442339d60c8SBram Moolenaar call Assert_regput('B', ['==', '=abcB3', 'abcB3l', 'abcB3c=']) 443339d60c8SBram Moolenaar 444339d60c8SBram Moolenaar call setreg('C', ['abcC3l'], 'l') 445339d60c8SBram Moolenaar call Assert_reg('C', 'V', "abcC3\nabcC3b\nabcC3l\n", "['abcC3', 'abcC3b', 'abcC3l']", "abcC3\nabcC3b\nabcC3l\n", "['abcC3', 'abcC3b', 'abcC3l']") 446339d60c8SBram Moolenaar call Assert_regput('C', ['==', 'abcC3', 'abcC3b', 'abcC3l', '==']) 447339d60c8SBram Moolenaar 448339d60c8SBram Moolenaar call setreg('D', ['abcD3b'], 'b') 449339d60c8SBram Moolenaar call Assert_reg('D', "\<C-V>6", "abcD3\nabcD32\nabcD3b", "['abcD3', 'abcD32', 'abcD3b']", "abcD3\nabcD32\nabcD3b", "['abcD3', 'abcD32', 'abcD3b']") 450339d60c8SBram Moolenaar call Assert_regput('D', ['==', '=abcD3 =', ' abcD32', ' abcD3b']) 451339d60c8SBram Moolenaar 452339d60c8SBram Moolenaar " Appending lists with NL with setreg() 453339d60c8SBram Moolenaar call setreg('A', ["\n", 'abcA3l2'], 'l') 454339d60c8SBram 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']") 455339d60c8SBram Moolenaar call Assert_regput('A', ['==', 'abcA3', 'abcA3c', 'abcA32', "\n", 'abcA3l2', '==']) 456339d60c8SBram Moolenaar 457339d60c8SBram Moolenaar call setreg('B', ["\n", 'abcB3c2'], 'c') 458339d60c8SBram 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']") 459339d60c8SBram Moolenaar call Assert_regput('B', ['==', '=abcB3', 'abcB3l', 'abcB3c', "\n", 'abcB3c2=']) 460339d60c8SBram Moolenaar 461339d60c8SBram Moolenaar call setreg('C', ["\n", 'abcC3b2'], 'b') 462339d60c8SBram 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']") 463339d60c8SBram Moolenaar call Assert_regput('C', ['==', '=abcC3 =', ' abcC3b', ' abcC3l', " \n", ' abcC3b2']) 464339d60c8SBram Moolenaar 465339d60c8SBram Moolenaar call setreg('D', ["\n", 'abcD3b50'],'b50') 466339d60c8SBram 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']") 467339d60c8SBram Moolenaar call Assert_regput('D', ['==', '=abcD3 =', ' abcD32', ' abcD3b', " \n", ' abcD3b50']) 468339d60c8SBram Moolenaar 469339d60c8SBram Moolenaar " Setting lists with NLs with setreg() 470339d60c8SBram Moolenaar call setreg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2"]) 471339d60c8SBram 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']") 472339d60c8SBram Moolenaar call Assert_regput('a', ['==', 'abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2", '==']) 473339d60c8SBram Moolenaar 474339d60c8SBram Moolenaar call setreg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2"], 'c') 475339d60c8SBram 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']") 476339d60c8SBram Moolenaar call Assert_regput('b', ['==', '=abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2="]) 477339d60c8SBram Moolenaar 478339d60c8SBram Moolenaar call setreg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2"], 'l') 479339d60c8SBram 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']") 480339d60c8SBram Moolenaar call Assert_regput('c', ['==', 'abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2", '==']) 481339d60c8SBram Moolenaar 482339d60c8SBram Moolenaar call setreg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\nabcD4b-4-2"], 'b') 483339d60c8SBram 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']") 484339d60c8SBram Moolenaar call Assert_regput('d', ['==', '=abcD4b-0 =', " \n", " abcD4b-2\n", " \nabcD4b-3", " abcD4b-4\nabcD4b-4-2"]) 485339d60c8SBram Moolenaar 486339d60c8SBram Moolenaar call setreg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4b10-4\nabcE4b10-4-2"], 'b10') 487339d60c8SBram 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']") 488339d60c8SBram Moolenaar call Assert_regput('e', ['==', '=abcE4b10-0=', " \n", " abcE4b10-2\n", " \nabcE4b10-3", " abcE4b10-4\nabcE4b10-4-2"]) 489339d60c8SBram Moolenaar 490339d60c8SBram Moolenaar " Search and expressions 491339d60c8SBram Moolenaar call setreg('/', ['abc/']) 492339d60c8SBram Moolenaar call Assert_reg('/', 'v', "abc/", "['abc/']", "abc/", "['abc/']") 493339d60c8SBram Moolenaar call Assert_regput('/', ['==', '=abc/=']) 494339d60c8SBram Moolenaar 495339d60c8SBram Moolenaar call setreg('/', ["abc/\n"]) 496339d60c8SBram Moolenaar call Assert_reg('/', 'v', "abc/\n", "['abc/\n']", "abc/\n", "['abc/\n']") 497339d60c8SBram Moolenaar call Assert_regput('/', ['==', "=abc/\n="]) 498339d60c8SBram Moolenaar 499339d60c8SBram Moolenaar call setreg('=', ['"abc/"']) 500339d60c8SBram Moolenaar call Assert_reg('=', 'v', "abc/", "['abc/']", '"abc/"', "['\"abc/\"']") 501339d60c8SBram Moolenaar 502339d60c8SBram Moolenaar call setreg('=', ["\"abc/\n\""]) 503339d60c8SBram Moolenaar call Assert_reg('=', 'v', "abc/\n", "['abc/\n']", "\"abc/\n\"", "['\"abc/\n\"']") 504339d60c8SBram Moolenaar 505339d60c8SBram Moolenaar " System clipboard 506339d60c8SBram Moolenaar if has('clipboard') 507339d60c8SBram Moolenaar new | only! 508339d60c8SBram Moolenaar call setline(1, ['clipboard contents', 'something else']) 509339d60c8SBram Moolenaar " Save and restore system clipboard. 510339d60c8SBram Moolenaar " If no connection to X-Server is possible, test should succeed. 511339d60c8SBram Moolenaar let _clipreg = ['*', getreg('*'), getregtype('*')] 512339d60c8SBram Moolenaar let _clipopt = &cb 513339d60c8SBram Moolenaar let &cb='unnamed' 514339d60c8SBram Moolenaar 1y 515339d60c8SBram Moolenaar call Assert_reg('*', 'V', "clipboard contents\n", "['clipboard contents']", "clipboard contents\n", "['clipboard contents']") 516339d60c8SBram Moolenaar tabdo :windo :echo "hi" 517339d60c8SBram Moolenaar 2y 518339d60c8SBram Moolenaar call Assert_reg('*', 'V', "something else\n", "['something else']", "something else\n", "['something else']") 519339d60c8SBram Moolenaar let &cb=_clipopt 520339d60c8SBram Moolenaar call call('setreg', _clipreg) 521339d60c8SBram Moolenaar enew! 522339d60c8SBram Moolenaar endif 523339d60c8SBram Moolenaar 52408f4157cSBram Moolenaar " Error cases 52508f4157cSBram Moolenaar call assert_fails('call setreg()', 'E119:') 52608f4157cSBram Moolenaar call assert_fails('call setreg(1)', 'E119:') 52708f4157cSBram Moolenaar call assert_fails('call setreg(1, 2, 3, 4)', 'E118:') 52808f4157cSBram Moolenaar call assert_fails('call setreg([], 2)', 'E730:') 52908f4157cSBram Moolenaar call assert_fails('call setreg(1, 2, [])', 'E730:') 53008f4157cSBram Moolenaar call assert_fails('call setreg("/", ["1", "2"])', 'E883:') 53108f4157cSBram Moolenaar call assert_fails('call setreg("=", ["1", "2"])', 'E883:') 53208f4157cSBram Moolenaar call assert_fails('call setreg(1, ["", "", [], ""])', 'E730:') 53308f4157cSBram Moolenaarendfunc 53490455cfaSBram Moolenaar 5358b633135SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 536