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