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