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) 138 139 if has('float') 140 let a = 'A' 141 let b = 1.234 142 call assert_fails('echo a .. b', 'E806:') 143 endif 144endfunc 145 146" Test fix for issue #4507 147func Test_skip_after_throw() 148 try 149 throw 'something' 150 let x = wincol() || &ts 151 catch /something/ 152 endtry 153endfunc 154 155scriptversion 2 156func Test_string_concat_scriptversion2() 157 call assert_true(has('vimscript-2')) 158 let a = 'a' 159 let b = 'b' 160 161 call assert_fails('echo a . b', 'E15:') 162 call assert_fails('let a .= b', 'E985:') 163 call assert_fails('let vers = 1.2.3', 'E15:') 164 165 if has('float') 166 let f = .5 167 call assert_equal(0.5, f) 168 endif 169endfunc 170 171scriptversion 1 172func Test_string_concat_scriptversion1() 173 call assert_true(has('vimscript-1')) 174 let a = 'a' 175 let b = 'b' 176 177 echo a . b 178 let a .= b 179 let vers = 1.2.3 180 call assert_equal('123', vers) 181 182 if has('float') 183 call assert_fails('let f = .5', 'E15:') 184 endif 185endfunc 186 187scriptversion 3 188func Test_vvar_scriptversion3() 189 call assert_true(has('vimscript-3')) 190 call assert_fails('echo version', 'E121:') 191 call assert_false(exists('version')) 192 let version = 1 193 call assert_equal(1, version) 194endfunc 195 196scriptversion 2 197func Test_vvar_scriptversion2() 198 call assert_true(exists('version')) 199 echo version 200 call assert_fails('let version = 1', 'E46:') 201 call assert_equal(v:version, version) 202 203 call assert_equal(v:version, v:versionlong / 10000) 204 call assert_true(v:versionlong > 8011525) 205endfunc 206 207func Test_dict_access_scriptversion2() 208 let l:x = {'foo': 1} 209 210 call assert_false(0 && l:x.foo) 211 call assert_true(1 && l:x.foo) 212endfunc 213 214scriptversion 4 215func Test_vvar_scriptversion4() 216 call assert_true(has('vimscript-4')) 217 call assert_equal(17, 017) 218 call assert_equal(15, 0o17) 219 call assert_equal(15, 0O17) 220 call assert_equal(18, 018) 221 call assert_equal(511, 0o777) 222 call assert_equal(64, 0b1'00'00'00) 223 call assert_equal(1048576, 0x10'00'00) 224 call assert_equal(32768, 0o10'00'00) 225 call assert_equal(1000000, 1'000'000) 226 call assert_equal("1234", execute("echo 1'234")->trim()) 227 call assert_equal('1 234', execute("echo 1''234")->trim()) 228 call assert_fails("echo 1'''234", 'E115:') 229endfunc 230 231scriptversion 1 232func Test_vvar_scriptversion1() 233 call assert_equal(15, 017) 234 call assert_equal(15, 0o17) 235 call assert_equal(15, 0O17) 236 call assert_equal(18, 018) 237 call assert_equal(511, 0o777) 238endfunc 239 240func Test_scriptversion_fail() 241 call writefile(['scriptversion 9'], 'Xversionscript') 242 call assert_fails('source Xversionscript', 'E999:') 243 call delete('Xversionscript') 244endfunc 245 246func Test_execute_cmd_with_null() 247 call assert_fails('execute test_null_list()', 'E730:') 248 call assert_fails('execute test_null_dict()', 'E731:') 249 call assert_fails('execute test_null_blob()', 'E976:') 250 execute test_null_string() 251 call assert_fails('execute test_null_partial()', 'E729:') 252 call assert_fails('execute test_unknown()', 'E908:') 253 if has('job') 254 call assert_fails('execute test_null_job()', 'E908:') 255 call assert_fails('execute test_null_channel()', 'E908:') 256 endif 257endfunc 258 259func Test_numbersize() 260 " This will fail on systems without 64 bit int support or when not configured 261 " correctly. 262 call assert_equal(64, v:numbersize) 263endfunc 264 265func Assert_reg(name, type, value, valuestr, expr, exprstr) 266 call assert_equal(a:type, getregtype(a:name)) 267 call assert_equal(a:value, getreg(a:name)) 268 call assert_equal(a:valuestr, string(getreg(a:name, 0, 1))) 269 call assert_equal(a:expr, getreg(a:name, 1)) 270 call assert_equal(a:exprstr, string(getreg(a:name, 1, 1))) 271endfunc 272 273func Test_let_register() 274 let @" = 'abc' 275 call Assert_reg('"', 'v', "abc", "['abc']", "abc", "['abc']") 276 let @" = "abc\n" 277 call Assert_reg('"', 'V', "abc\n", "['abc']", "abc\n", "['abc']") 278 let @" = "abc\<C-m>" 279 call Assert_reg('"', 'V', "abc\r\n", "['abc\r']", "abc\r\n", "['abc\r']") 280 let @= = '"abc"' 281 call Assert_reg('=', 'v', "abc", "['abc']", '"abc"', "['\"abc\"']") 282endfunc 283 284func Assert_regput(name, result) 285 new 286 execute "silent normal! o==\n==\e\"" . a:name . "P" 287 call assert_equal(a:result, getline(2, line('$'))) 288 bwipe! 289endfunc 290 291func Test_setreg_basic() 292 call setreg('a', 'abcA', 'c') 293 call Assert_reg('a', 'v', "abcA", "['abcA']", "abcA", "['abcA']") 294 call Assert_regput('a', ['==', '=abcA=']) 295 296 call setreg('A', 'abcAc', 'c') 297 call Assert_reg('A', 'v', "abcAabcAc", "['abcAabcAc']", "abcAabcAc", "['abcAabcAc']") 298 call Assert_regput('a', ['==', '=abcAabcAc=']) 299 300 call setreg('A', 'abcAl', 'l') 301 call Assert_reg('A', 'V', "abcAabcAcabcAl\n", "['abcAabcAcabcAl']", "abcAabcAcabcAl\n", "['abcAabcAcabcAl']") 302 call Assert_regput('a', ['==', 'abcAabcAcabcAl', '==']) 303 304 call setreg('A', 'abcAc2','c') 305 call Assert_reg('A', 'v', "abcAabcAcabcAl\nabcAc2", "['abcAabcAcabcAl', 'abcAc2']", "abcAabcAcabcAl\nabcAc2", "['abcAabcAcabcAl', 'abcAc2']") 306 call Assert_regput('a', ['==', '=abcAabcAcabcAl', 'abcAc2=']) 307 308 call setreg('b', 'abcB', 'v') 309 call Assert_reg('b', 'v', "abcB", "['abcB']", "abcB", "['abcB']") 310 call Assert_regput('b', ['==', '=abcB=']) 311 312 call setreg('b', 'abcBc', 'ca') 313 call Assert_reg('b', 'v', "abcBabcBc", "['abcBabcBc']", "abcBabcBc", "['abcBabcBc']") 314 call Assert_regput('b', ['==', '=abcBabcBc=']) 315 316 call setreg('b', 'abcBb', 'ba') 317 call Assert_reg('b', "\<C-V>5", "abcBabcBcabcBb", "['abcBabcBcabcBb']", "abcBabcBcabcBb", "['abcBabcBcabcBb']") 318 call Assert_regput('b', ['==', '=abcBabcBcabcBb=']) 319 320 call setreg('b', 'abcBc2','ca') 321 call Assert_reg('b', "v", "abcBabcBcabcBb\nabcBc2", "['abcBabcBcabcBb', 'abcBc2']", "abcBabcBcabcBb\nabcBc2", "['abcBabcBcabcBb', 'abcBc2']") 322 call Assert_regput('b', ['==', '=abcBabcBcabcBb', 'abcBc2=']) 323 324 call setreg('b', 'abcBb2','b50a') 325 call Assert_reg('b', "\<C-V>50", "abcBabcBcabcBb\nabcBc2abcBb2", "['abcBabcBcabcBb', 'abcBc2abcBb2']", "abcBabcBcabcBb\nabcBc2abcBb2", "['abcBabcBcabcBb', 'abcBc2abcBb2']") 326 call Assert_regput('b', ['==', '=abcBabcBcabcBb =', ' abcBc2abcBb2']) 327 328 call setreg('c', 'abcC', 'l') 329 call Assert_reg('c', 'V', "abcC\n", "['abcC']", "abcC\n", "['abcC']") 330 call Assert_regput('c', ['==', 'abcC', '==']) 331 332 call setreg('C', 'abcCl', 'l') 333 call Assert_reg('C', 'V', "abcC\nabcCl\n", "['abcC', 'abcCl']", "abcC\nabcCl\n", "['abcC', 'abcCl']") 334 call Assert_regput('c', ['==', 'abcC', 'abcCl', '==']) 335 336 call setreg('C', 'abcCc', 'c') 337 call Assert_reg('C', 'v', "abcC\nabcCl\nabcCc", "['abcC', 'abcCl', 'abcCc']", "abcC\nabcCl\nabcCc", "['abcC', 'abcCl', 'abcCc']") 338 call Assert_regput('c', ['==', '=abcC', 'abcCl', 'abcCc=']) 339 340 call setreg('d', 'abcD', 'V') 341 call Assert_reg('d', 'V', "abcD\n", "['abcD']", "abcD\n", "['abcD']") 342 call Assert_regput('d', ['==', 'abcD', '==']) 343 344 call setreg('D', 'abcDb', 'b') 345 call Assert_reg('d', "\<C-V>5", "abcD\nabcDb", "['abcD', 'abcDb']", "abcD\nabcDb", "['abcD', 'abcDb']") 346 call Assert_regput('d', ['==', '=abcD =', ' abcDb']) 347 348 call setreg('e', 'abcE', 'b') 349 call Assert_reg('e', "\<C-V>4", "abcE", "['abcE']", "abcE", "['abcE']") 350 call Assert_regput('e', ['==', '=abcE=']) 351 352 call setreg('E', 'abcEb', 'b') 353 call Assert_reg('E', "\<C-V>5", "abcE\nabcEb", "['abcE', 'abcEb']", "abcE\nabcEb", "['abcE', 'abcEb']") 354 call Assert_regput('e', ['==', '=abcE =', ' abcEb']) 355 356 call setreg('E', 'abcEl', 'l') 357 call Assert_reg('E', "V", "abcE\nabcEb\nabcEl\n", "['abcE', 'abcEb', 'abcEl']", "abcE\nabcEb\nabcEl\n", "['abcE', 'abcEb', 'abcEl']") 358 call Assert_regput('e', ['==', 'abcE', 'abcEb', 'abcEl', '==']) 359 360 call setreg('f', 'abcF', "\<C-v>") 361 call Assert_reg('f', "\<C-V>4", "abcF", "['abcF']", "abcF", "['abcF']") 362 call Assert_regput('f', ['==', '=abcF=']) 363 364 call setreg('F', 'abcFc', 'c') 365 call Assert_reg('F', "v", "abcF\nabcFc", "['abcF', 'abcFc']", "abcF\nabcFc", "['abcF', 'abcFc']") 366 call Assert_regput('f', ['==', '=abcF', 'abcFc=']) 367 368 call setreg('g', 'abcG', 'b10') 369 call Assert_reg('g', "\<C-V>10", "abcG", "['abcG']", "abcG", "['abcG']") 370 call Assert_regput('g', ['==', '=abcG =']) 371 372 call setreg('h', 'abcH', "\<C-v>10") 373 call Assert_reg('h', "\<C-V>10", "abcH", "['abcH']", "abcH", "['abcH']") 374 call Assert_regput('h', ['==', '=abcH =']) 375 376 call setreg('I', 'abcI') 377 call Assert_reg('I', "v", "abcI", "['abcI']", "abcI", "['abcI']") 378 call Assert_regput('I', ['==', '=abcI=']) 379 380 " Appending NL with setreg() 381 call setreg('a', 'abcA2', 'c') 382 call setreg('b', 'abcB2', 'v') 383 call setreg('c', 'abcC2', 'l') 384 call setreg('d', 'abcD2', 'V') 385 call setreg('e', 'abcE2', 'b') 386 call setreg('f', 'abcF2', "\<C-v>") 387 call setreg('g', 'abcG2', 'b10') 388 call setreg('h', 'abcH2', "\<C-v>10") 389 call setreg('I', 'abcI2') 390 391 call setreg('A', "\n") 392 call Assert_reg('A', 'V', "abcA2\n", "['abcA2']", "abcA2\n", "['abcA2']") 393 call Assert_regput('A', ['==', 'abcA2', '==']) 394 395 call setreg('B', "\n", 'c') 396 call Assert_reg('B', 'v', "abcB2\n", "['abcB2', '']", "abcB2\n", "['abcB2', '']") 397 call Assert_regput('B', ['==', '=abcB2', '=']) 398 399 call setreg('C', "\n") 400 call Assert_reg('C', 'V', "abcC2\n\n", "['abcC2', '']", "abcC2\n\n", "['abcC2', '']") 401 call Assert_regput('C', ['==', 'abcC2', '', '==']) 402 403 call setreg('D', "\n", 'l') 404 call Assert_reg('D', 'V', "abcD2\n\n", "['abcD2', '']", "abcD2\n\n", "['abcD2', '']") 405 call Assert_regput('D', ['==', 'abcD2', '', '==']) 406 407 call setreg('E', "\n") 408 call Assert_reg('E', 'V', "abcE2\n\n", "['abcE2', '']", "abcE2\n\n", "['abcE2', '']") 409 call Assert_regput('E', ['==', 'abcE2', '', '==']) 410 411 call setreg('F', "\n", 'b') 412 call Assert_reg('F', "\<C-V>0", "abcF2\n", "['abcF2', '']", "abcF2\n", "['abcF2', '']") 413 call Assert_regput('F', ['==', '=abcF2=', ' ']) 414 415 " Setting lists with setreg() 416 call setreg('a', ['abcA3'], 'c') 417 call Assert_reg('a', 'v', "abcA3", "['abcA3']", "abcA3", "['abcA3']") 418 call Assert_regput('a', ['==', '=abcA3=']) 419 420 call setreg('b', ['abcB3'], 'l') 421 call Assert_reg('b', 'V', "abcB3\n", "['abcB3']", "abcB3\n", "['abcB3']") 422 call Assert_regput('b', ['==', 'abcB3', '==']) 423 424 call setreg('c', ['abcC3'], 'b') 425 call Assert_reg('c', "\<C-V>5", "abcC3", "['abcC3']", "abcC3", "['abcC3']") 426 call Assert_regput('c', ['==', '=abcC3=']) 427 428 call setreg('d', ['abcD3']) 429 call Assert_reg('d', 'V', "abcD3\n", "['abcD3']", "abcD3\n", "['abcD3']") 430 call Assert_regput('d', ['==', 'abcD3', '==']) 431 432 call setreg('e', [1, 2, 'abc', 3]) 433 call Assert_reg('e', 'V', "1\n2\nabc\n3\n", "['1', '2', 'abc', '3']", "1\n2\nabc\n3\n", "['1', '2', 'abc', '3']") 434 call Assert_regput('e', ['==', '1', '2', 'abc', '3', '==']) 435 436 call setreg('f', [1, 2, 3]) 437 call Assert_reg('f', 'V', "1\n2\n3\n", "['1', '2', '3']", "1\n2\n3\n", "['1', '2', '3']") 438 call Assert_regput('f', ['==', '1', '2', '3', '==']) 439 440 " Appending lists with setreg() 441 call setreg('A', ['abcA3c'], 'c') 442 call Assert_reg('A', 'v', "abcA3\nabcA3c", "['abcA3', 'abcA3c']", "abcA3\nabcA3c", "['abcA3', 'abcA3c']") 443 call Assert_regput('A', ['==', '=abcA3', 'abcA3c=']) 444 445 call setreg('b', ['abcB3l'], 'la') 446 call Assert_reg('b', 'V', "abcB3\nabcB3l\n", "['abcB3', 'abcB3l']", "abcB3\nabcB3l\n", "['abcB3', 'abcB3l']") 447 call Assert_regput('b', ['==', 'abcB3', 'abcB3l', '==']) 448 449 call setreg('C', ['abcC3b'], 'lb') 450 call Assert_reg('C', "\<C-V>6", "abcC3\nabcC3b", "['abcC3', 'abcC3b']", "abcC3\nabcC3b", "['abcC3', 'abcC3b']") 451 call Assert_regput('C', ['==', '=abcC3 =', ' abcC3b']) 452 453 call setreg('D', ['abcD32']) 454 call Assert_reg('D', 'V', "abcD3\nabcD32\n", "['abcD3', 'abcD32']", "abcD3\nabcD32\n", "['abcD3', 'abcD32']") 455 call Assert_regput('D', ['==', 'abcD3', 'abcD32', '==']) 456 457 call setreg('A', ['abcA32']) 458 call Assert_reg('A', 'V', "abcA3\nabcA3c\nabcA32\n", "['abcA3', 'abcA3c', 'abcA32']", "abcA3\nabcA3c\nabcA32\n", "['abcA3', 'abcA3c', 'abcA32']") 459 call Assert_regput('A', ['==', 'abcA3', 'abcA3c', 'abcA32', '==']) 460 461 call setreg('B', ['abcB3c'], 'c') 462 call Assert_reg('B', 'v', "abcB3\nabcB3l\nabcB3c", "['abcB3', 'abcB3l', 'abcB3c']", "abcB3\nabcB3l\nabcB3c", "['abcB3', 'abcB3l', 'abcB3c']") 463 call Assert_regput('B', ['==', '=abcB3', 'abcB3l', 'abcB3c=']) 464 465 call setreg('C', ['abcC3l'], 'l') 466 call Assert_reg('C', 'V', "abcC3\nabcC3b\nabcC3l\n", "['abcC3', 'abcC3b', 'abcC3l']", "abcC3\nabcC3b\nabcC3l\n", "['abcC3', 'abcC3b', 'abcC3l']") 467 call Assert_regput('C', ['==', 'abcC3', 'abcC3b', 'abcC3l', '==']) 468 469 call setreg('D', ['abcD3b'], 'b') 470 call Assert_reg('D', "\<C-V>6", "abcD3\nabcD32\nabcD3b", "['abcD3', 'abcD32', 'abcD3b']", "abcD3\nabcD32\nabcD3b", "['abcD3', 'abcD32', 'abcD3b']") 471 call Assert_regput('D', ['==', '=abcD3 =', ' abcD32', ' abcD3b']) 472 473 " Appending lists with NL with setreg() 474 call setreg('A', ["\n", 'abcA3l2'], 'l') 475 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']") 476 call Assert_regput('A', ['==', 'abcA3', 'abcA3c', 'abcA32', "\n", 'abcA3l2', '==']) 477 478 call setreg('B', ["\n", 'abcB3c2'], 'c') 479 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']") 480 call Assert_regput('B', ['==', '=abcB3', 'abcB3l', 'abcB3c', "\n", 'abcB3c2=']) 481 482 call setreg('C', ["\n", 'abcC3b2'], 'b') 483 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']") 484 call Assert_regput('C', ['==', '=abcC3 =', ' abcC3b', ' abcC3l', " \n", ' abcC3b2']) 485 486 call setreg('D', ["\n", 'abcD3b50'],'b50') 487 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']") 488 call Assert_regput('D', ['==', '=abcD3 =', ' abcD32', ' abcD3b', " \n", ' abcD3b50']) 489 490 " Setting lists with NLs with setreg() 491 call setreg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2"]) 492 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']") 493 call Assert_regput('a', ['==', 'abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2", '==']) 494 495 call setreg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2"], 'c') 496 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']") 497 call Assert_regput('b', ['==', '=abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2="]) 498 499 call setreg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2"], 'l') 500 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']") 501 call Assert_regput('c', ['==', 'abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2", '==']) 502 503 call setreg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\nabcD4b-4-2"], 'b') 504 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']") 505 call Assert_regput('d', ['==', '=abcD4b-0 =', " \n", " abcD4b-2\n", " \nabcD4b-3", " abcD4b-4\nabcD4b-4-2"]) 506 507 call setreg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4b10-4\nabcE4b10-4-2"], 'b10') 508 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']") 509 call Assert_regput('e', ['==', '=abcE4b10-0=', " \n", " abcE4b10-2\n", " \nabcE4b10-3", " abcE4b10-4\nabcE4b10-4-2"]) 510 511 " Search and expressions 512 call setreg('/', ['abc/']) 513 call Assert_reg('/', 'v', "abc/", "['abc/']", "abc/", "['abc/']") 514 call Assert_regput('/', ['==', '=abc/=']) 515 516 call setreg('/', ["abc/\n"]) 517 call Assert_reg('/', 'v', "abc/\n", "['abc/\n']", "abc/\n", "['abc/\n']") 518 call Assert_regput('/', ['==', "=abc/\n="]) 519 520 call setreg('=', ['"abc/"']) 521 call Assert_reg('=', 'v', "abc/", "['abc/']", '"abc/"', "['\"abc/\"']") 522 523 call setreg('=', ["\"abc/\n\""]) 524 call Assert_reg('=', 'v', "abc/\n", "['abc/\n']", "\"abc/\n\"", "['\"abc/\n\"']") 525 526 " System clipboard 527 if has('clipboard') 528 new | only! 529 call setline(1, ['clipboard contents', 'something else']) 530 " Save and restore system clipboard. 531 " If no connection to X-Server is possible, test should succeed. 532 let _clipreg = ['*', getreg('*'), getregtype('*')] 533 let _clipopt = &cb 534 let &cb='unnamed' 535 1y 536 call Assert_reg('*', 'V', "clipboard contents\n", "['clipboard contents']", "clipboard contents\n", "['clipboard contents']") 537 tabdo :windo :echo "hi" 538 2y 539 call Assert_reg('*', 'V', "something else\n", "['something else']", "something else\n", "['something else']") 540 let &cb=_clipopt 541 call call('setreg', _clipreg) 542 enew! 543 endif 544 545 " Error cases 546 call assert_fails('call setreg()', 'E119:') 547 call assert_fails('call setreg(1)', 'E119:') 548 call assert_fails('call setreg(1, 2, 3, 4)', 'E118:') 549 call assert_fails('call setreg([], 2)', 'E730:') 550 call assert_fails('call setreg(1, 2, [])', 'E730:') 551 call assert_fails('call setreg("/", ["1", "2"])', 'E883:') 552 call assert_fails('call setreg("=", ["1", "2"])', 'E883:') 553 call assert_fails('call setreg(1, ["", "", [], ""])', 'E730:') 554endfunc 555 556func Test_curly_assignment() 557 let s:svar = 'svar' 558 let g:gvar = 'gvar' 559 let lname = 'gvar' 560 let gname = 'gvar' 561 let {'s:'.lname} = {'g:'.gname} 562 call assert_equal('gvar', s:gvar) 563 let s:gvar = '' 564 let { 's:'.lname } = { 'g:'.gname } 565 call assert_equal('gvar', s:gvar) 566 let s:gvar = '' 567 let { 's:' . lname } = { 'g:' . gname } 568 call assert_equal('gvar', s:gvar) 569 let s:gvar = '' 570 let { 's:' .. lname } = { 'g:' .. gname } 571 call assert_equal('gvar', s:gvar) 572 573 unlet s:svar 574 unlet s:gvar 575 unlet g:gvar 576endfunc 577 578" vim: shiftwidth=2 sts=2 expandtab 579