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