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