1" Tests for various eval things. 2 3source view_util.vim 4 5function s:foo() abort 6 try 7 return [] == 0 8 catch 9 return 1 10 endtry 11endfunction 12 13func Test_catch_return_with_error() 14 call assert_equal(1, s:foo()) 15endfunc 16 17func Test_nocatch_restore_silent_emsg() 18 silent! try 19 throw 1 20 catch 21 endtry 22 echoerr 'wrong again' 23 call assert_equal('wrong again', ScreenLine(&lines)) 24endfunc 25 26func Test_mkdir_p() 27 call mkdir('Xmkdir/nested', 'p') 28 call assert_true(isdirectory('Xmkdir/nested')) 29 try 30 " Trying to make existing directories doesn't error 31 call mkdir('Xmkdir', 'p') 32 call mkdir('Xmkdir/nested', 'p') 33 catch /E739:/ 34 call assert_report('mkdir(..., "p") failed for an existing directory') 35 endtry 36 " 'p' doesn't suppress real errors 37 call writefile([], 'Xfile') 38 call assert_fails('call mkdir("Xfile", "p")', 'E739') 39 call delete('Xfile') 40 call delete('Xmkdir', 'rf') 41 call assert_equal(0, mkdir(test_null_string())) 42 call assert_fails('call mkdir([])', 'E730') 43 call assert_fails('call mkdir("abc", [], [])', 'E745') 44endfunc 45 46func Test_line_continuation() 47 let array = [5, 48 "\ ignore this 49 \ 6, 50 "\ more to ignore 51 "\ more moreto ignore 52 \ ] 53 "\ and some more 54 call assert_equal([5, 6], array) 55endfunc 56 57func Test_E963() 58 " These commands used to cause an internal error prior to vim 8.1.0563 59 let v_e = v:errors 60 let v_o = v:oldfiles 61 call assert_fails("let v:errors=''", 'E963:') 62 call assert_equal(v_e, v:errors) 63 call assert_fails("let v:oldfiles=''", 'E963:') 64 call assert_equal(v_o, v:oldfiles) 65endfunc 66 67func Test_for_invalid() 68 call assert_fails("for x in 99", 'E714:') 69 call assert_fails("for x in 'asdf'", 'E714:') 70 call assert_fails("for x in {'a': 9}", 'E714:') 71endfunc 72 73func Test_readfile_binary() 74 new 75 call setline(1, ['one', 'two', 'three']) 76 setlocal ff=dos 77 silent write XReadfile_bin 78 let lines = 'XReadfile_bin'->readfile() 79 call assert_equal(['one', 'two', 'three'], lines) 80 let lines = readfile('XReadfile_bin', '', 2) 81 call assert_equal(['one', 'two'], lines) 82 let lines = readfile('XReadfile_bin', 'b') 83 call assert_equal(["one\r", "two\r", "three\r", ""], lines) 84 let lines = readfile('XReadfile_bin', 'b', 2) 85 call assert_equal(["one\r", "two\r"], lines) 86 87 bwipe! 88 call delete('XReadfile_bin') 89endfunc 90 91func Test_readfile_bom() 92 call writefile(["\ufeffFOO", "FOO\ufeffBAR"], 'XReadfile_bom') 93 call assert_equal(['FOO', 'FOOBAR'], readfile('XReadfile_bom')) 94 call delete('XReadfile_bom') 95endfunc 96 97func Test_readfile_max() 98 call writefile(range(1, 4), 'XReadfile_max') 99 call assert_equal(['1', '2'], readfile('XReadfile_max', '', 2)) 100 call assert_equal(['3', '4'], readfile('XReadfile_max', '', -2)) 101 call delete('XReadfile_max') 102endfunc 103 104func Test_let_errmsg() 105 call assert_fails('let v:errmsg = []', 'E730:') 106 let v:errmsg = '' 107 call assert_fails('let v:errmsg = []', 'E730:') 108 let v:errmsg = '' 109endfunc 110 111func Test_string_concatenation() 112 call assert_equal('ab', 'a'.'b') 113 call assert_equal('ab', 'a' .'b') 114 call assert_equal('ab', 'a'. 'b') 115 call assert_equal('ab', 'a' . 'b') 116 117 call assert_equal('ab', 'a'..'b') 118 call assert_equal('ab', 'a' ..'b') 119 call assert_equal('ab', 'a'.. 'b') 120 call assert_equal('ab', 'a' .. 'b') 121 122 let a = 'a' 123 let b = 'b' 124 let a .= b 125 call assert_equal('ab', a) 126 127 let a = 'a' 128 let a.=b 129 call assert_equal('ab', a) 130 131 let a = 'a' 132 let a ..= b 133 call assert_equal('ab', a) 134 135 let a = 'a' 136 let a..=b 137 call assert_equal('ab', a) 138endfunc 139 140" Test fix for issue #4507 141func Test_skip_after_throw() 142 try 143 throw 'something' 144 let x = wincol() || &ts 145 catch /something/ 146 endtry 147endfunc 148 149scriptversion 2 150func Test_string_concat_scriptversion2() 151 call assert_true(has('vimscript-2')) 152 let a = 'a' 153 let b = 'b' 154 155 call assert_fails('echo a . b', 'E15:') 156 call assert_fails('let a .= b', 'E985:') 157 call assert_fails('let vers = 1.2.3', 'E15:') 158 159 if has('float') 160 let f = .5 161 call assert_equal(0.5, f) 162 endif 163endfunc 164 165scriptversion 1 166func Test_string_concat_scriptversion1() 167 call assert_true(has('vimscript-1')) 168 let a = 'a' 169 let b = 'b' 170 171 echo a . b 172 let a .= b 173 let vers = 1.2.3 174 call assert_equal('123', vers) 175 176 if has('float') 177 call assert_fails('let f = .5', 'E15:') 178 endif 179endfunc 180 181scriptversion 3 182func Test_vvar_scriptversion3() 183 call assert_true(has('vimscript-3')) 184 call assert_fails('echo version', 'E121:') 185 call assert_false(exists('version')) 186 let version = 1 187 call assert_equal(1, version) 188endfunc 189 190scriptversion 2 191func Test_vvar_scriptversion2() 192 call assert_true(exists('version')) 193 echo version 194 call assert_fails('let version = 1', 'E46:') 195 call assert_equal(v:version, version) 196 197 call assert_equal(v:version, v:versionlong / 10000) 198 call assert_true(v:versionlong > 8011525) 199endfunc 200 201func Test_dict_access_scriptversion2() 202 let l:x = {'foo': 1} 203 204 call assert_false(0 && l:x.foo) 205 call assert_true(1 && l:x.foo) 206endfunc 207 208scriptversion 4 209func Test_vvar_scriptversion4() 210 call assert_true(has('vimscript-4')) 211 call assert_equal(17, 017) 212 call assert_equal(15, 0o17) 213 call assert_equal(15, 0O17) 214 call assert_equal(18, 018) 215 call assert_equal(64, 0b1'00'00'00) 216 call assert_equal(1048576, 0x10'00'00) 217 call assert_equal(32768, 0o10'00'00) 218 call assert_equal(1000000, 1'000'000) 219 call assert_equal("1234", execute("echo 1'234")->trim()) 220 call assert_equal('1 234', execute("echo 1''234")->trim()) 221 call assert_fails("echo 1'''234", 'E115:') 222endfunc 223 224scriptversion 1 225func Test_vvar_scriptversion1() 226 call assert_equal(15, 017) 227 call assert_equal(15, 0o17) 228 call assert_equal(15, 0O17) 229 call assert_equal(18, 018) 230endfunc 231 232func Test_scriptversion_fail() 233 call writefile(['scriptversion 9'], 'Xversionscript') 234 call assert_fails('source Xversionscript', 'E999:') 235 call delete('Xversionscript') 236endfunc 237 238func Test_execute_cmd_with_null() 239 call assert_fails('execute test_null_list()', 'E730:') 240 call assert_fails('execute test_null_dict()', 'E731:') 241 call assert_fails('execute test_null_blob()', 'E976:') 242 execute test_null_string() 243 call assert_fails('execute test_null_partial()', 'E729:') 244 call assert_fails('execute test_unknown()', 'E908:') 245 if has('job') 246 call assert_fails('execute test_null_job()', 'E908:') 247 call assert_fails('execute test_null_channel()', 'E908:') 248 endif 249endfunc 250 251func Test_numbersize() 252 " This will fail on systems without 64 bit int support or when not configured 253 " correctly. 254 call assert_equal(64, v:numbersize) 255endfunc 256 257func Assert_reg(name, type, value, valuestr, expr, exprstr) 258 call assert_equal(a:type, getregtype(a:name)) 259 call assert_equal(a:value, getreg(a:name)) 260 call assert_equal(a:valuestr, string(getreg(a:name, 0, 1))) 261 call assert_equal(a:expr, getreg(a:name, 1)) 262 call assert_equal(a:exprstr, string(getreg(a:name, 1, 1))) 263endfunc 264 265func Test_let_register() 266 let @" = 'abc' 267 call Assert_reg('"', 'v', "abc", "['abc']", "abc", "['abc']") 268 let @" = "abc\n" 269 call Assert_reg('"', 'V', "abc\n", "['abc']", "abc\n", "['abc']") 270 let @" = "abc\<C-m>" 271 call Assert_reg('"', 'V', "abc\r\n", "['abc\r']", "abc\r\n", "['abc\r']") 272 let @= = '"abc"' 273 call Assert_reg('=', 'v', "abc", "['abc']", '"abc"', "['\"abc\"']") 274endfunc 275 276func Assert_regput(name, result) 277 new 278 execute "silent normal! o==\n==\e\"" . a:name . "P" 279 call assert_equal(a:result, getline(2, line('$'))) 280 bwipe! 281endfunc 282 283func Test_setreg_basic() 284 call setreg('a', 'abcA', 'c') 285 call Assert_reg('a', 'v', "abcA", "['abcA']", "abcA", "['abcA']") 286 call Assert_regput('a', ['==', '=abcA=']) 287 288 call setreg('A', 'abcAc', 'c') 289 call Assert_reg('A', 'v', "abcAabcAc", "['abcAabcAc']", "abcAabcAc", "['abcAabcAc']") 290 call Assert_regput('a', ['==', '=abcAabcAc=']) 291 292 call setreg('A', 'abcAl', 'l') 293 call Assert_reg('A', 'V', "abcAabcAcabcAl\n", "['abcAabcAcabcAl']", "abcAabcAcabcAl\n", "['abcAabcAcabcAl']") 294 call Assert_regput('a', ['==', 'abcAabcAcabcAl', '==']) 295 296 call setreg('A', 'abcAc2','c') 297 call Assert_reg('A', 'v', "abcAabcAcabcAl\nabcAc2", "['abcAabcAcabcAl', 'abcAc2']", "abcAabcAcabcAl\nabcAc2", "['abcAabcAcabcAl', 'abcAc2']") 298 call Assert_regput('a', ['==', '=abcAabcAcabcAl', 'abcAc2=']) 299 300 call setreg('b', 'abcB', 'v') 301 call Assert_reg('b', 'v', "abcB", "['abcB']", "abcB", "['abcB']") 302 call Assert_regput('b', ['==', '=abcB=']) 303 304 call setreg('b', 'abcBc', 'ca') 305 call Assert_reg('b', 'v', "abcBabcBc", "['abcBabcBc']", "abcBabcBc", "['abcBabcBc']") 306 call Assert_regput('b', ['==', '=abcBabcBc=']) 307 308 call setreg('b', 'abcBb', 'ba') 309 call Assert_reg('b', "\<C-V>5", "abcBabcBcabcBb", "['abcBabcBcabcBb']", "abcBabcBcabcBb", "['abcBabcBcabcBb']") 310 call Assert_regput('b', ['==', '=abcBabcBcabcBb=']) 311 312 call setreg('b', 'abcBc2','ca') 313 call Assert_reg('b', "v", "abcBabcBcabcBb\nabcBc2", "['abcBabcBcabcBb', 'abcBc2']", "abcBabcBcabcBb\nabcBc2", "['abcBabcBcabcBb', 'abcBc2']") 314 call Assert_regput('b', ['==', '=abcBabcBcabcBb', 'abcBc2=']) 315 316 call setreg('b', 'abcBb2','b50a') 317 call Assert_reg('b', "\<C-V>50", "abcBabcBcabcBb\nabcBc2abcBb2", "['abcBabcBcabcBb', 'abcBc2abcBb2']", "abcBabcBcabcBb\nabcBc2abcBb2", "['abcBabcBcabcBb', 'abcBc2abcBb2']") 318 call Assert_regput('b', ['==', '=abcBabcBcabcBb =', ' abcBc2abcBb2']) 319 320 call setreg('c', 'abcC', 'l') 321 call Assert_reg('c', 'V', "abcC\n", "['abcC']", "abcC\n", "['abcC']") 322 call Assert_regput('c', ['==', 'abcC', '==']) 323 324 call setreg('C', 'abcCl', 'l') 325 call Assert_reg('C', 'V', "abcC\nabcCl\n", "['abcC', 'abcCl']", "abcC\nabcCl\n", "['abcC', 'abcCl']") 326 call Assert_regput('c', ['==', 'abcC', 'abcCl', '==']) 327 328 call setreg('C', 'abcCc', 'c') 329 call Assert_reg('C', 'v', "abcC\nabcCl\nabcCc", "['abcC', 'abcCl', 'abcCc']", "abcC\nabcCl\nabcCc", "['abcC', 'abcCl', 'abcCc']") 330 call Assert_regput('c', ['==', '=abcC', 'abcCl', 'abcCc=']) 331 332 call setreg('d', 'abcD', 'V') 333 call Assert_reg('d', 'V', "abcD\n", "['abcD']", "abcD\n", "['abcD']") 334 call Assert_regput('d', ['==', 'abcD', '==']) 335 336 call setreg('D', 'abcDb', 'b') 337 call Assert_reg('d', "\<C-V>5", "abcD\nabcDb", "['abcD', 'abcDb']", "abcD\nabcDb", "['abcD', 'abcDb']") 338 call Assert_regput('d', ['==', '=abcD =', ' abcDb']) 339 340 call setreg('e', 'abcE', 'b') 341 call Assert_reg('e', "\<C-V>4", "abcE", "['abcE']", "abcE", "['abcE']") 342 call Assert_regput('e', ['==', '=abcE=']) 343 344 call setreg('E', 'abcEb', 'b') 345 call Assert_reg('E', "\<C-V>5", "abcE\nabcEb", "['abcE', 'abcEb']", "abcE\nabcEb", "['abcE', 'abcEb']") 346 call Assert_regput('e', ['==', '=abcE =', ' abcEb']) 347 348 call setreg('E', 'abcEl', 'l') 349 call Assert_reg('E', "V", "abcE\nabcEb\nabcEl\n", "['abcE', 'abcEb', 'abcEl']", "abcE\nabcEb\nabcEl\n", "['abcE', 'abcEb', 'abcEl']") 350 call Assert_regput('e', ['==', 'abcE', 'abcEb', 'abcEl', '==']) 351 352 call setreg('f', 'abcF', "\<C-v>") 353 call Assert_reg('f', "\<C-V>4", "abcF", "['abcF']", "abcF", "['abcF']") 354 call Assert_regput('f', ['==', '=abcF=']) 355 356 call setreg('F', 'abcFc', 'c') 357 call Assert_reg('F', "v", "abcF\nabcFc", "['abcF', 'abcFc']", "abcF\nabcFc", "['abcF', 'abcFc']") 358 call Assert_regput('f', ['==', '=abcF', 'abcFc=']) 359 360 call setreg('g', 'abcG', 'b10') 361 call Assert_reg('g', "\<C-V>10", "abcG", "['abcG']", "abcG", "['abcG']") 362 call Assert_regput('g', ['==', '=abcG =']) 363 364 call setreg('h', 'abcH', "\<C-v>10") 365 call Assert_reg('h', "\<C-V>10", "abcH", "['abcH']", "abcH", "['abcH']") 366 call Assert_regput('h', ['==', '=abcH =']) 367 368 call setreg('I', 'abcI') 369 call Assert_reg('I', "v", "abcI", "['abcI']", "abcI", "['abcI']") 370 call Assert_regput('I', ['==', '=abcI=']) 371 372 " Appending NL with setreg() 373 call setreg('a', 'abcA2', 'c') 374 call setreg('b', 'abcB2', 'v') 375 call setreg('c', 'abcC2', 'l') 376 call setreg('d', 'abcD2', 'V') 377 call setreg('e', 'abcE2', 'b') 378 call setreg('f', 'abcF2', "\<C-v>") 379 call setreg('g', 'abcG2', 'b10') 380 call setreg('h', 'abcH2', "\<C-v>10") 381 call setreg('I', 'abcI2') 382 383 call setreg('A', "\n") 384 call Assert_reg('A', 'V', "abcA2\n", "['abcA2']", "abcA2\n", "['abcA2']") 385 call Assert_regput('A', ['==', 'abcA2', '==']) 386 387 call setreg('B', "\n", 'c') 388 call Assert_reg('B', 'v', "abcB2\n", "['abcB2', '']", "abcB2\n", "['abcB2', '']") 389 call Assert_regput('B', ['==', '=abcB2', '=']) 390 391 call setreg('C', "\n") 392 call Assert_reg('C', 'V', "abcC2\n\n", "['abcC2', '']", "abcC2\n\n", "['abcC2', '']") 393 call Assert_regput('C', ['==', 'abcC2', '', '==']) 394 395 call setreg('D', "\n", 'l') 396 call Assert_reg('D', 'V', "abcD2\n\n", "['abcD2', '']", "abcD2\n\n", "['abcD2', '']") 397 call Assert_regput('D', ['==', 'abcD2', '', '==']) 398 399 call setreg('E', "\n") 400 call Assert_reg('E', 'V', "abcE2\n\n", "['abcE2', '']", "abcE2\n\n", "['abcE2', '']") 401 call Assert_regput('E', ['==', 'abcE2', '', '==']) 402 403 call setreg('F', "\n", 'b') 404 call Assert_reg('F', "\<C-V>0", "abcF2\n", "['abcF2', '']", "abcF2\n", "['abcF2', '']") 405 call Assert_regput('F', ['==', '=abcF2=', ' ']) 406 407 " Setting lists with setreg() 408 call setreg('a', ['abcA3'], 'c') 409 call Assert_reg('a', 'v', "abcA3", "['abcA3']", "abcA3", "['abcA3']") 410 call Assert_regput('a', ['==', '=abcA3=']) 411 412 call setreg('b', ['abcB3'], 'l') 413 call Assert_reg('b', 'V', "abcB3\n", "['abcB3']", "abcB3\n", "['abcB3']") 414 call Assert_regput('b', ['==', 'abcB3', '==']) 415 416 call setreg('c', ['abcC3'], 'b') 417 call Assert_reg('c', "\<C-V>5", "abcC3", "['abcC3']", "abcC3", "['abcC3']") 418 call Assert_regput('c', ['==', '=abcC3=']) 419 420 call setreg('d', ['abcD3']) 421 call Assert_reg('d', 'V', "abcD3\n", "['abcD3']", "abcD3\n", "['abcD3']") 422 call Assert_regput('d', ['==', 'abcD3', '==']) 423 424 call setreg('e', [1, 2, 'abc', 3]) 425 call Assert_reg('e', 'V', "1\n2\nabc\n3\n", "['1', '2', 'abc', '3']", "1\n2\nabc\n3\n", "['1', '2', 'abc', '3']") 426 call Assert_regput('e', ['==', '1', '2', 'abc', '3', '==']) 427 428 call setreg('f', [1, 2, 3]) 429 call Assert_reg('f', 'V', "1\n2\n3\n", "['1', '2', '3']", "1\n2\n3\n", "['1', '2', '3']") 430 call Assert_regput('f', ['==', '1', '2', '3', '==']) 431 432 " Appending lists with setreg() 433 call setreg('A', ['abcA3c'], 'c') 434 call Assert_reg('A', 'v', "abcA3\nabcA3c", "['abcA3', 'abcA3c']", "abcA3\nabcA3c", "['abcA3', 'abcA3c']") 435 call Assert_regput('A', ['==', '=abcA3', 'abcA3c=']) 436 437 call setreg('b', ['abcB3l'], 'la') 438 call Assert_reg('b', 'V', "abcB3\nabcB3l\n", "['abcB3', 'abcB3l']", "abcB3\nabcB3l\n", "['abcB3', 'abcB3l']") 439 call Assert_regput('b', ['==', 'abcB3', 'abcB3l', '==']) 440 441 call setreg('C', ['abcC3b'], 'lb') 442 call Assert_reg('C', "\<C-V>6", "abcC3\nabcC3b", "['abcC3', 'abcC3b']", "abcC3\nabcC3b", "['abcC3', 'abcC3b']") 443 call Assert_regput('C', ['==', '=abcC3 =', ' abcC3b']) 444 445 call setreg('D', ['abcD32']) 446 call Assert_reg('D', 'V', "abcD3\nabcD32\n", "['abcD3', 'abcD32']", "abcD3\nabcD32\n", "['abcD3', 'abcD32']") 447 call Assert_regput('D', ['==', 'abcD3', 'abcD32', '==']) 448 449 call setreg('A', ['abcA32']) 450 call Assert_reg('A', 'V', "abcA3\nabcA3c\nabcA32\n", "['abcA3', 'abcA3c', 'abcA32']", "abcA3\nabcA3c\nabcA32\n", "['abcA3', 'abcA3c', 'abcA32']") 451 call Assert_regput('A', ['==', 'abcA3', 'abcA3c', 'abcA32', '==']) 452 453 call setreg('B', ['abcB3c'], 'c') 454 call Assert_reg('B', 'v', "abcB3\nabcB3l\nabcB3c", "['abcB3', 'abcB3l', 'abcB3c']", "abcB3\nabcB3l\nabcB3c", "['abcB3', 'abcB3l', 'abcB3c']") 455 call Assert_regput('B', ['==', '=abcB3', 'abcB3l', 'abcB3c=']) 456 457 call setreg('C', ['abcC3l'], 'l') 458 call Assert_reg('C', 'V', "abcC3\nabcC3b\nabcC3l\n", "['abcC3', 'abcC3b', 'abcC3l']", "abcC3\nabcC3b\nabcC3l\n", "['abcC3', 'abcC3b', 'abcC3l']") 459 call Assert_regput('C', ['==', 'abcC3', 'abcC3b', 'abcC3l', '==']) 460 461 call setreg('D', ['abcD3b'], 'b') 462 call Assert_reg('D', "\<C-V>6", "abcD3\nabcD32\nabcD3b", "['abcD3', 'abcD32', 'abcD3b']", "abcD3\nabcD32\nabcD3b", "['abcD3', 'abcD32', 'abcD3b']") 463 call Assert_regput('D', ['==', '=abcD3 =', ' abcD32', ' abcD3b']) 464 465 " Appending lists with NL with setreg() 466 call setreg('A', ["\n", 'abcA3l2'], 'l') 467 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']") 468 call Assert_regput('A', ['==', 'abcA3', 'abcA3c', 'abcA32', "\n", 'abcA3l2', '==']) 469 470 call setreg('B', ["\n", 'abcB3c2'], 'c') 471 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']") 472 call Assert_regput('B', ['==', '=abcB3', 'abcB3l', 'abcB3c', "\n", 'abcB3c2=']) 473 474 call setreg('C', ["\n", 'abcC3b2'], 'b') 475 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']") 476 call Assert_regput('C', ['==', '=abcC3 =', ' abcC3b', ' abcC3l', " \n", ' abcC3b2']) 477 478 call setreg('D', ["\n", 'abcD3b50'],'b50') 479 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']") 480 call Assert_regput('D', ['==', '=abcD3 =', ' abcD32', ' abcD3b', " \n", ' abcD3b50']) 481 482 " Setting lists with NLs with setreg() 483 call setreg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2"]) 484 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']") 485 call Assert_regput('a', ['==', 'abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2", '==']) 486 487 call setreg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2"], 'c') 488 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']") 489 call Assert_regput('b', ['==', '=abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2="]) 490 491 call setreg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2"], 'l') 492 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']") 493 call Assert_regput('c', ['==', 'abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2", '==']) 494 495 call setreg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\nabcD4b-4-2"], 'b') 496 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']") 497 call Assert_regput('d', ['==', '=abcD4b-0 =', " \n", " abcD4b-2\n", " \nabcD4b-3", " abcD4b-4\nabcD4b-4-2"]) 498 499 call setreg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4b10-4\nabcE4b10-4-2"], 'b10') 500 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']") 501 call Assert_regput('e', ['==', '=abcE4b10-0=', " \n", " abcE4b10-2\n", " \nabcE4b10-3", " abcE4b10-4\nabcE4b10-4-2"]) 502 503 " Search and expressions 504 call setreg('/', ['abc/']) 505 call Assert_reg('/', 'v', "abc/", "['abc/']", "abc/", "['abc/']") 506 call Assert_regput('/', ['==', '=abc/=']) 507 508 call setreg('/', ["abc/\n"]) 509 call Assert_reg('/', 'v', "abc/\n", "['abc/\n']", "abc/\n", "['abc/\n']") 510 call Assert_regput('/', ['==', "=abc/\n="]) 511 512 call setreg('=', ['"abc/"']) 513 call Assert_reg('=', 'v', "abc/", "['abc/']", '"abc/"', "['\"abc/\"']") 514 515 call setreg('=', ["\"abc/\n\""]) 516 call Assert_reg('=', 'v', "abc/\n", "['abc/\n']", "\"abc/\n\"", "['\"abc/\n\"']") 517 518 " System clipboard 519 if has('clipboard') 520 new | only! 521 call setline(1, ['clipboard contents', 'something else']) 522 " Save and restore system clipboard. 523 " If no connection to X-Server is possible, test should succeed. 524 let _clipreg = ['*', getreg('*'), getregtype('*')] 525 let _clipopt = &cb 526 let &cb='unnamed' 527 1y 528 call Assert_reg('*', 'V', "clipboard contents\n", "['clipboard contents']", "clipboard contents\n", "['clipboard contents']") 529 tabdo :windo :echo "hi" 530 2y 531 call Assert_reg('*', 'V', "something else\n", "['something else']", "something else\n", "['something else']") 532 let &cb=_clipopt 533 call call('setreg', _clipreg) 534 enew! 535 endif 536 537 " Error cases 538 call assert_fails('call setreg()', 'E119:') 539 call assert_fails('call setreg(1)', 'E119:') 540 call assert_fails('call setreg(1, 2, 3, 4)', 'E118:') 541 call assert_fails('call setreg([], 2)', 'E730:') 542 call assert_fails('call setreg(1, 2, [])', 'E730:') 543 call assert_fails('call setreg("/", ["1", "2"])', 'E883:') 544 call assert_fails('call setreg("=", ["1", "2"])', 'E883:') 545 call assert_fails('call setreg(1, ["", "", [], ""])', 'E730:') 546endfunc 547 548func Test_curly_assignment() 549 let s:svar = 'svar' 550 let g:gvar = 'gvar' 551 let lname = 'gvar' 552 let gname = 'gvar' 553 let {'s:'.lname} = {'g:'.gname} 554 call assert_equal('gvar', s:gvar) 555 let s:gvar = '' 556 let { 's:'.lname } = { 'g:'.gname } 557 call assert_equal('gvar', s:gvar) 558 let s:gvar = '' 559 let { 's:' . lname } = { 'g:' . gname } 560 call assert_equal('gvar', s:gvar) 561 let s:gvar = '' 562 let { 's:' .. lname } = { 'g:' .. gname } 563 call assert_equal('gvar', s:gvar) 564 565 unlet s:svar 566 unlet s:gvar 567 unlet g:gvar 568endfunc 569 570" vim: shiftwidth=2 sts=2 expandtab 571